OEM 設計令牌

OEM 設計令牌是Material Design系統的 Android 汽車作業系統 (AAOS) 實作。與行動裝置上令牌值的演算法或使用者選擇方法不同,OEM 指定設計令牌值。設計標記代表小的、重複的設計決策,這些決策構成了設計系統的視覺風格,並用不言自明的名稱取代靜態值。令牌類似 Material Design 系統定義的令牌。

OEM 令牌庫

OEM 設計令牌透過 OEM 令牌庫引用,該庫由圖 1 所示的三個元件組成。

圖 1. OEM 令牌庫元件。

靜態函式庫

OEM 令牌庫的靜態庫元件有助於存取令牌值,如下所示。

  • 提供 API 來存取令牌的 OEM 值。
  • 允許選擇使用 OEM 值覆寫主題中的令牌引用。

共享庫

共享庫元件負責定義以下內容:

  • 圖書館名稱。
  • 用於啟用 OEM 令牌值的布林選擇。
  • 提供 OEM 令牌值的樣式。

為了適應 OEM 對此共用程式庫元件的所有權(包括 OEM 定義的套件名稱),OEM 可以建立共用程式庫實作的覆寫。

圖 2.覆蓋共享庫實作。

OEM共享庫

共享庫組件的 OEM 覆蓋允許 OEM 擁有該庫,同時透過提供由 OEM 設定包名稱和簽名的方法來保持與 OEM 令牌庫中其他組件的兼容性,同時保持共享庫的實現不被修改。

共享庫的覆蓋範圍可以定義如下:

override_android_app {
    name: "[OEM]-token-shared-lib",
    base: "token-shared-lib",
    package_name: "com.[OEM].sharedlib",
    rename_resources_package: false,
    certificate: …
}

若要設定令牌值,請參閱指定 OEM 令牌值

OEM共享庫定制

為了支援不同的令牌值方案(例如,型號或驅動模式區分),OEM 可以透過使用運行時資源覆寫 (RRO) 定位 OEM 共享庫來提供令牌的動態值。要了解更多信息,請參閱在運行時更改應用程式資源的值

若要設定令牌值,請參閱指定 OEM 令牌值

指定 OEM 令牌值

若要指定標記值,請將樣式OemStyle中的對應屬性設定為所需的值。

<resources>
    <style name="OemStyle">
        <item name="colorPrimary">#B0C5FF</item>
        <item name="colorOnPrimary">#002B76</item>
        <item name="colorPrimaryContainer">#003FA4</item>
        <item name="colorOnPrimaryContainer">#D9E2FF</item>
        …
    </style>
</resources>

選擇 OEM 值

為了使應用程式可以存取 OEM 提供的令牌值,OEM 必須先透過將enable_oem_tokens布林值配置為true來選擇覆蓋預設令牌值。

RRO 代幣價值

與在OemStyle中設定標記值的方式類似,RRO 可用於修改樣式以提供備用標記值。

<resources>
    <style name="OemStyle">
        <item name="com.android.oem.tokens:colorPrimary">#B0C5FF</item>
        <item name="com.android.oem.tokens:colorOnPrimary">#002B76</item>
        <item name="com.android.oem.tokens:colorPrimaryContainer">#003FA4</item>
        <item name="com.android.oem.tokens:colorOnPrimaryContainer">#D9E2FF</item>
        …
    </style>
</resources>

RRO 應透過指定共享庫名稱來設定樣式的共享庫屬性。

配置最後載入

包含令牌共享庫的 OEM 實作的系統必須將系統配置為在應用程式類別之後載入共享庫。為此,請將庫名稱 ( com.android.oem.tokens ) 包含在系統上的config_sharedLibrariesLoadedAfterApp配置中。如果您有權存取 Google 汽車服務 (GAS),則這是一項要求。

<!-- The OEM token shared library will be loaded after app classes -->
<string-array name="config_sharedLibrariesLoadedAfterApp" translatable="false">
    <item>com.android.oem.tokens</item>
</string-array>

最佳實踐

OEM 令牌庫的最佳實務如下所述。

啟用靈活的更新策略

請參閱以下策略,以確保您在更新方面具有靈活性。

OEM共享庫

由於系統共享庫需要預先安裝在系統映像上,因此設備必須附帶該庫,或者必須將庫作為無線 (OTA) 更新的一部分添加(要了解更多信息,請參閱OTA 更新)。然而,在系統映像上包含對 OEM 令牌共享庫的 OEM 覆蓋的存根實現,允許稍後將完整工作實現的更新推送到設備,而無需 OTA。

共享庫 RRO

儘管不需要將 RRO 作為系統應用程式安裝,但這樣做會提供一些可能需要的更新行為。

  • 用戶未登入時自動更新應用程式。
  • 用戶無法卸載(用戶只能卸載更新)。