Google is committed to advancing racial equity for Black communities. See how.
本頁面由 Cloud Translation API 翻譯而成。
Switch to English

設備清單開發

在開發和發布新設備時,供應商可以在設備清單(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_MANIFEST設置為true

發行新設備

發布新設備時,需要確定其初始目標FCM版本,並在設備清單中將其聲明為頂層<manifest>元素中的“ target-level ”屬性。

例如,使用Android 9啟動的設備必須具有等於3的Target FCM版本(當前可用的更高版本)。要在設備清單中聲明:

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

升級供應商映像

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

升級HAL

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

  • 與Target FCM版本2一起發布的Google Pixel 2和Pixel 2 XL設備實現了必需的音頻2.0 HAL android.hardware.audio@2.0::IDeviceFactory/default
  • 對於隨Android 9一起發布的音頻4.0 HAL,Google Pixel 2和Pixel 2 XL設備可以使用完整的OTA升級到實現android.hardware.audio@4.0::IDeviceFactory/default的4.0 HAL。
  • 即使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版本。

例如,隨著Android 7.0啟動的Google Pixel和Pixel XL設備,因此其Target 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。儘管它們確實實現了compatibility_matrix.3.xml要求的某些HAL(例如音頻4.0,運行狀況2.0等),但它們並未刪除android.hardware.radio.deprecated@1.0 ,在FCM版本3(Android 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_REQUIREMENTS設置為false可跳過檢查內核要求。不建議這樣做,因為隱藏了任何不兼容,並且僅在更新後運行VTS測試時才發現。

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