供应商 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 级别。 此属性由 OEM 设置,之后即使在操作系统升级后也绝不会更新。
ro.vendor.api_level YYYYMM ro.product.first_api_level 对应的供应商 API 级别。当 ro.board.api_level 小于 ro.product.first_api_level 的供应商 API 级别时,我们仅在 SoC 芯片组符合供应商冻结条件时才将 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 提供的 YYYYMM 格式的供应商 API 级别。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.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 设置,之后即使在操作系统升级后也绝不会更新。
ro.vendor.api_level 整数 与上表中的供应商 API 级别说明相同。
ro.vndk.version 整数 供应商分区构建所依据的 VNDK 版本。 此属性在供应商分区中设置。
ro.vendor.build.version.sdk 整数 供应商分区构建所在的源代码树的 SDK API 级别。