ウェアラブル向けアプリを作る 目次
原文
ユーザーはウェアラブル上で直接アプリを見つけてインストール出来ないため、ユーザーに公開するにはウェアラブルアプリを携帯端末向けアプリの中にパッケージングする必要があります。正しくパッケージされていれば、ユーザーが携帯端末向けアプリをダウンロードした時にシステムは自動的にペアリングされたウェアラブル端末にウェアラブルアプリを送信します。
メモ:この機能は開発中にデバッグキーで署名されたアプリでは機能しません。そのため開発時にはadb installあるいはAndroid Studioで直接ウェアラブルにインストールする必要があります。
Android Studioを使ったパッケージ
Android Studioで正しくウェアラブルアプリをパッケージするために1.携帯アプリのbuild.gradle内にあるGradle dependency にウェアラブルアプリモジュールの場所を記入する。
dependencies {
compile 'com.google.android.gms:play-services:5.0.+@aar'
compile 'com.android.support:support-v4:20.0.+''
wearApp project(':wearable')
}
2.Build - Generate Signed APKをクリックし画面の指示に従い、リリース用keystoreとアプリの署名を記入する。Android Studioはプロジェクトのルートフォルダー内に自動的にウェアラブルアプリを埋め込んだ署名済みの携帯端末アプリを出力します。
あるいはリリースキーで署名するためのsigningConfig ルールをウェアラブルアプリと携帯端末向けアプリのbuild.gradleに作成することも出来ます。ウェアラブルアプリが自動的に送られるためには両方のアプリが署名されていないといけません。
android {
...
signingConfigs {
release {
keyAlias 'myAlias'
keyPassword 'myPw'
storeFile file('path/to/release.keystore')
storePassword 'myPw'
}
}
buildTypes {
release {
...
signingConfig signingConfigs.release
}
}
...
}
Android Studioの右にある垂直のツールバー上のGradleボタンをクリックし、携帯端末向けアプリをビルドし、assembleRelease タスクで実行します。このタスクはProject name > Handheld module name > assembleReleaseの中にあります。
メモ:この例ではGradle fileの中にパスワードを埋め込んでいます。これはあまりよい方法ではないかもしれません。パスワードの代わりに環境変数を作る方法についてはConfigure signing settingsを見てください。
ウェアラブルアプリと携帯端末向けアプリを別々に署名する
もしビルドプロセスでウェアラブルアプリを携帯端末向けアプリと分けて署名する必要がある場合は、携帯アプリモジュールの build.gradleに以下のGradle ruleを宣言して既に署名が済んでいるウェアラブルアプリを埋め込むように宣言できます。
dependencies {
...
wearApp files('/path/to/wearable_app.apk')
}
その後携帯端末向けアプリを好きな方法( Build - Generate Signed APKメニューアイテムあるいはgradle previous sectionの中でsingingConfig ruleによってどちらでも)で署名します。
手動でパッケージする
他のIDEや異なる方法でのビルドを使いたい場合は携帯端末向けアプリに手動でウェアラブルアプリをパッケージ出来ます。1.署名済みのウェアラブルアプリを携帯端末向けプロジェクトのres/rawディレクトリにコピーする。wearable_app.apkというAPKとする。
2.ウェアラブルアプリのバージョンとパスについての情報を含むres/xml/wearable_app_desc.xmlを作る。例えば
<wearableApp package="wearable.app.package.name">
<versionCode>1</versionCode>
<versionName>1.0</versionName>
<rawPathResId>wearable_app</rawPathResId>
</wearableApp>
package, versionCode,versionNameはウェアラブルアプリのAndroidManifest.xmlファイルと同じ値とします。rawPathResId はAPKリソースの静的な名前の変数です。例えば、wearable_app.apkの静的な名前の変数はwearable_appです。
3.携帯端末向けアプリのapplicationタグにmeta-dataタグを追加しwearable_app_desc.xml ファイルを参照します。
<meta-data android:name="com.google.android.wearable.beta.app"
android:resource="@xml/wearable_app_desc"/>
4.携帯端末向けアプリをビルドし署名します
Assetの圧縮を無効にする
多くのビルドツールはAndroidアプリのres/rawディレクトリに追加されたファイルを自動的に圧縮します。ウェアラブルAPKは既に圧縮されているため、それらのツールはウェアラブルアプリを再圧縮してしまいウェアラブルアプリインストーラーはウェアラブルアプリを読み込むことができなくなってしまいます。これによりインストールに失敗したときは、携帯端末アプリのPackageUpdateService ログに以下のエラーが記録されます。
error: "this file cannot be opened as a file descriptor; it is probably compressed."
Android Studio標準でAPKを圧縮しません。しかし、もし他のビルドプロセスを使うのであればウェアラブルアプリが二重に圧縮されないように注意してください。
Except as noted, this content is licensed under Creative Commons Attribution 2.5. For details and restrictions, see the Content License.