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 不必以系統應用程式形式安裝,但這樣做可提供一些可能需要的更新行為。
- 在使用者未登入時自動更新應用程式。
- 使用者無法解除安裝 (只能解除安裝更新)。