供應商 API 級別

供應商 API 級別是指供應商分割區支援的介面版本。這個介面是雙向的,可說明供應商分割區提供給系統分割區的 API (硬體抽象層或 HAL 介面),以及供應商分割區向系統分割區要求的 API (低階原生開發人員套件或 LLNDK 介面)。

供應商 API 層級也用於判斷供應商軟體需求 (VSR),這是供應商磁碟分割區中的軟體必須滿足的功能性和非功能性需求集合。

本頁面其餘內容將說明系統屬性如何根據 Android 版本,判斷供應商 API 級別。

暫停供應商

Android 可讓供應商將供應商分區凍結在特定 VSR 版本。Android 預期供應商分割區提供的功能集,取決於與供應商分割區相關聯的供應商 API 級別。在執行階段,系統磁碟分割區中執行的軟體行為會進行調整,以配合供應商磁碟分割區的供應商 API 級別。舉例來說,如果供應商分割區的 API 級別不支援新功能,系統分割區中的軟體可能就無法使用這些功能。

只有在建立與 Android 相容的裝置時,才能使用供應商凍結功能。

判斷供應商 API 級別 (Android 14-QPR3 以上版本)

Android 14-QPR3 以上版本會分開發布供應商 API 級別,因此 SDK API 級別和供應商 API 級別會不同步。

由於發布時程不同,在 Android 14-QPR3 和後續版本中,供應商 API 級別與 SDK API 級別完全分離。為確保清楚區分,供應商 API 級別的格式為 YYYYMM (年和月),而 SDK 級別為整數。

Android 14-QPR3 以上版本包含下列與供應商 API 級別相關的系統屬性:

系統屬性 格式 說明 初始設定
ro.board.api_level YYYYMM 晶片組軟體支援的供應商 API 級別。這項屬性適用於所有晶片組。 建構系統會自動設定這個值。
ro.board.first_api_level YYYYMM 晶片組軟體首次發布時的供應商 API 級別。這項屬性僅與晶片組相關,如果 SoC 晶片組符合供應商凍結資格,則由 SoC 供應商設定。初始設定後不得修改。 SoC 供應商會使用 BOARD_SHIPPING_API_LEVEL 設定這項設定。
ro.product.first_api_level 整數 裝置最初啟動時的 SDK API 級別。 這項屬性由原始設備製造商設定,之後不會更新,即使升級 OS 也不會變動。
ro.vendor.api_level YYYYMM ro.product.first_api_level 對應的供應商 API 級別。只有在 SoC 晶片組符合供應商凍結資格時,我們才會在 ro.board.api_level 小於供應商 API 級別 ro.product.first_api_level 時,將 ro.vendor.api_level 設為 ro.board.api_level 的值。 詳情請參閱下表。
ro.board.api_frozen 布林值 如果 ro.board.api_level 代表的供應商 API 級別已完成,這項屬性會設為 true 如未設定這項屬性,系統會預設為 false
ro.llndk.api_level YYYYMM 系統分區中目前 LLNDK 提供的供應商 API 級別,格式為 YYYYMM。LLNDK 可回溯相容,因此任何小於或等於這個 API 級別的供應商映像檔,都可以使用這個系統映像檔刷寫。 這項屬性是在系統分區中設定。

ro.vendor.api_level 屬性可透過下列兩種方式之一衍生:

  • 如果晶片組已通過供應商凍結資格:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • 如果晶片組未處於供應商凍結狀態:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

AVendorSupport_getVendorApiLevelOf() 方法會根據 SDK API 級別判斷對應的供應商 API 級別。舉例來說,如果 AVendorSupport_getVendorApiLevelOf(35) 是 2024 年主要 Android 版本的 SDK API 級別,則 AVendorSupport_getVendorApiLevelOf(35) 會傳回 202404,這是指設定目前供應商 API 級別時,Android 14-QPR3 的大致日期。35

判斷供應商 API 級別 (Android 13)

供應商 API 級別會採用 SDK API 級別,這是應用程式與 OS 之間的介面,每年會在 Android 平台發布至 AOSP 時更新。

Android 13 包含下列與供應商 API 級別相關的系統屬性:

系統屬性 格式 說明 初始設定
ro.board.first_api_level 整數 晶片組軟體首次發布時的供應商 API 級別。這項功能僅適用於晶片組,SoC 供應商或原始設備製造商 (OEM) 都無法修改。只有符合供應商凍結資格的晶片組才會設定這個屬性 device.mk 檔案中設定 BOARD_SHIPPING_API_LEVEL,即可建立值。
ro.board.api_level 整數 晶片組軟體支援的供應商 API 級別。這項屬性僅適用於符合供應商凍結資格的晶片組。 這個屬性的值最初是由建構系統設為與 ro.board.first_api_level 相同的值,但如果升級供應商分割區,這個值就會更新。
ro.product.first_api_level 整數 裝置最初啟動時的 SDK API 級別。 這項屬性由原始設備製造商設定,之後不會更新,即使升級 OS 也不會變動。
ro.vendor.api_level 整數 與上表中的供應商 API 級別說明相同。
ro.vndk.version 整數 供應商分區建構時使用的 VNDK 版本。 這項屬性是在供應商分割區中設定。
ro.vendor.build.version.sdk 整數 建構供應商分割區的來源樹狀結構 SDK API 級別。