android wear那些事--打包穿戴式应用

Packaging Wearable Apps

当发布给用户时,你必须在手持应用中打包可穿戴应用程序,因为用户不能在穿戴式设备中直接搜索安装应用.如果打包正确,当用户在手持设备中下载应用之后系统会自动的发送穿戴式应用到配对的设备中.

注意:在开发的时候如果用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为应用签名.这两个应用必须都得签名才能自动发送到穿戴式设备中工作.

像下面这样在环境变量中配置keycredentials并运行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>1versionCode>
  <versionName>1.0versionName>
  <rawPathResId>wearable_apprawPathResId> 
wearableApp>

文件中的包名,版本号,版本名和穿戴式应用中的清单文件中的相同.rawPathResId是应用的名字.举个例子wearable_app.apk这个应用的静态变量名就是wearable_app.

5.在手持应用项目的标签下添加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 默认不会进行这项压缩,但是如果你使用其他的构建工具需要确保没有进行两次压缩.

你可能感兴趣的:(Android,Wear)