Wear OS 6 引入了一个新的 API,即“表盘推送”(Watch Face Push),为更高级的表盘发布用例创造了机会。
确定何时使用表盘推送
表盘推送是 Wear OS 上的一个 API,允许开发者直接添加、更新或移除表盘。标准表盘开发不需要它。
与表盘推送一起使用的表盘必须使用表盘格式编写。这可以包括使用 Watch Face Studio 或任何其他生成使用表盘格式的表盘的工具设计的表盘。
虽然表盘推送 API 可以有多种用途,但下表应作为主要用例的指南
用例 | 推荐的解决方案 | 复杂程度 |
---|---|---|
我想创建并发布单个表盘。 | 直接或通过 Watch Face Studio 等工具使用表盘格式,并将其发布到 Google Play。 | 低 |
我想创建一个手机应用,允许用户从精选的表盘合集中选择表盘,或者设计和自定义表盘,然后直接安装到他们的 Wear OS 手表上。 | 为手表和手机创建应用,并在手表上使用表盘推送 API。 | 高 |
目的
表盘推送 API 的典型用例是创建应用商店应用。通过此应用,用户可以在手机上从精选的表盘合集中选择表盘,并直接控制将这些表盘安装到他们连接的手表上。
注意事项
有关构建表盘的详细信息,请参阅表盘格式指南:使用表盘推送部署的表盘是常规的表盘格式表盘。
构建表盘时,请注意以下事项。
软件包名称
使用表盘推送安装的表盘必须符合以下约定
<app name>.watchfacepush.<watchface name>
…其中 <app name>
是调用表盘推送 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 接受,但无法通过表盘推送验证(见下文)。
每个表盘 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 分发的常规表盘不同,表盘推送的检查(用于确保每个表盘格式良好且性能良好)由应用商店应用负责。
Google Play 使用以下验证检查来验证每个使用表盘推送的表盘的质量
- 通过表盘推送 API 安装或更新的所有表盘都必须通过表盘推送验证工具的检查。
- 只有官方验证工具才能用于生成供 API 使用的验证令牌。
- 所使用的验证工具在运行验证时必须是最新的。
无需重新验证未更改的 APK。令牌不会过期,即使所使用的验证工具版本已被取代。
同时,我们建议您时不时地重新运行验证,因为验证器会定期更新。
运行验证器
要在表盘 APK 上运行验证器,请按照以下步骤操作
- 从 Google 的Maven 代码库获取验证器。
按如下方式运行该工具
java -jar validator-push-cli-1.0.0-alpha02.jar \ --apk_path=youwatchface.apk \ --package_name=<your marketplace package name>
如果成功,输出中将包含一个验证令牌,您在添加或更新表盘时必须将其提供给表盘推送 API。
如果发生错误,输出中将包含有关哪个特定检查失败的详细信息。
有关将验证器 CLI 工具集成到 Gradle 构建中的示例,请参阅 GitHub 上的表盘推送示例。
APK 大小
使用表盘推送的表盘应特别注意将 APK 大小保持在最小:表盘 APK 很可能通过蓝牙从手机应用传输到手表应用,这可能会很慢。
过大的 APK 可能需要相当长的时间传输,这既影响用户体验又消耗电池电量。
- 使用合适的库,例如
pngquant
,将图像文件大小保持在最小- 将其包含在您的表盘合集构建过程中
- 检查图像尺寸是否适合其将要使用的比例。
- 确保图像经过适当裁剪,以移除任何周围的背景。
- 减小字体文件的大小
- 例如,如果仅使用特定字体来显示时间,格式为
HH:MM
,您可以使用pyftsubset
等工具将字体文件限制为仅包含必要的字形。这可以显著减小生成的字体文件和 APK 的大小。有关最小化字体文件大小的详细信息,请参阅此博客文章,以了解其他情况。
- 例如,如果仅使用特定字体来显示时间,格式为
请参阅优化内存使用指南,了解关于将 APK 大小保持在最小的更多建议。
APK 签名
作为常规 APK,您的所有表盘都需要签名。为主应用使用不同的密钥,并为所有表盘使用不同的密钥。
架构
考虑系统的三个主要组件
- 基于云的存储:在典型的应用商店应用中,您的表盘在云端构建和存储,供用户使用。这些表盘是
- 预构建为常规表盘格式 APK
- 每个只包含一个基于表盘格式的表盘
- 已使用表盘推送验证过程进行验证,并与关联的验证令牌一起存储。
- 可供您的手机应用在需要时检索。
- 手机应用:手机应用是用户与您的系统互动的主要方式。它允许用户
- 浏览和搜索您的表盘目录
- 在手表上安装或替换表盘
- 手表应用:手表应用通常没有显著的用户界面。它主要是手机应用和表盘推送 API 之间的桥梁,具有以下功能
- 使用表盘推送 API 安装/更新或替换表盘
- 请求必要的权限并提示用户
- 提供默认表盘
- 提供最少的表盘缓存
- 手机-手表通信:手机和手表应用之间的通信对于整体体验的成功至关重要。使用 Wear OS 数据层 API,可实现
- 安装检测:使用 Capabilities 和
CapabilityClient
,手机应用可以检测手表应用是否缺失,反之亦然。之后可以向 Play 商店启动 intent 来安装缺失的外形尺寸。 - 状态管理:使用
DataClient
或MessageClient
,手机可以与手表的当前状态保持同步,例如,确保手机知道设置了哪个表盘。 - APK 传输:使用
ChannelClient
或MessageClient
,可以将 APK 从手机发送到手表 - 远程调用:使用
MessageClient
,手机可以指示手表调用表盘推送 API,例如安装表盘。
- 安装检测:使用 Capabilities 和
有关详细信息,请参阅数据层 API 指南。