錶面推播

Wear OS 6 推出全新的 Watch Face Push API,為更進階的錶面發布用途創造更多機會。

判斷使用 Watch Face Push 的時機

錶面推送是 Wear OS 的 API,可讓開發人員直接新增、更新或移除錶面。開發標準錶面時不需要這個檔案。

透過 Watch Face Push 使用的錶面必須以錶面格式編寫。包括使用錶面設計工具、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 安裝的錶面必須符合下列慣例:

<app name>.watchfacepush.<watchface name>

... 其中 <app name> 是呼叫 Watch Face Push 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>

最後,套件必須指定至少 33minSdk,且 <application> 標記必須指定 android:hasCode="false" 屬性。

驗證

與透過 Google Play 發布的一般錶面不同,Marketplace 應用程式會負責驗證每個 Watch Face Push 錶面是否格式正確且效能良好。

錶面推送功能會使用下列驗證檢查,確認每個錶面的品質:

  1. 透過 Watch Face Push API 安裝或更新的所有錶面,都必須通過 Watch Face Push 驗證工具。
  2. 請務必使用官方驗證工具產生驗證權杖,以便搭配 API 使用。
  3. 執行驗證時,驗證工具必須是最新版本。
  4. 如果 APK 沒有變更,就不需要重新驗證。即使使用的驗證工具版本已過時,權杖也不會過期。

    同時,我們建議您不時重新執行驗證,因為驗證器會定期更新。

執行驗證工具

驗證工具提供三種形式:

  • CLI 工具
  • 適用於 JVM 的程式庫
  • 適用於 Android 的程式庫

使用指令列驗證工具

  1. 從 Google 的 Maven 存放區取得驗證器。
  2. 請按照下列步驟執行工具:

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

    如果成功,輸出內容會包含驗證權杖,新增或更新錶面時,您必須將這個權杖提供給 Watch Face Push API。

    如果發生錯誤,輸出內容會詳細說明哪個特定檢查失敗。

使用程式庫驗證工具

  1. 加入 Google 和 Jitpack 存放區。如要使用驗證器程式庫,這兩者都必須提供。

    repositories {
        ...
        google()
        maven {
            url = uri("https://jitpack.io")
            content {
                includeGroup("com.github.xgouchet")
            }
        }
    }
    
  2. 在專案中加入驗證器依附元件:

    // 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")
    
    
  3. 執行驗證工具:

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 範例。另請參閱「可攜式資產編譯器套件 (Pack)」程式庫,這項工具可用於在裝置上建構 APK,以便搭配 Android 型驗證器使用。

APK 尺寸

使用 Watch Face Push 錶面時,請特別注意縮減 APK 大小:錶面 APK 可能會透過藍牙從手機應用程式傳輸到手錶應用程式,這可能需要較長時間。

APK 過大可能會耗費大量傳輸時間,導致使用者體驗不佳,且耗用大量電量。

  • 使用適當的程式庫 (例如 pngquant),盡可能縮減圖片檔案大小。
    • 在錶面集合建構程序中加入這項設定
    • 確認圖片尺寸適合您使用的比例。
    • 適當裁剪圖片,移除周圍的背景。
  • 縮減字型檔案大小

如需進一步瞭解如何盡量縮小 APK 大小,請參閱記憶體用量最佳化指南

APK 簽署

與一般 APK 相同,您必須簽署所有錶面。建立與主要應用程式所用金鑰不同的金鑰,並將該金鑰用於所有錶面。

建築

請考慮系統的四個主要元件:

  1. 雲端儲存空間:在標準的 Marketplace 應用程式中,您可以在雲端建構及儲存錶面,供使用者使用。錶面具有下列屬性:
    1. 這些是預先建構的標準錶面格式 APK。
    2. 每個 APK 只包含一個以錶面格式為基礎的錶面。
    3. 這些檔案會透過錶面推送驗證程序進行驗證,並與相關聯的驗證權杖一併儲存。
    4. 手機應用程式可視需要擷取這些資訊。
  2. 電話應用程式:使用者與系統互動的主要方式是透過電話應用程式。他們可以:
    1. 瀏覽及搜尋錶面目錄
    2. 在手錶上安裝或更換錶面
  3. 手錶應用程式:手錶應用程式通常不會有重要的使用者介面。這項服務主要是手機應用程式與錶面推送 API 之間的橋樑,具備下列功能:
    1. 使用 Watch Face Push API 安裝/更新或更換錶面
    2. 要求必要權限並提示使用者
    3. 提供預設錶面
    4. 提供最少的錶面快取
  4. 手機與手錶之間的通訊:手機和手錶應用程式之間的通訊是整體體驗能否成功的關鍵。使用 Wear OS 資料層 API,可執行下列操作:
    1. 安裝偵測:手機應用程式可以使用 Capabilities 和 CapabilityClient偵測手錶應用程式是否不存在,反之亦然。然後啟動前往 Play 商店的意圖,安裝缺少的板型規格。
    2. 狀態管理:使用 DataClientMessageClient 讓手機與手錶狀態保持同步,例如同步處理使用中的錶面狀態。
    3. 傳輸 APK:使用 ChannelClientMessageClient,將 APK 從手機傳送至手錶
    4. 遠端叫用:使用 Messageclient,手機可以指示手錶呼叫 Watch Face Push API,例如安裝錶面。

詳情請參閱資料層 API 指南