编写: kesenhoo - 原文: http://developer.android.com/training/wearables/apps/packaging.html
当发布应用给用户之前,我们必须把可穿戴应用打包到手持应用内。因为用户不能直接在可穿戴设备上浏览并安装应用。如果打包正确,当用户下载手持应用时,系统会自动下发可穿戴应用到配对好的可穿戴设备上。
Note: 如果开发时签名用的是debug key,这个功能是无法正常工作的。在开发时,需要使用adb install命令或者Android Studio来安装可穿戴应用。
adb install
在Android Studio中打包可穿戴应用有下面几个步骤:
buidl.gradle
dependencies { compile 'com.google.android.gms:play-services:5.0.+@aar' compile 'com.android.support:support-v4:20.0.+'' wearApp project(':wearable') }
./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规则。从而嵌入预先签名的可穿戴应用:
build.gradle
dependencies { ... wearApp files('/path/to/wearable_app.apk') }
我们可以以任何我们想要的方式为手持应用进行签名(可以是Android Studio Build > Generate Signed APK...的方式,也可以是Gradle signingConfig规则的方式)。
signingConfig
如果我们使用的是其它IDE或者其它方法来构建应用,我们仍然可以手动地把可穿戴应用打包到手持应用中。
res/raw
wearable_app.apk
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。
package
versionCode
versionName
rawPathResId
wearable_app
meta-data
<application>
wearable_app_desc.xml
<meta-data android:name="com.google.android.wearable.beta.app" android:resource="@xml/wearable_app_desc"/>
许多构建工具会自动压缩放在res/raw目录下的文件。因为可穿戴APK已经被压缩过了,所以这些工具再次压缩可穿戴APK会导致可穿戴应用安装程序无法读取可穿戴应用。
这样的话,安装失败。在手持应用上,PackageUpdateService会输出如下的错误日志:"this file cannot be opened as a file descriptor; it is probably compressed."
PackageUpdateService
Android Studio 默认不会压缩APK,但是如果我们使用其它构建方式,需要确保不要重复压缩可穿戴应用。
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8