エミュレータのAndroid LでGoogleIOアプリを動かす
GoogleIOアプリ
- GoogleIOのために作られたアプリです。ソースはこちらからクローンします。
- Lに対応しているアプリは現状マーケットには存在しない、かつGoogle謹製ということで、マテリアルデザインを理解するための良いサンプルです。
ちょっと動かすまでにいくつか躓くポイントが合ったのでメモ。
lpreview or classic
ProductFlavors
で、lpreview
とclassic
が用意されています。
lpreview
はLからでないと利用できないAPIを用いて作られているため、Lの端末でないと動かせません。
classic
はL以下のバージョンでも動くように互換性を持たせたフレーバーです。トンマナは同じですが、タッチフィードバックや画面遷移の部分などが再現できていません。
今回はLのエミュレータでlpreview
のフレーバーのAPKを動かします。
Build
Android Studio上でビルドしようとした場合、そのままではlpreview
のフレーバーは認識されません。
android/build.gradle
の中の三項演算子となっている部分を次のように変更することで、Build Variants
からlpreview
を選択できるようになります。
productFlavors { lpreview{} classic{} }
なぜ始めからこうなっていないのかというと、Googleでは異なる方法でlpreview
のフレーバーをビルドしているからです。
コマンドラインで次のように入力し、ビルドします。
$ ./gradlew -Plpreview assembleDebug
こうしてプロパティを渡しhasProperty('lpreview')
をtrue
にしています。
コマンドラインからビルドする際は、先ほどのandroid/build.gradle
の変更は不要です。
Java7
コマンドやRunは通るようになっても、ビルドは失敗します。 Java7でコンパイルする必要があるからです(通った方はスルーしてください)。
こちらからOracleのJava7のJDKをダウンロードします。
インストール後、Android StudioのFile
->Other Settings
->Default Project Structure
から、JDK locationを次のように変更します。
MacOS X 10.9.4でJava SE 7u67をインストールした場合です、適宜環境に応じて変更してください。
/Library/Java/JavaVirtualMachines/jdk1.7.0_67.jdk/Contents/Home
無事ビルドして、エミュレータにAPKをインストールできるようになりました。
しかしアプリを起動すると注意が出てくると思います。この注意を解消させましょう。
Google Account Required
Googleアカウントを端末で登録します。
CPUがIntel Atom(x86)
だとなぜかアカウント認証ができなかったので、ARM(armeabi-v7a)
の方でエミュレータを作成します。
Update Google Play services
Goole Play servicesの更新が必要とでますので、IOアプリで最低必要なバージョンを、ビルド時の設定で指定してあげましょう。
dependencies { wearApp project(':Wearable') compile 'com.google.android.gms:play-services:5.0.+' ...
5.+
のままだと5.2などを見に行ってしまい、Fit
が使えるSystem Imageでないと使えなくなってしまいます。
Google Play servicesを更新できず、上記の設定でまだ起動時に何度も聞いてくる場合は、Google Play servicesのバージョンをチェックしている部分をコメントアウトしてしまいましょう。
android/src/main/java/com/google/samples/apps/iosched/util/
にある、
PlayServicesUtils#checkGooglePlaySevices
です。
このメソッドの返り値を常にtrue
にして挙げることで起動時の確認をパスできるようになります。
public class PlayServicesUtils { public static boolean checkGooglePlaySevices(final Activity activity) { return true; } }
まとめ
lpreview
のフレーバーのビルドはコマンドラインから行う- Java7でコンパイルする
- エミュレータのCPUは
ARM(armeabi-v7a)
を用いる - Google Play servicesのアップデートチェックをコメントアウトする
エミュレータ重いです。やはり実機で確認したいですね。。
参考
This app won't run unless you update Google Play services #37 / GitHub