設備清單開發

在開發和發布新設備時,供應商可以在設備清單 (DM) 中定義和聲明目標 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_MANIFESTtrue

發布新設備

當一個新的裝置被釋放時,其初始目標FCM版需要確定,並在設備清單的“聲明target-level在頂層”屬性<manifest>元素。

例如,搭載 Android 9 的設備的目標 FCM 版本必須等於 3(目前可用的更高版本)。要在設備清單中聲明這一點:

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

升級供應商映像

在為舊設備升級供應商映像時,供應商可以選擇實施新的 HAL 版本並增加目標 FCM 版本。

升級 HAL

在供應商映像升級期間,供應商可以實施新的 HAL 版本,前提是 HAL 名稱、接口名稱和實例名稱相同。例如:

  • 谷歌像素2和像素2 XL與目標FCM第2版,其實施的釋放裝置所需的音頻2.0 HAL android.hardware.audio@2.0::IDeviceFactory/default
  • 對於音頻4.0 HAL了Android 9日發布,谷歌像素2和像素2 XL設備可以利用完整的OTA升級到4.0 HAL,它實現android.hardware.audio@4.0::IDeviceFactory/default
  • 即使compatibility_matrix.2.xml指定音頻2.0止,使用目標FCM 2版供應商圖像上的要求已被鬆開,因為在Android 9框架(FCM第3版)中的功能性方面考慮音頻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 版本。

例如,谷歌像素2和像素2 XL設備有目標FCM第2版。雖然他們確實落實需要一定的HAL compatibility_matrix.3.xml (如音頻4.0,健康2.0等),他們不刪除android.hardware.radio.deprecated@1.0 ,這是在FCM版本3(機器人9)棄用。因此,這些設備無法將目標 FCM 版本升級到 3。

在 OTA 期間強制執行內核要求

從 Android 9 或更低版本更新設備

在搭載 Android 9 或更低版本的設備上,確保精心挑選以下 CL:

這些變化引入構建標誌PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS ,離開了與Android 9或降低發射設備的標誌未設置。

  • 更新到 Android 10 時,運行 Android 9 或更低版本的設備上的 OTA 客戶端不會正確檢查 OTA 包中的內核要求。需要進行這些更改才能從生成的 OTA 包中刪除內核要求。
  • 當更新到Android 11,它是可選的設置PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS構建標誌檢查VINTF兼容性生成更新包時。

有關此版本的標誌的詳細信息,請參閱從Android的10更新設備

從 Android 10 更新設備

Android的10引入了一個新的構建標誌, PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTS 。對於Android的10日啟動裝置,該標誌將自動設置為true 。當該標誌被設置為true ,一個腳本提取內核版本和安裝的內核映像的內核配置。

  • 升級到 Android 10 時,OTA 更新包中包含內核版本和配置。運行 Android 10 的設備上的 OTA 客戶端讀取此信息以檢查兼容性。
  • 更新到 Android 11 時,OTA 包類型會讀取內核版本和配置以檢查兼容性。

如果腳本無法提取此信息您的內核映像,請執行下列操作之一

  • 編輯腳本以支持您的內核格式並為 AOSP 做出貢獻。
  • 設置BOARD_KERNEL_VERSION內核版本和BOARD_KERNEL_CONFIG_FILE到內置內核配置文件的路徑.config 。更新內核映像時,必須更新這兩個變量。
  • 另外,集PRODUCT_OTA_ENFORCE_VINTF_KERNEL_REQUIREMENTSfalse跳過檢查內核要求。不建議這樣做,因為任何不兼容性都是隱藏的,只有在更新後運行 VTS 測試時才會發現。

您可以查看內核信息提取腳本的源代碼extract_kernel.py