概要
Google Cloud Messaging (GCM) とは,Android アプリに向けてプッシュ通知を行うためのサービスです.
以前は 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 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 したリポジトリをしばらく追いかける.