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.watchface1com.example.mymarketplace.watchfacepush.watchface2com.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>
最后,软件包必须指定至少为 33 的 minSdk,并且
<application> 标记必须指定属性 android:hasCode="false"。
验证
与通过 Google Play 分发的常规表盘不同,Marketplace 中的应用负责验证每个 Watch Face Push 表盘是否格式正确且性能良好。
Watch Face Push 使用以下验证检查来验证每个表盘的质量:
- 通过 Watch Face Push API 安装或更新的所有表盘都必须 通过 Watch Face Push 验证工具。
- 仅使用官方验证工具生成 验证令牌 以供 API 使用。
- 运行验证时,验证工具必须是最新的。
您无需重新验证未更改的 APK。令牌不会过期,即使使用的验证工具版本被取代。
同时,我们建议您不时重新运行验证,因为验证器会定期更新。
运行验证程序
验证器有三种形式:
- CLI 工具
- 用于 JVM 的库
- 用于 Android 的库
命令行验证程序使用方法
- 从 Google 的 Maven 制品库获取验证程序。
按如下方式运行该工具:
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。
如果发生错误,输出将包含有关哪个特定检查失败的详细信息。
库验证程序使用方法
添加 Google 和 Jitpack 代码库。使用验证器库时,这两个代码库都是必需的。
repositories { ... google() maven { url = uri("https://jitpack.io") content { includeGroup("com.github.xgouchet") } } }在项目中添加验证程序依赖项:
// 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")运行验证程序:
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)将 图片文件大小保持在最低水平- 将其纳入表盘集合构建流程中
- 检查图片的尺寸是否适合您使用的比例。
- 适当裁剪图片以移除任何周围的背景。
- 减小字体文件的大小
- 例如,如果您仅使用特定字体以
格式
HH:MM显示时间,则可以使用pyftsubset等工具将字体文件限制为仅包含必要的字形。这可以显著减小生成的字体文件和 APK 的大小。如需了解有关在其他情况下尽可能减小字体文件 大小的详细信息,请参阅 这篇博文。
- 例如,如果您仅使用特定字体以
格式
如需获取有关尽可能减小 APK 大小的更多建议,请参阅优化内存用量指南。
APK 签名
与常规 APK 一样,您必须为所有表盘签名。创建一个与您用于主应用的密钥不同的密钥,并为所有表盘使用不同的密钥。
架构
请考虑系统的四个主要组件:
- 基于云的存储空间:在规范的 Marketplace 中的应用中,您可以在云端构建和存储表盘,供用户使用。表盘具有以下属性:
- 它们预构建为常规表盘格式 APK。
- 每个 APK 仅包含一个基于表盘格式的表盘。
- 它们通过 Watch Face Push 验证流程进行验证,并与关联的验证令牌一起存储。
- 您的手机应用可以根据需要检索它们。
- “电话”应用:用户与您的系统互动的主要方式是“电话”应用。用户可以通过手机应用执行以下操作:
- 浏览和搜索您的表盘目录
- 在手表上安装或替换表盘
- 手表应用:手表应用通常没有重要的用户
界面。它主要是手机应用和 Watch Face Push API 之间的桥梁,具有以下功能:
- 使用 Watch Face Push API 安装/更新或替换表盘
- 请求必要的权限并提示用户
- 提供默认表盘
- 提供最少的表盘缓存
- 手机-手表通信:手机和手表应用通信对于整体体验的成功
至关重要。使用 Wear OS 数据层 API,该 API 允许:
- 安装检测:使用 Capabilities 和
CapabilityClient,手机应用可以检测手表应用是否缺失,反之亦然。然后,您可以启动 intent 以转到 Play 商店来安装缺失的表单。 - 状态管理:使用
DataClient或MessageClient,您可以使手机与手表的状态保持同步,例如同步活动表盘的状态。 - APK 传输:使用
ChannelClient或MessageClient,将 APK 从手机发送到手表 - 远程调用:使用
Messageclient,手机可以指示手表调用 Watch Face Push API,例如安装表盘。
- 安装检测:使用 Capabilities 和
如需了解详情,请参阅数据层 API 指南。