Tarcze zegarka przesyłane dynamicznym ładowaniem

Wear OS 6 wprowadza nowy interfejs API – Watch Face Push, który stwarza możliwości bardziej zaawansowanego publikowania tarcz zegarka.

Kiedy warto użyć Watch Face Push

Watch Face Push to interfejs API w Wear OS, który umożliwia deweloperowi bezpośrednie dodawanie, aktualizowanie i usuwanie tarcz zegarka. Nie jest on potrzebny do standardowego tworzenia tarcz zegarka.

Tarcze zegarka używane z Watch Face Push muszą być napisane w Formacie tarczy zegarka. Mogą to być tarcze zaprojektowane za pomocą narzędzia Watch Face Designer, Watch Face Studio lub innego narzędzia, które tworzy tarcze zegarka w Formacie tarczy zegarka.

Interfejsu Watch Face Push API można używać na wiele sposobów, ale w tej tabeli znajdziesz główne przypadki użycia:

Przypadek użycia Zalecane rozwiązanie złożoność
Chcę tworzyć i publikować pojedyncze tarcze zegarka. Użyj Formatu tarczy zegarka bezpośrednio lub za pomocą narzędzia takiego jak Watch Face Designer lub Watch Face Studio i opublikuj tarcze w Google Play. Niski
Chcę utworzyć aplikację na telefon, która umożliwia użytkownikom wybieranie tarcz zegarka z wyselekcjonowanej kolekcji lub projektowanie i dostosowywanie tarcz do zainstalowania bezpośrednio na zegarku z Wear OS. Utwórz aplikację na zegarek i telefon, korzystając z interfejsu Watch Face Push API na zegarku. Wysoki

Cel

Kanonowym przypadkiem użycia interfejsu Watch Face Push API jest tworzenie aplikacji marketplace. Dzięki niej użytkownicy mogą wybierać tarcze zegarka z wyselekcjonowanej kolekcji na telefonie i bezpośrednio kontrolować instalację tych tarcz na połączonym zegarku.

Uwagi

Szczegółowe informacje o tworzeniu tarcz zegarka znajdziesz w wytycznych dotyczących Formatu tarczy zegarka: tarcze wdrożone za pomocą Watch Face Push to zwykłe tarcze w Formacie tarczy zegarka.

Podczas tworzenia tarczy zegarka pamiętaj o tych kwestiach.

Nazwy pakietów

Tarcze zegarka instalowane za pomocą Watch Face Push muszą być zgodne z tą konwencją:

<app name>.watchfacepush.<watchface name>

… gdzie <app name> to nazwa pakietu aplikacji wywołującej interfejs Watch Face Push API.

Na przykład w przypadku aplikacji o nazwie pakietu com.example.mymarketplace prawidłowe nazwy pakietów tarcz zegarka to:

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

Interfejs API odrzuca tarcze zegarka, które nie są zgodne z tą konwencją.

Zawartość pakietu

System ściśle egzekwuje zawartość pliku APK. Technicznie możliwe jest tworzenie plików APK w Formacie tarczy zegarka, które zawierają nieszkodliwe pliki metadanych i inne artefakty. Mogą one być akceptowane przez Google Play, ale nie przejdą weryfikacji Watch Face Push (patrz poniżej).

Każdy plik APK tarczy zegarka musi zawierać tylko te pliki lub ścieżki:

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

Ponadto plik AndroidManifest.xml musi zawierać tylko te tagi:

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

Na koniec pakiet musi określać minSdk o wartości co najmniej 33, a <application> tag musi zawierać atrybut android:hasCode="false".

Weryfikacja

W przeciwieństwie do zwykłych tarcz zegarka rozpowszechnianych w Google Play aplikacja z Marketplace jest odpowiedzialna za sprawdzenie, czy każda tarcza Watch Face Push jest prawidłowo sformatowana i wydajna.

Watch Face Push używa tych kontroli weryfikacji, aby sprawdzić jakość każdej tarczy zegarka:

  1. Wszystkie tarcze zegarka zainstalowane lub zaktualizowane za pomocą interfejsu Watch Face Push API muszą przejść weryfikację za pomocą narzędzia do weryfikacji Watch Face Push.
  2. Do generowania tokenów weryfikacji do użycia z interfejsem API używaj tylko oficjalnego narzędzia do weryfikacji.
  3. Podczas przeprowadzania weryfikacji narzędzie do weryfikacji musi być aktualne.
  4. Nie musisz ponownie weryfikować pliku APK, który się nie zmienił. Tokeny nie wygasają, nawet jeśli używana wersja narzędzia do weryfikacji zostanie zastąpiona.

    Zalecamy jednak od czasu do czasu ponowne uruchamianie weryfikacji, ponieważ walidator jest okresowo aktualizowany.

Uruchamianie walidatora

Walidator jest dostępny w 3 postaciach:

  • Narzędzie interfejsu wiersza poleceń
  • Biblioteka do użycia z JVM
  • Biblioteka do użycia na Androidzie

Używanie walidatora wiersza poleceń

  1. Pobierz walidator z repozytorium Maven Google's Maven repository.
  2. Uruchom narzędzie w ten sposób:

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

    Jeśli operacja się powiedzie, dane wyjściowe będą zawierać token weryfikacji, który musisz podać w interfejsie Watch Face Push API podczas dodawania lub aktualizowania tarczy zegarka.

    Jeśli wystąpi błąd, dane wyjściowe będą zawierać szczegółowe informacje o tym, która kontrola się nie powiodła.

Używanie walidatora biblioteki

  1. Dołącz repozytoria Google i Jitpack. Oba są wymagane do korzystania z biblioteki walidatora.

    repositories {
        ...
        google()
        maven {
            url = uri("https://jitpack.io")
            content {
                includeGroup("com.github.xgouchet")
            }
        }
    }
    
  2. Dołącz zależność walidatora do projektu:

    // 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. Uruchom walidator:

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()}") // ... } }

Przykład użycia tej biblioteki znajdziesz w przykładzie w GitHubie. Zapoznaj się też z biblioteką Portable Asset Compiler Kit (Pack), która jest przydatna do tworzenia plików APK na urządzeniu do użycia z walidatorem opartym na Androidzie.

Rozmiar pliku APK

W przypadku tarcz zegarka Watch Face Push szczególnie dbaj o minimalizowanie rozmiaru pliku APK. Plik APK tarczy zegarka jest prawdopodobnie przesyłany z aplikacji na telefon do aplikacji na zegarek przez Bluetooth, co może być powolne.

Zbyt duży plik APK może być przesyłany przez długi czas, co pogarsza komfort użytkowania i powoduje szybsze rozładowywanie się baterii.

  • Aby zminimalizować rozmiar plików graficznych, używaj odpowiednich bibliotek, np. pngquant aby zachować minimalny rozmiar plików graficznych
    • Uwzględnij to w procesie kompilacji kolekcji tarcz zegarka.
    • Sprawdź, czy wymiary obrazu są odpowiednie do skali, w jakiej go używasz.
    • Przytnij obrazy, aby usunąć otaczające tło.
  • Zmniejsz rozmiar plików czcionek.

Więcej sugestii dotyczących minimalizowania rozmiaru pliku APK znajdziesz w wytycznych dotyczących optymalizacji wykorzystania pamięci.

Podpisywanie pliku APK

Podpisz wszystkie tarcze zegarka, tak jak zwykły plik APK. Utwórz inny klucz niż ten, którego używasz w głównej aplikacji, i używaj go do wszystkich tarcz zegarka.

Architektura

Weź pod uwagę 4 główne komponenty systemu:

  1. Miejsce na dane w chmurze: w kanonicznej aplikacji z Marketplace tworzysz i przechowujesz tarcze zegarka w chmurze, aby użytkownicy mogli z nich korzystać. Tarcze zegarka mają te właściwości:
    1. Są wstępnie utworzone jako zwykłe pliki APK w Formacie tarczy zegarka.
    2. Każdy plik APK zawiera tylko 1 tarczę zegarka w Formacie tarczy zegarka.
    3. Są weryfikowane za pomocą procesu weryfikacji Watch Face Push i przechowywane z powiązanym tokenem weryfikacji.
    4. Aplikacja na telefon może je pobierać w razie potrzeby.
  2. Aplikacja na telefon: aplikacja na telefon to główny sposób, w jaki użytkownicy wchodzą w interakcję z Twoim systemem. Umożliwia ona:
    1. przeglądanie i wyszukiwanie w katalogu tarcz zegarka;
    2. instalowanie lub zastępowanie tarczy zegarka na zegarku.
  3. Aplikacja na zegarek: aplikacja na zegarek zwykle nie ma znaczącego interfejsu użytkownika. Jest to przede wszystkim pomost między aplikacją na telefon a interfejsami Watch Face Push API, który ma te funkcje:
    1. instalowanie, aktualizowanie lub zastępowanie tarcz zegarka za pomocą interfejsu Watch Face Push API;
    2. prośba o niezbędne uprawnienia i wyświetlanie prośby użytkownikowi;
    3. udostępnianie domyślnej tarczy zegarka;
    4. udostępnianie minimalnej pamięci podręcznej tarcz zegarka.
  4. Komunikacja między telefonem a zegarkiem: komunikacja między aplikacją na telefon a aplikacją na zegarek ma kluczowe znaczenie dla sukcesu całego rozwiązania. Używaj interfejsów Wear OS Data Layer API, które umożliwiają:
    1. Wykrywanie instalacji: za pomocą interfejsów Capabilities i CapabilityClient aplikacja na telefon może wykryć brak aplikacji na zegarek i odwrotnie. Możesz wtedy uruchomić intencję w Sklepie Play, aby zainstalować brakujący format.
    2. Zarządzanie stanem: za pomocą interfejsu DataClient lub MessageClient synchronizujesz stan telefonu ze stanem zegarka, np. synchronizujesz stan aktywnej tarczy zegarka.
    3. Przesyłanie pliku APK: za pomocą interfejsu ChannelClient lub MessageClient wysyłaj pliki APK z telefonu na zegarek.
    4. Zdalne wywoływanie: za pomocą Messageclient telefon może instruować zegarek, aby wywoływał interfejs Watch Face Push API, np. w celu zainstalowania tarczy zegarka.

Więcej informacji znajdziesz w wytycznych dotyczących interfejsu Data Layer API.