Help us understand the problem. What is going on with this article?

Google-Cloud-Messaging--Titanium- モジュールを作る

More than 5 years have passed since last update.

概要

Google Cloud Messaging (GCM) とは,Android アプリに向けてプッシュ通知を行うためのサービスです.

http://developer.android.com/intl/ja/guide/google/gcm/index.html

以前は C2DM というサービスがあったようなのですが,それが 2012 年 6 月頃に廃止され,GCM という新バージョンに移行したそうです.

この辺は "c2dm gcm" とかでググれば色々情報が出てきます.

で,その新機能を,Titanium で作成する Android アプリからも自作モジュールを使って利用出来ました,ということでその作業ログです.

「よく分からんがこうやったら出来た」的解説の嵐ですがご容赦下さい… orz

Mac OS X 10.7.5 と Ubuntu 12.04 amd64 の両方でやってみましたがどちらでもいけました.

解説は Ubuntu の方で行きます.

作ったモジュールを利用する方法はまた後に.

準備

Android SDK Manager のインストール,Titanium Studio のインストールなどは済んでおり,gcc や make なんかは使える状態になっていることを前提とします.Ubuntu なら sudo apt-get install build-essential しとけばいいよ.

Titanium SDK は 2.1.1.GA を使います.

Android SDK Manager は /home/USERNAME/android-sdk-linux/ にあるとします.

Android SDK Manager で,Google Cloud Messaging for Android Library のパッケージをインストールしておきます.

Android SDK Manager スクリーンショット

あと,Android NDK が必要です.http://developer.android.com/intl/ja/tools/sdk/ndk/index.html ここからダウンロードして展開して,/home/USERNAME/android-ndk-r8c/ に置いておきます.私が落としたのは r8c というバージョンでした.

モジュール作成

下準備

まずはモジュール作成の一連の作業をするためのディレクトリを適当に作ってそこに移動します.

cd
mkdir gcm
cd gcm
pwd #=> /home/USERNAME/gcm

https://github.com/Guti/Google-Cloud-Messaging--Titanium- から,ソースコードと timodule.xml などを参考にするためにリポジトリを取ってきます.

git clone git://github.com/Guti/Google-Cloud-Messaging--Titanium-.git

こいつの大元となるリポジトリ https://github.com/liccowee/Google-Cloud-Messaging--Titanium- があるのですが,そっちは止まってたので新しい・今現在生きている感じのする方 (Guti さん作の方) を取って来ました.v0.6 が現状最新です.

プロジェクト編集

Titanium のモジュール作成のためのプロジェクトを作成します.

~/.titanium/mobilesdk/linux/2.1.1.GA/titanium.py create \
 --platform=android --type=module --id=com.activate.gcm \
 --android=/home/USERNAME/android-sdk-linux --name=gcmmodule

これで gcmmodule というプロジェクトが出来ました.このプロジェクト名,ハイフンを使うとビルドがコケました (gcm-module に最初してた).Java のクラス名の制約だと思います.あと大文字もよくないんだった気がします (確かめてません).

この作業はコンソールではなく Titanium Studio でやってもいいかもしれません.

また,Titanium SDK のバージョンが 2.1.1.GA 以外の人は,ここでのオプションを変えれば大丈夫なんじゃないかなぁと思います.確かめたいです.

で,プロジェクトに移動してちょこちょこ書き換えをします.

cd gcmmodule

build.properties に Android NDK の情報を追記.

vim build.properties
  titanium.platform=/home/USERNAME/.titanium/mobilesdk/linux/2.1.1.GA/android
  android.platform=/home/USERNAME/android-sdk-linux/platforms/android-8
  google.apis=/home/USERNAME/android-sdk-linux/add-ons/addon-google_apis-google-8
+ android.ndk=/home/USERNAME/android-ndk-r8c

manifest を編集して,バージョンを 0.6 にしておく.

vim manifest
- version: 0.1
+ version: 0.6

timodule.xml を編集する…べきなんだろうけど権限に関する設定とか完全に分かるようになるのはちとしんどいので,申し訳ないがここはコピペで orz

cp ~/gcm/Google-Cloud-Messaging--Titanium-/timodule.xml ./

次にソースコードを,こちらも拝借してきます.

Android SDK Manager でインストールした Google Cloud Messaging for Android Library パッケージに含まれる src と,clone してきたリポジトリに含まれる src を使います.

rm -rf src # プロジェクト作成時にデフォルトで作成された src があるので消しておく

cp -r ~/android-sdk-linux/extras/google/gcm/gcm-client/src ./
cp -r ~/gcm/Google-Cloud-Messaging--Titanium-/src ./
# ※コピーする順番が変わってもいいのかどうか調べてない
#  この順番でやればとりあえず出来た

これでビルドのための準備完了です.

ビルド

ant コマンドでビルドするだけです.

ant が無い場合は,http://ant.apache.org/bindownload.cgi から拾ってきてとりあえずどっかに置いておけばいいです.パスの設定とかはキニシナイ.

あと,Ubuntu だとこのまま ant を走らせても gperf コマンドが無いよ,って言ってくると思うので sudo apt-get install gperf しておきます.

そしたら,

ant
# ant -buildfile build.xml # きちんとこう書いてもいい
# ~/apache-ant-1.8.4/bin/ant # パスの設定が出来てない場合も気にせずフルで打ち込もう

これで足りないものが無ければ

(省略)
BUILD SUCCESSFULL
Total time: * seconds

と出て,dist ディレクトリ内に com.activate.gcm-android-0.6.zip が出来ているはずです.それで成功です.

エラーが出てしまう場合は… 頑張って下さい orz 良かったらエラーが出た状況を教えて下さい.

今後のこと

後はこれを展開すると modules ディレクトリが出てきて,それをアプリのプロジェクトにコピーして… という感じで使っていきます.

しかし,それは先述した通り後ほど.このエントリが長くなりすぎた.

TODO

  • Titanium SDK のバージョンを 2.1.1.GA 以外でもちゃんと試しておく.特に 3.x Beta で.
  • timodule.xml の設定を自分で書けるようにする.
  • src の内容物を自分で作れるようにする.
  • 情報がすぐに古くなりそうなので今回 clone したリポジトリをしばらく追いかける.

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした