表盘推送

Wear OS 6 引入了新的 API Watch Face Push,为更高级的表盘发布使用场景创造了机会。

确定何时使用 Watch Face Push

Watch Face Push 是 Wear OS 上的一个 API,开发者可以使用它直接添加、更新或移除表盘。标准表盘开发不需要此 API。

与 Watch Face Push 搭配使用的表盘必须使用表盘格式编写。这可以包括使用 Watch Face Designer、Watch Face Studio 或任何其他可生成使用表盘格式的表盘的工具设计的表盘。

虽然 Watch Face Push API 可能有多种使用方式,但下表将引导您了解主要的使用场景:

使用场景 推荐的解决方案 复杂性
我想创建并发布单个表盘。 直接使用表盘格式,或通过 Watch Face Designer 或 Watch Face Studio 等工具使用表盘格式,然后在 Google Play 上发布表盘。
我想创建一个手机应用,让用户可以从精选集中选择表盘,或者设计和自定义表盘以直接安装到他们的 Wear OS 手表上。 在手表上使用 Watch Face Push API 创建手表和手机应用。

用途

Watch Face Push API 的规范使用场景是创建 市场 应用。用户可以通过此应用在手机上从精选集中选择表盘,并直接控制将这些表盘安装到已连接的手表上。

注意事项

如需详细了解如何构建表盘,请参阅表盘格式 指南:使用 Watch Face Push 部署的表盘是常规表盘 格式表盘。

构建表盘时,请注意以下事项。

软件包名称

使用 Watch Face Push 安装的表盘必须符合以下惯例:

<app name>.watchfacepush.<watchface name>

其中,<app name> 是调用 Watch Face Push API 的应用的软件包名称。

例如,对于软件包名称为 com.example.mymarketplace 的应用,以下是有效的表盘软件包名称:

  • com.example.mymarketplace.watchfacepush.watchface1
  • com.example.mymarketplace.watchfacepush.watchface2
  • com.example.mymarketplace.watchfacepush.another_watchface

如果表盘不符合此惯例,API 会拒绝该表盘。

软件包内容

系统会严格执行 APK 内容。从技术上讲,可以生成包含无害元数据文件和其他工件的表盘格式 APK,这些 APK 可能被 Google Play 接受,但无法通过 Watch Face Push 验证(见下文)。

每个表盘 APK 必须仅包含以下文件/路径:

  • /AndroidManifest.xml
  • /resources.arsc
  • /res/**
  • /META-INF/**

此外,AndroidManifest.xml 文件必须仅包含以下标记:

  • <manifest>
  • <uses-feature>
  • <uses-sdk>
  • <application>
  • <property>
  • <meta-data>

最后,软件包必须指定至少为 33minSdk,并且 <application> 标记必须指定属性 android:hasCode="false"

验证

与通过 Google Play 分发的常规表盘不同,Marketplace 中的应用负责验证每个 Watch Face Push 表盘是否格式正确且性能良好。

Watch Face Push 使用以下验证检查来验证每个表盘的质量:

  1. 通过 Watch Face Push API 安装或更新的所有表盘都必须 通过 Watch Face Push 验证工具。
  2. 仅使用官方验证工具生成 验证令牌 以供 API 使用。
  3. 运行验证时,验证工具必须是最新的。
  4. 您无需重新验证未更改的 APK。令牌不会过期,即使使用的验证工具版本被取代。

    同时,我们建议您不时重新运行验证,因为验证器会定期更新。

运行验证程序

验证器有三种形式:

  • CLI 工具
  • 用于 JVM 的库
  • 用于 Android 的库

命令行验证程序使用方法

  1. 从 Google 的 Maven 制品库获取验证程序。
  2. 按如下方式运行该工具:

    java -jar validator-push-cli-1.0.0-alpha10.jar \
        --apk_path=<your watch face>.apk \
        --package_name=<your marketplace package name>
    

    如果成功,输出将包含 验证令牌,您在添加或更新表盘时必须 将此令牌提供给 Watch Face Push API。

    如果发生错误,输出将包含有关哪个特定检查失败的详细信息。

库验证程序使用方法

  1. 添加 Google 和 Jitpack 代码库。使用验证器库时,这两个代码库都是必需的。

    repositories {
        ...
        google()
        maven {
            url = uri("https://jitpack.io")
            content {
                includeGroup("com.github.xgouchet")
            }
        }
    }
    
  2. 在项目中添加验证程序依赖项:

    // For use on JVM
    implementation("com.google.android.wearable.watchface.validator:validator-push:1.0.0-alpha10")
    
    // For use on Android
    implementation("com.google.android.wearable.watchface.validator:validator-push-android:1.0.0-alpha10")
    
    
  3. 运行验证程序:

    val validator = DwfValidatorFactory.create()
    val result = validator.validate(watchFaceFile, appPackageName)
    
    if (result.failures().isEmpty()) {
        val token = result.validationToken()
        println("Validation token: $token")
    
        // Validation success - continue with the token
        // ...
    } else {
        // There were failures, handle them accordingly - validation has failed.
        result.failures().forEach { failure ->
            println("FAILURE: ${failure.name()}: ${failure.failureMessage()}")
            // ...
        }
    }

如需查看使用此库的示例,请参阅 GitHub 示例。另请参阅 Portable Asset Compiler Kit (Pack) 库,该库有助于在设备上构建 APK,以供基于 Android 的验证器使用。

APK 大小

请特别注意 Watch Face Push 表盘,以尽可能减小 APK 大小:表盘 APK 可能会通过蓝牙从手机应用传输到手表应用,这可能会很慢。

过大的 APK 可能需要相当长的时间才能传输,这不仅会带来糟糕的用户体验,还会消耗电池电量。

  • 使用适当的库(例如 pngquant)将 图片文件大小保持在最低水平
    • 将其纳入表盘集合构建流程中
    • 检查图片的尺寸是否适合您使用的比例。
    • 适当裁剪图片以移除任何周围的背景。
  • 减小字体文件的大小

如需获取有关尽可能减小 APK 大小的更多建议,请参阅优化内存用量指南

APK 签名

与常规 APK 一样,您必须为所有表盘签名。创建一个与您用于主应用的密钥不同的密钥,并为所有表盘使用不同的密钥。

架构

请考虑系统的四个主要组件:

  1. 基于云的存储空间:在规范的 Marketplace 中的应用中,您可以在云端构建和存储表盘,供用户使用。表盘具有以下属性:
    1. 它们预构建为常规表盘格式 APK。
    2. 每个 APK 仅包含一个基于表盘格式的表盘。
    3. 它们通过 Watch Face Push 验证流程进行验证,并与关联的验证令牌一起存储。
    4. 您的手机应用可以根据需要检索它们。
  2. “电话”应用:用户与您的系统互动的主要方式是“电话”应用。用户可以通过手机应用执行以下操作:
    1. 浏览和搜索您的表盘目录
    2. 在手表上安装或替换表盘
  3. 手表应用:手表应用通常没有重要的用户 界面。它主要是手机应用和 Watch Face Push API 之间的桥梁,具有以下功能:
    1. 使用 Watch Face Push API 安装/更新或替换表盘
    2. 请求必要的权限并提示用户
    3. 提供默认表盘
    4. 提供最少的表盘缓存
  4. 手机-手表通信:手机和手表应用通信对于整体体验的成功 至关重要。使用 Wear OS 数据层 API,该 API 允许:
    1. 安装检测:使用 Capabilities 和 CapabilityClient,手机应用可以检测手表应用是否缺失,反之亦然。然后,您可以启动 intent 以转到 Play 商店来安装缺失的表单。
    2. 状态管理:使用 DataClientMessageClient,您可以使手机与手表的状态保持同步,例如同步活动表盘的状态。
    3. APK 传输:使用 ChannelClientMessageClient,将 APK 从手机发送到手表
    4. 远程调用:使用 Messageclient,手机可以指示手表调用 Watch Face Push API,例如安装表盘。

如需了解详情,请参阅数据层 API 指南