Android 打包可穿戴應(yīng)用

2018-08-02 17:50 更新

編寫: kesenhoo - 原文: http://developer.android.com/training/wearables/apps/packaging.html

當(dāng)發(fā)布應(yīng)用給用戶之前,我們必須把可穿戴應(yīng)用打包到手持應(yīng)用內(nèi)。因?yàn)橛脩舨荒苤苯釉诳纱┐髟O(shè)備上瀏覽并安裝應(yīng)用。如果打包正確,當(dāng)用戶下載手持應(yīng)用時(shí),系統(tǒng)會(huì)自動(dòng)下發(fā)可穿戴應(yīng)用到配對(duì)好的可穿戴設(shè)備上。

Note: 如果開發(fā)時(shí)簽名用的是debug key,這個(gè)功能是無(wú)法正常工作的。在開發(fā)時(shí),需要使用adb install命令或者Android Studio來(lái)安裝可穿戴應(yīng)用。

使用Android Studio打包

在Android Studio中打包可穿戴應(yīng)用有下面幾個(gè)步驟:

  1. 在手持設(shè)備應(yīng)用的manifest文件中包括所有在可穿戴設(shè)備應(yīng)用manifest文件中聲明的權(quán)限。例如,如果我們?cè)诳纱┐鲬?yīng)用中指定了VIBRATE權(quán)限,那么我們必須將該權(quán)限添加到手持設(shè)備應(yīng)用中。
  2. 確保可穿戴應(yīng)用和手持應(yīng)用都有相同的包名和版本號(hào)。
  3. 在手持應(yīng)用的buidl.gradle文件中聲明一個(gè)Gradle依賴用于指向可穿戴應(yīng)用:
    dependencies {
    compile 'com.google.android.gms:play-services:5.0.+@aar'
    compile 'com.android.support:support-v4:20.0.+''
    wearApp project(':wearable')
    }
    
  4. 點(diǎn)擊Build > Generate Signed APK...,按照屏幕上的指示來(lái)制定我們的release key并為我們的app進(jìn)行簽名。Android Studio將簽名好的內(nèi)置了可穿戴應(yīng)用的手持應(yīng)用自動(dòng)導(dǎo)出到工程的根目錄。或者,我們可以使用Gradle wrapper在命令行下為在可穿戴應(yīng)用與手持應(yīng)用簽名。為了能夠正常自動(dòng)推送可穿戴應(yīng)用,這兩個(gè)應(yīng)用都必須簽名。將我們的key文件位置和憑證保存到環(huán)境變量中,然后如下運(yùn)行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
    

分別為可穿戴應(yīng)用與手持應(yīng)用進(jìn)行簽名

如果我們的構(gòu)建過(guò)程需要將可穿戴應(yīng)用的簽名與手持應(yīng)用的分開,那么我們可以像下面一樣在手持應(yīng)用的build.gradle文件中聲明Gradle規(guī)則。從而嵌入預(yù)先簽名的可穿戴應(yīng)用:

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

我們可以以任何我們想要的方式為手持應(yīng)用進(jìn)行簽名(可以是Android Studio Build > Generate Signed APK...的方式,也可以是Gradle signingConfig規(guī)則的方式)。

手動(dòng)打包

如果我們使用的是其它IDE或者其它方法來(lái)構(gòu)建應(yīng)用,我們?nèi)匀豢梢允謩?dòng)地把可穿戴應(yīng)用打包到手持應(yīng)用中。

  1. 在手機(jī)應(yīng)用的manifest文件中包括所有在可穿戴設(shè)備應(yīng)用manifest文件中聲明的權(quán)限。例如,如果我們?cè)诳纱┐鲬?yīng)用中指定了VIBRATE權(quán)限,那么我們必須將該權(quán)限添加到手機(jī)應(yīng)用中。
  2. 確??纱┐鲬?yīng)用和手持應(yīng)用的APK都有相同的包名和版本號(hào)。
  3. 把簽好名的可穿戴應(yīng)用放到手持應(yīng)用工程的res/raw目錄下。我們假設(shè)這個(gè)APK名為wearable_app.apk。
  4. 創(chuàng)建res/xml/wearable_app_desc.xml文件,里面包含可穿戴設(shè)備的版本信息與路徑。例如:
    <wearableApp package="wearable.app.package.name">
    <versionCode>1</versionCode>
    <versionName>1.0</versionName>
    <rawPathResId>wearable_app</rawPathResId>
    </wearableApp>
    
    packageversionCodeversionName需要和可穿戴應(yīng)用的AndroidManifest.xml里面的信息一致。rawPathResId是一個(gè)靜態(tài)變量表示APK的名稱。例如,對(duì)于wearable_app.apk,這個(gè)靜態(tài)變量名為wearable_app。
  5. 添加meta-data標(biāo)簽到我們的手持應(yīng)用的<application>標(biāo)簽下,指明引用wearable_app_desc.xml文件
    <meta-data android:name="com.google.android.wearable.beta.app"
                  android:resource="@xml/wearable_app_desc"/>
    
  6. 構(gòu)建并簽名手持應(yīng)用。

關(guān)閉資源壓縮

許多構(gòu)建工具會(huì)自動(dòng)壓縮放在res/raw目錄下的文件。因?yàn)榭纱┐鰽PK已經(jīng)被壓縮過(guò)了,所以這些工具再次壓縮可穿戴APK會(huì)導(dǎo)致可穿戴應(yīng)用安裝程序無(wú)法讀取可穿戴應(yīng)用。

這樣的話,安裝失敗。在手持應(yīng)用上,PackageUpdateService會(huì)輸出如下的錯(cuò)誤日志:"this file cannot be opened as a file descriptor; it is probably compressed."

Android Studio 默認(rèn)不會(huì)壓縮APK,但是如果我們使用其它構(gòu)建方式,需要確保不要重復(fù)壓縮可穿戴應(yīng)用。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)