Wear OS 6 представляет новый API Watch Face Push, который открывает возможности для более продвинутых вариантов использования публикации циферблатов.
Определите, когда следует использовать функцию Watch Face Push
Watch Face Push — это API в Wear OS, позволяющий разработчикам добавлять, обновлять и удалять циферблаты напрямую. Для разработки стандартных циферблатов он не требуется.
Циферблаты, используемые с функцией Watch Face Push, должны быть созданы в формате Watch Face. Это могут быть циферблаты, созданные с помощью Watch Face Designer, Watch Face Studio или любого другого инструмента, создающего циферблаты в формате Watch Face.
Хотя API Watch Face Push потенциально можно использовать несколькими способами, в следующей таблице представлены основные варианты использования:
| Вариант использования | Рекомендуемое решение | Сложность | 
|---|---|---|
| Я хочу создать индивидуальные циферблаты и опубликовать их. | Используйте Watch Face Format напрямую или с помощью таких инструментов, как Watch Face Designer или Watch Face Studio, и публикуйте их в Google Play. | Низкий | 
| Я хочу создать приложение для телефона, которое позволит пользователям выбирать циферблаты из специально подобранной коллекции или разрабатывать и настраивать циферблаты для установки непосредственно на часы Wear OS. | Создайте приложение для часов и телефона, используя API Watch Face Push на часах. | Высокий | 
Цель
Канонический вариант использования Watch Face Push API — создание приложения для магазина . В этом приложении пользователи могут выбирать циферблаты из специальной коллекции на своём телефоне и напрямую управлять их установкой на подключенные часы.
Соображения
Подробную информацию о создании циферблатов см. в руководстве по формату циферблатов : циферблаты, развернутые с помощью Watch Face Push, представляют собой обычные циферблаты формата Watch Face.
При создании циферблата учитывайте следующие моменты.
Имена пакетов
Циферблаты, устанавливаемые с помощью Watch Face Push, должны соответствовать следующим правилам:
 <app name>.watchfacepush.<watchface name>
 ... где <app name> — имя пакета приложения, вызывающего API Watch Face Push.
 Например, для приложения с именем пакета com.example.mymarketplace допустимыми именами пакетов циферблатов являются следующие:
-  com.example.mymarketplace.watchfacepush.watchface1
-  com.example.mymarketplace.watchfacepush.watchface2
-  com.example.mymarketplace.watchfacepush.another_watchface
API отклоняет циферблаты, не соответствующие этому соглашению.
Содержимое упаковки
Система строго контролирует содержимое APK-файлов. Технически возможно создавать APK-файлы в формате Watch Face, содержащие безвредные файлы метаданных и другие артефакты, которые могут быть приняты в Google Play, но не пройдут валидацию Watch Face Push (см. ниже).
Каждый APK-файл циферблата должен содержать только следующие файлы/пути:
-  /AndroidManifest.xml
-  /resources.arsc
-  /res/**
-  /META-INF/**
 Кроме того, файл AndroidManifest.xml должен содержать только следующие теги:
-  <manifest>
-  <uses-feature>
-  <uses-sdk>
-  <application>
-  <property>
-  <meta-data>
 Наконец, пакет должен указывать minSdk не менее 33 , а тег <application> должен указывать атрибут android:hasCode="false" .
Проверка
В отличие от обычных циферблатов, распространяемых через Google Play, приложение Marketplace отвечает за проверку того, что каждый циферблат Watch Face Push правильно сформирован и работоспособен.
Watch Face Push использует следующие проверки для подтверждения качества каждого циферблата:
- Все циферблаты, установленные или обновленные через API Watch Face Push, должны пройти инструмент проверки Watch Face Push.
- Используйте только официальный инструмент проверки для генерации токенов проверки для использования с API.
- На момент запуска проверки инструмент проверки должен быть обновлен.
- Вам не нужно повторно проверять APK, который не менялся. Токены не имеют срока действия, даже если версия используемого инструмента проверки была заменена. - В то же время мы рекомендуем вам время от времени перезапускать валидацию, поскольку валидатор периодически обновляется. 
Запустить валидатор
Валидатор доступен в трех вариантах:
- Инструмент командной строки
- Библиотека для использования с JVM
- Библиотека для использования на Android
Использование валидатора командной строки
- Получите валидатор из репозитория Maven от Google.
- Запустите инструмент следующим образом: - java -jar validator-push-cli-1.0.0-alpha07.jar \ --apk_path=<your watch face>.apk \ --package_name=<your marketplace package name>- В случае успеха выходные данные включают токен проверки , который необходимо предоставить API Watch Face Push при добавлении или обновлении циферблата. - В случае возникновения ошибки выходные данные содержат сведения о том, какая именно проверка не удалась. 
Использование библиотечного валидатора
- Включите репозитории 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-alpha07") // For use on Android implementation("com.google.android.wearable.watchface.validator:validator-push-android:1.0.0-alpha07")
- Запустите валидатор: - 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-файл циферблата, скорее всего, будет передаваться из приложения телефона в приложение часов по Bluetooth, что может быть медленным.
Передача слишком большого APK-файла может занять значительное время, что не только негативно скажется на пользовательском опыте, но и приведет к разрядке аккумулятора.
-  Используйте соответствующие библиотеки, такие как pngquantчтобы свести размеры файлов изображений к минимуму.- Включите это в процесс создания коллекции циферблатов.
- Проверьте, соответствуют ли размеры изображения масштабу, в котором вы его используете.
- Обрезайте изображения соответствующим образом, удаляя окружающий фон.
 
-  Уменьшить размер файлов шрифтов-  Например, если вы используете определённый шрифт только для отображения времени в формате HH:MM, вы можете использовать такой инструмент, какpyftsubset, чтобы ограничить файл шрифта, оставив только необходимые глифы. Это может значительно сократить размер файла шрифта и APK-файла. Подробнее об уменьшении размера файла шрифта и других случаях см. в этой статье блога.
 
-  Например, если вы используете определённый шрифт только для отображения времени в формате 
Дополнительные рекомендации по сохранению минимального размера APK см. в руководстве по оптимизации использования памяти.
подписание APK
Как и в случае с обычным APK-файлом, вам необходимо подписать все свои циферблаты. Создайте ключ, отличный от того, который вы используете в основном приложении, и используйте его для всех своих циферблатов.
Архитектура
Рассмотрим четыре основных компонента системы:
-  Облачное хранилище : в каноническом приложении Marketplace вы создаете и храните циферблаты в облаке, готовые к использованию пользователями. Циферблаты обладают следующими свойствами:- Они предварительно собраны как обычные APK-файлы формата циферблатов.
- Каждый APK содержит только один циферблат на базе формата Watch Face.
- Они проверяются с помощью процесса проверки Watch Face Push и сохраняются вместе с соответствующим токеном проверки.
- При необходимости их можно будет извлечь из вашего мобильного приложения.
 
-  Мобильное приложение : Мобильное приложение — это основной способ взаимодействия пользователей с вашей системой. Оно позволяет им:- Просмотрите и найдите свой каталог циферблатов
- Установить или заменить циферблат на часах
 
-  Приложение для часов : приложение для часов обычно не имеет полноценного пользовательского интерфейса. Оно, в первую очередь, является связующим звеном между приложением для телефона и API Watch Face Push и обладает следующими функциональными возможностями:- Использование API Watch Face Push для установки/обновления или замены циферблатов
- Запрос необходимых разрешений и приглашение пользователя
- Предоставление циферблата по умолчанию
- Предоставление минимального набора циферблатов
 
-  Связь телефона и часов : взаимодействие телефона и приложения для часов имеет решающее значение для успеха всего процесса. Используйте API Wear OS Data Layer, которые позволяют:-  Обнаружение установки : с помощью Capabilities и CapabilityClientприложение на телефоне может обнаружить отсутствие приложения на часах , и наоборот. Затем вы можете запустить Intent в Play Store для установки отсутствующего форм-фактора.
-  Управление состоянием : с помощью DataClientилиMessageClientвы синхронизируете состояние телефона с состоянием часов, например, синхронизируя состояние активного циферблата часов.
-  Передача APK : используя ChannelClientилиMessageClient, отправьте APK с телефона на часы.
-  Удаленный вызов : с помощью Messageclientтелефон может дать часам команду вызвать API Watch Face Push, например, для установки циферблата.
 
-  Обнаружение установки : с помощью Capabilities и 
Более подробную информацию см. в руководстве по API уровня данных .