当发布给用户时,你必须在手持应用中打包可穿戴应用程序,因为用户不能在穿戴式设备中直接搜索安装应用.如果打包正确,当用户在手持设备中下载应用之后系统会自动的发送穿戴式应用到配对的设备中.
注意:在开发的时候如果用debug key打包的应用没有这个功能.在开发的时候需要使用
adb install
或者Android Studio
直接安装到穿戴式设备中.
使用Android Studio打包
1.在手持应用清单文件中包括所有的穿戴式应用的权限.举个例子,如果你的穿戴式应用需要VIBRATE
这个权限,你同样需要将这个权限添加到手持设备应用的清单文件中.
2.手持设备应用和穿戴式设备应用是相同的包名和版本号.
3.在手持设备应用的build.gradle
文件中声明指向穿戴式设备应用
dependencies {
compile 'com.google.android.gms:play-services:5.0.+@aar'
compile 'com.android.support:support-v4:20.0.+''
wearApp project(':wearable')
}
4.点击 Build>Generate Signed APK…按照屏幕的说明指定keystore并为app签名.Android Studio将携带有穿戴式应用的手持设备应用导出到工程的根目录.
或者你也可以在命令行里使用Gradle wrapper为应用签名.这两个应用必须都得签名才能自动发送到穿戴式设备中工作.
像下面这样在环境变量中配置key
和credentials
并运行Gradle wrapper
.
./gradlew assembleRelease \
-Pandroid.injected.signing.store.file=$KEYFILE \
-Pandroid.injected.signing.store.password=$STORE_PASSWORD \
-Pandroid.injected.signing.key.alias=$KEY_ALIAS \
-Pandroid.injected.signing.key.password=$KEY_PASSWORD
分别为可穿戴式应用和手持设备应用签名
如果在构建过程中需要在手持设备应用为穿戴式应用签名,你可以在手持设备工程的build.gradle
中声明如下Gradle
规则.
dependencies {
...
wearApp files('/path/to/wearable_app.apk')
}
手动打包
如果你使用其他的开发工具或者构建方法有可能需要手动打包应用.
1.在手持应用清单文件中包括所有的穿戴式应用的权限.举个例子,如果你的穿戴式应用需要VIBRATE
这个权限,你同样需要将这个权限添加到手持设备应用的清单文件中.
2.手持设备应用和穿戴式设备应用是相同的包名和版本号.
3.拷贝已经签名的穿戴式应用到手持设备工程下的res/raw
目录,我们将会引用这个应用最后生成wearable_app.apk
4.在res/xml下创建wearable_app_desc.xml
文件,该文件包括穿戴式应用的版本路径等信息.
<wearableApp package="wearable.app.package.name">
<versionCode>1</versionCode>
<versionName>1.0</versionName>
<rawPathResId>wearable_app</rawPathResId>
</wearableApp>
文件中的包名,版本号,版本名和穿戴式应用中的清单文件中的相同.rawPathResId
是应用的名字.举个例子wearable_app.apk
这个应用的静态变量名就是wearable_app
.
5.在手持应用项目的<application>
标签下添加meta-data
标签.
<meta-data android:name="com.google.android.wearable.beta.app"
android:resource="@xml/wearable_app_desc"/>
6.构建签名手持设备应用.
关闭资源压缩
许多构建工具在生成android 应用的时候会自动压缩res/raw
目录下的文件.因为穿戴式设备应用已经压缩过了,这些工具会重复压缩穿戴式设备应用导致穿戴式设备安装器不能读取穿戴式设备应用.
当这个发生的时候会安装失败.会出现这个错误日志:”this file cannot be opened as a file descriptor; it is probably compressed.”.
Android Studio 默认不会进行这项压缩,但是如果你使用其他的构建工具需要确保没有进行两次压缩.