Google IO 2011 の Session ビデオはこちら
最初にスピーカーが、なぜこのプロジェクトを始めたのかを語っているのですが、
「約1年まえ、Google に入ったくらいの頃、すごく Android が好きだったんだよね。(省略)ただ、1つだけがっかりしたことがあって、Android のアプリのゲームであるレベルまでいっても、ほかの端末でそのレベルの続きから始められないんだよね。だから、この良くないユーザー体験を良くするために、何かできることがないかって何人かで話てたんだよね。」
なるほど、家では大きな画面のタブレットで、通勤・通学中はスマホで続きを、というスタイルは自然ですよね。もちろんゲームだけじゃなくて、普通のアプリでも十分データを共有/シンクすることの利点があります。セッションでは、例として ToDo 管理アプリ(CloudTask という名前)を作っていくデモがあります。
# ログイン名に LarryPage を使ってるのがシャレてるねw
でも、「Android 開発者にとって、Google App Engine と組み合わせるのって簡単じゃないよね?」
ということで、Google IO の当日から
「Google Plugin for Eclipse (GPE) 2.4 Beta がダウンロードできるようになりました。」
GPE 2.4 Beta には以下の機能が!すばらしい!
・ Android Application のサポート
・ RPC Tooling のサポート (Android -> GAE)
・シームレスな C2DM のサポート (GAE -> Android)
■ さっそくやってみた。
1. GPE 2.4 Beta についてはここ
Eclipse plugin で指定する update site URL が通常とは違って beta が含まれます
Eclipse 3.6 (Helios)
http://dl.google.com/eclipse/plugin/beta/3.6
Eclipse 3.5 (Galileo)
http://dl.google.com/eclipse/plugin/beta/3.5
Eclipse 3.4 (Ganymede)
http://dl.google.com/eclipse/plugin/beta/3.4
Eclipse で [Help] -> [Install New Software...] で上記のリンクを指定
GWT の SDK は最新のβ版の 2.4.0.beta, GAE は 1.5.0 が入りました。
Android SDK, ADT は別途入れる必要があります。
2. プロジェクトを作成
・[File] -> [New] -> [Project...] -> [Google] -> [App Engine Connected Android Project]
・Project name: と Package name: を追加
(Android SDK, GAE SDK, GWT SDK が正しく設定されていない場合は、ここから設定できる)
・C2DM のアカウントを設定
(まだ C2DM に sign up してない場合は、ここから sing up page へいける)
完了したら、Android のプロジェクトと、GAE + GWT のプロジェクトが作られます。
ざっと中をみると、
Android のプロジェクトには
・RequestFactory のライブラリ(requestFactory-client.jar)
・C2DM のライブラリ (c2dm.jar)
・認証 (validation) のライブラリ (validation-api-1.0.0.GA.jar)
・いくつかの Activity とその他のクラス (src/***/)
・shared で GAE + GWT の方の shared package を参照 (share/)
GAE + GWT のプロジェクトには
・JSON のライブラリ (json-1.5.jar)
・C2DM のライブラリ(c2dm-server.jar)
・認証 (validation) のライブラリ (validation-api-1.0.0.GA.jar, validation-api-1.0.0.GA-sources.jar)
・UI Binder を使った入り口ページ用レイアウト(src/***.client/***Widget.ui.xml)
・サーバー側実装 (src/***.server/)
・Android のプロジェクトから参照される shared package (shared/)
などが含まれています。
最初から、RPC や C2DM のロジックが含まれた状態のプロジェクトが作られるので、そのまま動かして、RPC や C2DM がどう動くか確かめることができます。すごいね。
まず、Android アプリを [Debug As] -> [Local App Engine Connected Android Application] で実行します。
通常の Android Application 実行ではないので注意!
そうすると、App Engine 側も立ち上がって、こんな感じに、
GWTのローカルのアクセス用URLが表示されるので、ダブルクリックしてブラウザで開きます。
動かすと、Android アプリはこんな画面
(注意:Android エミュレータでC2DMのテストをするには、Google アカウントの設定が必要なので、AVD の Target Name には Google APIs (Google Inc.) を指定してください)
まず、C2DMにアカウントを設定します。
メニューの Accounts をタップすると、端末に設定されているアカウントの一覧がでます。
C2DMに設定するアカウントを選択して Connect を押すと
このアプリで Google Account を使うけどいいですか?という画面がでるので、Allow をタップします。
しばらくして認証が完了すると、Notification Bar に register できましたというメッセージがでます。
認証に成功したら、Android アプリから SayHello ボタンを押すと、GAE に RPC でリクエストを投げた返事が表示されるようになります。やった!
同じことが、GWT クライアントからもできます。
次に、GWTのページを開くと、最初にログイン用のページが表示されるので、Sign Up for Android Cloud to Device Messaging で指定したアカウントでログインします。
ブラウザに Plugin が入ってない場合は、入れるように表示がでるので、それに従って入れます。
ログインすると、こんなページ
SAY HELLO ボタンを押すと、GAE に RPC でリクエストして、その返事が表示されます。
いよいよ、メインイベントのC2DM!
フォームにメッセージをいれて SEND MESSAGE をクリック。
きたー。
うまく送れないときは、GWT 側で最初にログインしたアカウントがちゃんと
Sign Up for Android Cloud to Device Messaging
で登録したアドレスかどうか確認すること。
別のアカウントで AuthToken がすでにできてしまっている場合は、ログアウトしてから
http://127.0.0.1:8888/_ah/admin/
にいって、C2DMConfig の Entities を削除してから正しいアカウントログインしたほうが安全。
ローカルのエミュレータと、ローカルデバッグモードの GAE でちゃんとC2DM動くんだね。すごーい。
このコメントは投稿者によって削除されました。
返信削除