Android Wear用Watch Faceを開発した時の覚え書き

先日、Android Wear用Watch Face「プロ生ちゃんによるWatch Face」をPlay Storeに公開しました。

Android Wear用Watch Face「プロ生ちゃんによるWatch Face」を公開しました | Androidアプリ開発@つくばの日記

これからAndroid Wear用のウォッチフェースを開発したい方の参考になるように、つまづいたところについて書き残しておきます。これから書くことが完全に正しいという保証は無いので、その辺はよろしくお願いします。

また、Android Wear用ウォッチフェースの作り方やAndroid Wear用アプリの作り方について詳しく知りたい場合は、「Android Wearアプリ開発入門」を読むのが良いですね。本日現在、この一冊しか入門書は無いです。

Ambient modeはモノクロにする

Wear端末は、画面を覗き込むと明るく(Interactive mode)、しばらく置いておくと暗く(Ambient mode)なります。

この画面が暗い状態、Ambient modeの時に画面に表示する内容は、モノクロにしてあげると電池の持ちが良いようです。カラーで表示しようとしてもモノクロっぽくしか表示できないので、Ambient modeでの表示内容はモノクロにしてあげましょう。

アプリはmobileをビルドする

スマートフォン用アプリにwear用アプリを同梱するには、mobileのbuild.gradleに `wearApp project(‘:wear’)` みたいに書いてあげます。通常、Android StudioでAndroid Wear用Watch Faceのプロジェクトを作った時に自動で書かれていると思います。

具体的には、こんな感じです。

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    wearApp project(':wear')
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.2.0'
    compile 'com.google.android.gms:play-services:9.4.0'
}

開発時にWear端末にインストールして動作を確認する時は、普通にwearをビルドすれば大丈夫です。

リリース時には、mobileアプリにwearアプリを同梱してストアへ提出します。Watch Faceだけ開発すればいいのかと思ってましたが、スマホ側も開発しなければならないみたいですね。面倒臭いですが、スマホ側(mobile)も作りましょう。

(注:本日現在、Android Wear端末からはPlay Storeにアクセスできないのでこんな感じの配布方法になっていますが、Android Wear端末にPlay Storeが解放されればwearアプリだけビルドすれば良くなるかもしれませんね)

Wear実機にWatch Faceをインストールする

Wear実機へのインストールは、PCにWear実機を接続してインストールする方法と、ハンドヘルド(スマホ)とBluetooth接続してインストールする方法があります。

Bluetooth経由のインストールは面倒臭いので、PCにWear実機を接続してインストールする方法を使っていました。

Wear実機にアプリをインストールするには、Wear実機の開発者向けオプションを有効化、USBデバッグ有効化でPC経由のインストールが可能になります。

Wear実機の開発者向けオプションの有効化は、恒例の設定 > 端末情報 > ビルド番号7回タップです。

64kエラーに対処する

Android Wearアプリのリリースビルド時に、いわゆる”64kエラー”が出ました。多分、google play servicesのせいだとは思いますが、変に触るのが嫌だったので、手っ取り早くmultidexオプションを有効にして回避しました。

mobileとwearの両方に `multiDexEnabled true` を設定します。

buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        multiDexEnabled true
    }
}

multidexにするとファイルサイズが大きくなったはずなので、本当はあんまりやりたくないです。google play servicesをよしなにするなど、他に良い解決方法があればそちらを採用すべきですね。

このあたりについては、技術的に腑に落ちないところがいくつかあるので、そのうち調べてみたいと思います。

他に何か思いついたら追記します。とりあえずこの辺で。

シェアしてもらえるとうれしいです。゚(´っωc`)゚。