裝置資訊清單開發

開發及發布新裝置時,供應商可定義及宣告 目標 FCM 版本。升級供應商映像檔時 對於舊裝置,廠商可以選擇導入新的 HAL 版本, 目標 FCM 版本。

開發新裝置

為新裝置定義目標 FCM 版本時:

  1. 離開DEVICE_MANIFEST_FILEPRODUCT_ENFORCE_VINTF_MANIFEST 個未定義。
  2. 為目標 FCM 版本實作 HAL。
  3. 編寫正確的裝置資訊清單檔案。
  4. 將目標 FCM 版本寫入裝置資訊清單檔案。
  5. 設定 DEVICE_MANIFEST_FILE
  6. PRODUCT_ENFORCE_VINTF_MANIFEST 設為 true

發布新裝置

新裝置發布時,裝置的初始目標 FCM 版本必須 系統在裝置資訊清單中宣告 「target-level」頂層屬性 <manifest> 元素。

舉例來說,搭載 Android 9 的裝置必須 目標 FCM 版本等於 3 (目前可用更高版本)。 如何在裝置資訊清單中宣告這項資訊:

<manifest version="1.0" type="device" target-level="3">
    <!-- ... -->
</manifest>

升級供應商圖片

為舊裝置升級供應商映像檔時,供應商可以選擇 實作新的 HAL 版本,並增加目標 FCM 版本。

升級 HAL

在供應商映像檔升級期間,廠商可導入新的 HAL 版本 HAL 名稱、介面名稱和執行個體名稱相同例如:

  • 發布目標 FCM 版本的 Google Pixel 2 和 Pixel 2 XL 裝置 2. 實作必要的音訊 2.0 HAL android.hardware.audio@2.0::IDeviceFactory/default
  • 適用於透過 Android 發布的音訊 4.0 HAL 9、Google Pixel 2 和 Pixel 2 XL 裝置可以使用 升級至 4.0 HAL 的完整 OTA,以實作 android.hardware.audio@4.0::IDeviceFactory/default
  • 雖然 compatibility_matrix.2.xml 指定音訊 2.0 只使用目標 FCM 版本 2 的供應商映像檔 Android 9 架構 (FCM 版本) 已降低 3) 就功能方面而言,4.0 音訊 4.0 是替換音訊 2.0 HAL。

總結來說,由於 compatibility_matrix.2.xml 需要 音訊 2.0 和 compatibility_matrix.3.xml 需要音訊 4.0、 要求如下:

FCM 版本 (系統) 目標 FCM 版本 (供應商) 需求條件
2 (8.1) 2 (8.1) 音訊 2.0
3 (9) 2 (8.1) 音訊 2.0 或 4.0
3 (9) 3 (9) 音訊 4.0

升級目標 FCM 版本

在供應商映像檔升級期間,供應商也可以增加目標 FCM 版本來指定指定的 FCM 版本;升級後的供應商映像檔可以運作 。如要提高目標 FCM 版本的裝置效能,供應商必須:

  1. 為目標 FCM 版本實作所有必要的全新 HAL 版本。
  2. 在裝置資訊清單檔案中修改 HAL 版本。
  3. 在裝置資訊清單檔案中修改目標 FCM 版本。
  4. 移除已淘汰的 HAL 版本。

舉例來說,Google Pixel 和 Pixel XL 裝置即搭載 Android 7.0 版本 因此目標 FCM 版本必須至少為舊版。不過,裝置 資訊清單宣告目標 FCM 版本 2,因為供應商映像檔 已更新為符合 compatibility_matrix.2.xml

<manifest version="1.0" type="device" target-level="2">

如果供應商未導入所有必要的新版 HAL 版本,或是未移除 已淘汰的 HAL 版本,無法升級目標 FCM 版本。

舉例來說,Google Pixel 2 和 Pixel 2 XL 裝置指定 FCM 第 2 版。 雖然它們確實實作了一些 HAL compatibility_matrix.3.xml (例如音訊 4.0、健康 2.0 等)、 不會移除 android.hardware.radio.deprecated@1.0;也就是 已於 FCM 第 3 版 (Android 9) 淘汰。因此 裝置無法將目標 FCM 版本升級至 3。

OTA 期間的管理核心需求

更新搭載 Android 9 以下版本的裝置

在搭載 Android 9 以下版本的裝置上,請確認下列 CL 已完成 由 Cherry 挑選:

這些變更將導入建構標記 PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS,並將 針對以 Android 9 或 較低

  • 更新至 Android 10 時 搭載 Android 9 裝置的 OTA 用戶端 或以下版本無法正確檢查 OTA 套件中的核心需求。 需進行這些變更,才能捨棄產生的 OTA 的核心需求 套件。
  • 更新至 Android 11 時,可以選擇將 檢查 VINTF 的 PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS 建構旗標 相容性。

如要進一步瞭解此建構旗標,請參閱 從 Android 更新裝置 10

更新搭載 Android 10 的裝置

Android 10 推出了新的建構標記 PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS。裝置 這個旗標 自動設為 true。將旗標設為 true,指令碼會擷取核心版本和核心 從安裝的核心映像檔擷取設定

  • 更新至 Android 10 時,OTA 更新套件包含以下內容: 核心版本與設定執行 Android 裝置的 OTA 用戶端 10 閱讀這項資訊 相容性。
  • 更新至 Android 11 時,OTA 套件類型 會讀取核心版本和設定,以檢查相容性。

如果指令碼無法擷取 為核心映像檔使用這些資訊,請執行 包括:

  • 編輯指令碼來支援您的核心格式,並為 Android 開放原始碼計畫貢獻心力。
  • BOARD_KERNEL_VERSION 設為核心版本 和 BOARD_KERNEL_CONFIG_FILE 設為已建構核心的路徑 設定檔 .config兩個變數都必須更新 更新核心映像檔時
  • 或者,針對 PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSfalse,略過檢查核心需求條件。我們不建議這麼做,因為 系統會隱藏任何不相容的問題,而且只有在更新後執行 VTS 測試時才發現了。

您可以查看核心資訊擷取指令碼的原始碼 extract_kernel.py