Skip to content

Most visited

Recently visited

navigation

打包和分发 Wear 应用

有了 Wear 2.0,用户可访问手表上的 Play 商店,并可将 Wear 应用直接下载到手表上。此外,用户还可以通过网络 Play 商店将应用直接安装到其手表上。

所有运行 Wear 2.0 的设备都使用 Android 7.1.1(API 级别 25)。如果您的应用仅支持运行 Wear 2.0 或更高版本的设备,则最低目标 API 级别应为 25。如果您的应用可同时支持 Wear 1.x 和 2.0,则最低目标 API 级别可以为 23。所有 Wear 应用的目标级别都必须是 API 级别 23 或更高级别,因此,需要运行时权限

另请参阅独立应用

如果 Wear 2.0 应用具有配套应用,则必须使用相同密钥为这两个应用中的每个应用签名。此要求也适用于 Wear 1.x 应用(其始终具有配套应用)。

规划 Play 商店

为确保应用显示在手表上的 Play 商店中,请在 Play 管理中心上传手表 APK,就像上传任何其他 APK 一样。如果您仅有手表 APK 而没有手机 APK,则不需要其他步骤。

如果除手表 APK 外您还有手机 APK,则必须使用多 APK 传递方法

分发到 Wear 2.0 手表

在运行 Wear 2.0 的设备上,当用户安装具有关联手表应用(嵌入式 APK 或通过 Play 管理中心上传的 APK)的手机应用时,用户将收到与可用手表应用有关的手表通知。点按此通知将打开手表 Play 商店,让用户可以选择安装手表应用。

此外:

分发到 Wear 1.x 和 2.0 手表

Wear 1.x 的标准分发模式是在手机应用内嵌入手表应用。现在,Android Wear 允许您使用对 Wear 1.0 和 2.0 相同的方式分发 Wear 应用。当用户安装您的手机应用时,如果您在 Play 商店中具有兼容的 Wear 应用,则该应用将被自动安装到 Wear 1.0 手表上。此功能允许您停止在手机应用的 APK 中嵌入 Wear 应用。您可以在同时适用于 Wear 1.0 和 Wear 2.0 手表的 Play 商店中提供手表 APK 的独立版本。

指定版本代码

为确保独立 APK 升级手表上现有的嵌入式 Wear APK,独立 Wear APK 的版本代码通常应高于嵌入式 Wear APK 的版本代码。(手机 APK 的版本代码架构可以独立于手表 APK 的版本代码架构,尽管它们必须具有唯一性。)不过,如果 APK 均等,则独立 APK 和嵌入式 Wear APK 的版本代码可以相同。

如果 APK 不均等,但版本代码相同,那么,在手表从 Wear 1.x 更新至 2.0 时,仅当等待时间超过预期时间后,手表才可能会获取新的 APK。

目前,无法创建可同时在手机和手表上运行的单一 APK。

如果您的 Wear APK 和配套 APK 共享代码且需要协调发布,您应保留 APK 变体版本代码的最后两位数。APK 变体的一个例子是 CPU 架构。例如,请参阅支持多个 CPU 架构

以下是建议的版本代码架构:

如果使用此建议的版本代码架构中的示例值(25、152、01 和 00),则示例 APK 变体的版本代码将为 251520100。

另请参阅设置应用版本信息

Gradle 文件中是否支持

如果您具有同时适用于 Wear 1.x 和 Wear 2.0 的 Wear 应用,请考虑使用产品风味。例如,如果您的目标版本为 SDK 版本 23 和版本 25,那么,如果现有 Wear 1.x 应用具有最低 SDK 版本 23,则更新 Wear 模块的 build.gradle 文件以包含以下内容:

android {
    // Allows you to reference product flavors in your
    // phone module's build.gradle file
    publishNonDefault true
    ...
    defaultConfig
    {
       // This is the minSdkVersion of the Wear 1.x app
       minSdkVersion 23
       ...
    }
    buildTypes {...}
    productFlavors {
        wear1 {
          // Use the defaultConfig value
        }
        wear2 {
            minSdkVersion 25
        }
    }
}

构建变体是产品风味和构建类型的组合。在 Android Studio 中,调试或发布应用时应选择合适的构建变体。例如,如果 wear2 是一个产品风味,则选择 wear2Release 作为发布构建变体。

如需特定于 Wear 2.0 或 Wear 1.x 的代码,请考虑构建变体的源集

将 Wear 1.0 APK 从嵌入式 APK 迁移至多 APK

过去,将 Wear 1.0 APK 嵌入在手机 APK 中以将穿戴式设备应用分发给用户。现在,Android Wear 允许您直接将 Wear 1.0 APK 上传到 Play 商店以取代嵌入式 APK,这有助于减少手机 APK 大小,并可通过版本控制和发布 APK 实现更大的灵活性。如果您目前具有嵌入式 Wear 1.0 APK,现在,您可以按照以下步骤配置、构建它,并将它上传到 Play 商店:

  1. wearAppUnbundled true 添加到 build.gradle 配置。仅当以前在 play 商店中发布了嵌入式 Wear 应用的情况下才需要执行此操作。
  2. android {
      ...
      defaultConfig {
        ...
        wearAppUnbundled true
      }
    }
    
  3. 从手机应用 gradle 文件移除以下 wearApp 依赖项规则:
  4. dependencies {
        ...
        wearApp project(path: ':wear', configuration: 'wear1Release')
    }
    
  5. 确保在 Wear 应用 manifest 文件中指定以下功能限制:
  6. <manifest package="com.example.standalone"
        xmlns:android="http://schemas.android.com/apk/res/android">
        <uses-feature
            android:name="android.hardware.type.watch"/>
        ...
    </manifest>
    
  7. 在 Wear 应用模块的 build.gradle 文件中将最低 SDK 版本设置为 23。
  8. 将应用指定为独立应用。
  9. 构建 Wear APK 并使用 Google Play Developer Console 部署它

以下是设置 Wear 应用最低 SDK 级别的几个注意事项:

针对手表进行设置

在 Android manifest 文件中,您必须将 uses-feature 元素设置为 android.hardware.type.watch。此外,请勿将 required 属性设置为 false。目前不支持同时适用于 Wear 和非 Wear 设备的单一 APK。

因此,如果一个 APK 具有以下设置,Google Play 将仅向手表提供此 APK:

<manifest package="com.example.standalone"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <uses-feature
        android:name="android.hardware.type.watch"/>
    ...
</manifest>

上面的 android.hardware.type.watch 设置可以与其他条件结合使用,如 SDK 版本、屏幕分辨率和 CPU 架构。因此,不同的 Wear APK 可以面向不同的硬件配置。

将应用指定为独立应用

Wear 2.0 需要手表应用的 Android manifest 文件中的 meta-data 元素作为 <application> 元素的子元素。meta-data 元素的名称为 com.google.android.wearable.standalone,且值必须为 truefalse。此元素可表明您的手表应用是否为独立应用。如果此元素的设置为 true,则可在与 iPhone 配对的手表的 Play 商店中获取您的应用,只要您的活动 APK 在所有渠道中(例如,在 Beta 测试版渠道中)都将此元素设置为 true。如果目前向用户提供的所有 APK(Alpha、Beta 测试版或正式版)并不都具有上述设置,则当用户在与 iPhone 配对的手表上搜索时,您的应用将不可用。

手表应用不一定被视为独立应用。可以将手表应用归入以下类别之一:

如果手表应用为完全独立或半独立应用,则将新的 meta-data 元素的值设置为 true

<application>
...
  <meta-data
    android:name="com.google.android.wearable.standalone"
    android:value="true" />
...
</application>

由于独立应用(即独立应用或半独立应用)可由 iPhone 用户或缺少 Play 商店的 Android 手机用户进行安装,因此,无需 Android 手机应用即可使用手表应用。

如果手表应用依赖于手机应用,则将上面的 meta-data 元素的值设置为 false。将此元素设置为 false 表示手表应用应仅安装在与具有 Play 商店的手机配对的手表上。

:即使此值为 false,也可以在安装手机应用前安装手表应用。

如果您的 Wear 2.0 应用有配套的手机应用,请为您的 Wear 应用和该手机应用使用相同的软件包名称。

使用 Play 管理中心

您可以使用 Play 管理中心将一个独立 Wear APK 上传到应用详情。

另请参阅多 APK 支持管理您的应用。按下文所述方式上传 APK 之前,必须先签署 APK。

上传和发布您的 APK

要使用 Play 管理中心上传和发布您的 APK,请执行以下操作:

  1. 前往 Play Developer Console
  2. 从左侧菜单中选择 Release management > App releases

    :如果您的 APK 处于草稿模式,请直接从左侧菜单中选择 App releases

  3. 在您要创建的发布类型(正式版、Alpha、Beta 测试版)旁,选择 Manage
  4. 要创建新发布,请选择 Create release
  5. 选择 Upload APK/Add APK from library 以添加独立 Wear APK。
  6. 完成发布准备后,选择 Review。此时将显示“Review and rollout release”屏幕。在此处,您可以使用信息图标查看 APK 的详情,如支持的 Android 设备数。另外,确保您已将硬件功能设置为 android.hardware.type.Watch.
  7. 选择 Confirm rollout 发布您的应用。

嵌入 Wear 1.x APK

保留此部分中的流程以供您参考。如果在手机应用 APK 中打包 Wear 1.x APK,则当用户下载手机应用时,系统会将 Wear 应用推送到配对的手表上。

:当您使用调试密钥签署应用时,此功能不起作用。在开发应用时,需要通过 adb install 或 Android Studio 将应用直接安装到手表上。

重要说明:强烈建议您创建独立 Wear 1.0 APK,且不再嵌入 Wear 1.x 应用。

通过 Android Studio 打包 Wear 1.x 应用

要在 Android Studio 中打包 Wear 1.x 应用,请执行以下操作:

  1. 确保手表和手机应用模块具有相同的软件包名称。
  2. 在指向手表应用模块的手机应用的 build.gradle 文件中声明一个 Gradle 依赖项。此声明将类似于下面这样,但请查看设置 Google Play 服务 v4 compat 库以了解最新版本:
    dependencies {
       compile 'com.google.android.gms:play-services-wearable:10.0.1'
       compile 'com.android.support:support-compat:25.1.0'
       wearApp project(':wearable')
    }
    
  3. 按照签署您的发布构建中的说明指定发布密钥库并签署您的应用。Android Studio 将一个已签署的、包含嵌入式手表应用的手机应用导出(到您的项目的根文件夹)。

    或者,使用 Gradle 包装器从命令行签署这两个应用。这两个应用均必须进行签署,以启用手表应用的自动推送功能。请参阅签署您的应用

单独签署 Wear 1.x 应用和手机应用

如果您的构建流程需要在手机应用之外签署手表应用,您可以在手机模块的 build.gradle 文件中声明以下 Gradle 规则以嵌入以前签署的手表应用:

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

然后,根据需要签署手机应用(通过 Android Studio Build > Generate Signed APK... 菜单项或通过 Gradle signingConfig 规则)。

手动打包 Wear 1.x 应用

如果您在使用另一个 IDE 或其他构建函数,您可以在手机应用中手动打包手表应用:

  1. 确保手表 APK 和移动 APK 具有相同的软件包名称和版本号。
  2. 将签署的手表应用复制到手机项目的 res/raw 目录。我们将此 APK 称为 wearable_app.apk
  3. 创建一个 res/xml/wearable_app_desc.xml 文件,其包含手表应用的版本和路径信息。例如:
    <wearableApp package="wearable.app.package.name">
      <versionCode>1</versionCode>
      <versionName>1.0</versionName>
      <rawPathResId>wearable_app</rawPathResId>
    
    </wearableApp>
    

    packageversionCodeversionName 的值与手表应用 manifest 文件中的值相同。rawPathResId 是 APK 资源的静态变量名称。例如,对于 wearable_app.apk,静态变量名称为 wearable_app

  4. 将一个 meta-data 标记添加到手机应用的 <application> 标记以引用 wearable_app_desc.xml 文件。
      <meta-data android:name="com.google.android.wearable.beta.app"
                     android:resource="@xml/wearable_app_desc"/>
    
  5. 构建和签署手机应用。

关闭资源压缩

默认情况下,Android Studio 不会压缩 APK,但如果您使用其他构建流程,请确保手表应用不会被双重压缩。许多构建工具自动压缩已添加至 Android 应用的 res/raw 目录的文件。手表 APK 已压缩,因此,会出现双重压缩。结果是,手机应用安装程序无法读取手表应用,安装失败,PackageUpdateService 将记录以下错误:“This file cannot be opened as a file descriptor; it is probably compressed.”(“此文件无法作为文件描述符打开;它可能已被压缩。”)

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Follow Google Developers on WeChat

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)