供應商 API 級別是指供應商分區支援的介面版本。這個介面是雙向的,可說明供應商分區提供給系統分區 (硬體抽象層或 HAL 介面) 的 API,以及供應商分區從系統分區 (低階原生開發人員套件或 LLNDK 介面) 所需的 API。
供應商 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.vendor.api_level
) 相關的系統屬性:
系統屬性 | 格式 | 說明 | 初始設定 |
---|---|---|---|
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 級別。 | 這項屬性是由原始設備製造商 (OEM) 設定,之後就不會更新,即使 OS 升級也不例外。 |
ro.vendor.api_level |
YYYYMM | 裝置整體必須符合的供應商 API 級別。 | 請參閱下表後方的說明。 |
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)
,其中 35
是 2024 年主要 Android 版本的 SDK API 級別,會傳回 202404
,這是設定目前供應商 API 級別時,Android 14-QPR3 的大致日期。
判斷供應商 API 級別 (Android 13)
供應商 API 級別會遵循 SDK API 級別,後者適用於應用程式-作業系統介面,並在新的 Android 平台發布至 AOSP 時每年更新一次。
Android 13 包含下列與供應商 API 級別 (ro.vendor.api_level
) 相關的系統屬性:
系統屬性 | 格式 | 說明 | 初始設定 |
---|---|---|---|
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 級別。 | 這項屬性是由原始設備製造商 (OEM) 設定,之後就不會更新,即使 OS 升級也不例外。 |
ro.vendor.api_level |
整數 | 裝置整體必須符合的供應商 API 級別。 | 請參閱下表後方的說明。 |
ro.vndk.version |
整數 | 供應商分區的 VNDK 建構版本。 | 這項屬性是由系統分區設定。 |
ro.vendor.build.version.sdk |
整數 | 建構供應商分區的來源樹狀結構 SDK API 級別。 | |
ro.vendor.build.version.release |
整數 | 建構供應商分區時所用的來源樹狀結構平台版本。 | |
ro.vendor.build.version.release_or_codename |
整數 | 供應商分區建構來源樹狀結構的代碼名稱。 |
ro.vendor.api_level
屬性會自動設為 ro.board.api_level
和 ro.product.first_api_level
的最低值 (如果未定義 ro.board.api_level
,則為 ro.board.first_api_level
)。