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 уровня данных .