如何打包Android Wearable 应用程序


原文标题:Packaging Wearable Apps

原文地址:http://developer.android.com/training/wearables/apps/packaging.html

翻译:姚汝刚

邮箱:yaorugang@hotmail.com




名词说明

lWearable:指的是可穿戴设备,但是目前应用最广泛的可穿戴设备就是手表,所以为了方便起见,本文在翻译的过程中有时会将Wearable直接翻译为手表,便于理解。

l Handheld: 原文中用的handheld指的是手机程序,本文不对这个单词做翻译。它指的就是Android Studio项目中的Mobile模块。

发布安卓手表应用程序时,我们必须要将手表应用直接打包到对应的手机应用程序里面,因为用户不可以直接浏览并安装应用程序到手表设备上。如果我们进行正确的打包,当用户下载安装手机版应用时,系统会自动将打包的手表程序安装到与之配对的手表上。

提示:如果在开发过程中使用的是debug key来进行签名,那么wearable app将不会被自动安装。这时就需要使用"adb install"命令或者Android Studio来直接安装手表应用了。




使用Android Studio打包

正确使用Android Studio打包wearable app的步骤

  • 将wearable manifest中声明的所有权限在handheld app 的manifest中全部再声明一遍。比如,你要是在wearable中添加了VIBRATE权限,那么你需要也同样在handheld manifest中添加VIBRATE权限。

  • 确保wearablehandheld应用程序具有相同的package name和版本号。

  • 在handheld app的build.gradle文件里声明对wearable程序的指向:

dependencies {
compile
'com.google.android.gms:play-services:5.0.+@aar'
compile
'com.android.support:support-v4:20.0.+''
wearApp project(':wearable')
}

  • 点击菜单Build > Generate Signed APK…并按照屏幕提示选择你的release keystore去给app签名。Android Studio自动将签名后的handheldapp(内嵌有wearable app)导出到项目根目录下。

你其实还可以通过命令行使用Gradle wrapper来签名wearablehandheld程序。这两个程序都必须被签名才可以使wearable程序可以被自动推送到手表上。

为了运行Gradle wrapper,请按照如下方式在环境变量中配置key文件路径和证书:

/gradlewassembleRelease \

-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




单独对wearable和handheld程序进行签名

如果你单独对wearable程序进行了签名,你可以在handheld模块的build.gradle文件中进行以下声明来将签名过的wearable程序嵌入进来:

dependencies {
...
wearApp files('/path/to/wearable_app.apk')
}

接下来你就可以按照任何你喜欢的方式来签名你的handheld程序(可以点击菜单 Build > Generate Signed APK… 或者使用前面章节介绍的signingConfig规则)




手动打包

如果你不是使用的Android Studio,而是其他的IDE或者其他的编译方式,你依旧可以手动将wearable程序打包到你的handheld程序包里。

  • wearable manifest中声明的所有权限在handheldapp manifest中全部再声明一遍。比如,你要是在wearable中添加了VIBRATE权限,那么你需要也同样在handheld manifest中添加VIBRATE权限。

  • 确保wearablehandheld应用程序具有相同的package name和版本号。

  • 将签名后的wearable程序拷贝到手机项目的res/raw目录中。我们指定APK的名字为wearable_app.apk

  • 创建文件res/xml/wearable_app_desc.xml,包含有wearable程序的版本号和路径信息。例如:

<wearableApppackage="wearable.app.package.name">
<versionCode>
1</versionCode>
<versionName>
1.0</versionName>
<rawPathResId>
wearable_app</rawPathResId>
</wearableApp>

其中package,versionCodeversionName的值与wearable程序的AndriodManifest.xml文件中的对应值保持一致。rawPathResIdAPK文件的名字(不包括后缀名)。比如,对于wearable_app.apk来说,其名字就是wearable_app

  • handheld程序的<application>标签中添加一个meta-data标签来指定wearable_app_desc.xml文件。

<meta-dataandroid:name="com.google.android.wearable.beta.app"
android:resource="@xml/wearable_app_desc"/>

  • 编译并签名handheld程序。




关闭Asset压缩

许多编译工具会自动压缩安卓应用程序res/raw目录中的文件。因为wearable APK已经是压缩过的,这些编译工具会再次对wearable APK进行压缩,这会导致wearable app installer无法对APK进行读取。

如果这种情况发生,安装将失败。Handheld程序的PackageUpdateService将记录如下日志信息” this file cannot be opened as a file descriptor; it is probablycompressed.”

AndroidStudio默认情况下不会对APK进行压缩,但是如果你使用其他方式进行编译,请一定确定不要重复对APK进行压缩。


更多相关文章

  1. Android(安卓)Intent的用法及其传取值
  2. Android(安卓)Permission大全1.0最终版本
  3. adnroid联网
  4. 解决android工程引用多个jar包导致的文件重复的错误
  5. Android(安卓)PMEM驱动研究 在应用程序中使用PMEM
  6. Android点击通知栏信息后返回正在运行的程序,而不是一个新Activit
  7. Android(安卓)Intent的几个主要用法--发短信,打电话,发彩信
  8. Android(安卓)架构概况,学习笔记。
  9. 获取Android系统中全部正在运行的程序

随机推荐

  1. Android(安卓)Studio下运行开源项目9GAG
  2. 处女男学Android(三)---Handler简介以及初
  3. Android图片内存优化-Android(安卓)8.0上
  4. 实时改变配置
  5. 为Android应用程序读取/dev下设备而提权(
  6. Android多渠道打包相关介绍
  7. Android手机软件汉化教程---第五课 打包
  8. android 2.0发布
  9. 经典Android(安卓)人脸识别案例解析
  10. Android游戏开发一些心得(多个SurfaceView