原始設備製造商 (OEM) 設計權杖

OEM 設計符記是 Android Automotive OS (AAOS) 實作的Material Design 系統。與行動裝置上使用演算法或使用者選取方法取得權杖值不同,原始設備製造商會指定設計權杖值。設計符記代表小型重複的設計決策,用於形成設計系統的視覺風格,並將靜態值替換成容易理解的名稱。符記類似於 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) 實作項目,則必須將系統設為在應用程式類別後載入共用程式庫。如要這樣做,請在系統的 config_sharedLibrariesLoadedAfterApp 設定中加入程式庫名稱 (com.android.oem.tokens)。如果您有權存取 Google Automotive Services (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 權杖共用程式庫的 Stub 實作項目,則可在日後將完整運作實作項目的更新內容推送至裝置,而無須使用 OTA。

共用程式庫 RRO

雖然 RRO 不必以系統應用程式形式安裝,但這樣做可提供一些可能需要的更新行為。

  • 在使用者未登入時自動更新應用程式。
  • 使用者無法解除安裝 (只能解除安裝更新)。