El nivel de API del proveedor hace referencia a la versión de la interfaz que admite la partición del proveedor. La interfaz es bidireccional: describe la API que la partición del proveedor proporciona a la partición del sistema (la interfaz de la capa de abstracción de hardware o HAL) y también la API que la partición del proveedor requiere de la partición del sistema (la interfaz del kit de desarrollo nativo de bajo nivel o LLNDK).
El nivel de API del proveedor también se usa para determinar los requisitos de software del proveedor (VSR), que son una colección de requisitos funcionales y no funcionales que debe satisfacer el software en la partición del proveedor.
En el resto de esta página, se explica cómo se usan las propiedades del sistema, según tu versión de Android, para determinar el nivel de API del proveedor.
Congelamiento de proveedores
Android permite que un proveedor inmovilice la partición del proveedor en una versión específica del VSR. El conjunto de funciones que Android espera de la partición del proveedor se determina según el nivel de API del proveedor asociado a la partición del proveedor. En el tiempo de ejecución, el comportamiento del software que se ejecuta en la partición del sistema se ajusta para adaptarse al nivel de API del proveedor de la partición del proveedor. Por ejemplo, es posible que el software de la partición del sistema no utilice las funciones nuevas si no son compatibles con el nivel de API de la partición del proveedor.
El bloqueo de proveedores solo está disponible si creas un dispositivo compatible con Android.
Cómo determinar el nivel de API del proveedor (Android 14-QPR3 y versiones posteriores)
En Android 14-QPR3 y versiones posteriores, el nivel de API del proveedor se lanza por separado, lo que significa que el nivel de API del SDK y el nivel de API del proveedor no están sincronizados.
Debido a los programas de lanzamiento independientes, para Android 14-QPR3 y versiones posteriores, el nivel de API del proveedor está completamente desacoplado del nivel de API del SDK. Para garantizar que este desacoplamiento sea claro, el formato del nivel de API del proveedor es una fecha con el formato AAAAMM (año y mes), mientras que el nivel del SDK es un número entero.
Android 14-QPR3 y versiones posteriores contienen las siguientes propiedades del sistema relacionadas con el nivel de API del proveedor:
Propiedad del sistema | Formato | Descripción | Ajuste inicial |
---|---|---|---|
ro.board.api_level |
AAAAMM | Es el nivel de API del proveedor que admite el software de un chipset. Esta propiedad se establece para todos los chipsets. | El sistema de compilación lo configura automáticamente. |
ro.board.first_api_level |
AAAAMM | Es el nivel de API del proveedor con el que se lanzó por primera vez el software de un chipset. Esta propiedad es una función solo del chipset y la establecen los proveedores de SoC si el chipset del SoC está calificado para la congelación del proveedor. Después del ajuste inicial, no se debe modificar. | Los proveedores de SoC establecen este parámetro de configuración con BOARD_SHIPPING_API_LEVEL . |
ro.product.first_api_level |
Entero | Es el nivel de API del SDK con el que se inicia el dispositivo. | El OEM establece esta propiedad y nunca se actualiza, incluso después de las actualizaciones del SO. |
ro.vendor.api_level |
AAAAMM | Es el nivel de API del proveedor que corresponde a ro.product.first_api_level . Establecemos ro.vendor.api_level en el valor de ro.board.api_level cuando ro.board.api_level es inferior al nivel de API del proveedor de ro.product.first_api_level solo si el chipset del SoC está calificado para la congelación del proveedor. |
Se describe después de esta tabla. |
ro.board.api_frozen |
boolean | Esta propiedad se establece en true si el nivel de API del proveedor que representa ro.board.api_level está finalizado. |
Si no se establece esta propiedad, el valor predeterminado es false . |
ro.llndk.api_level |
AAAAMM | Es el nivel de API del proveedor en formato AAAAMM que proporciona el LLNDK actual en la partición del sistema. El LLNDK es retrocompatible, por lo que cualquier imagen del proveedor que sea inferior o igual a este nivel de API se puede escribir en la memoria flash con esta imagen del sistema. | Esta propiedad se configura en la partición del sistema. |
La propiedad ro.vendor.api_level
se deriva de una de las dos siguientes maneras:
Si el chipset se calificó para la congelación del proveedor, haz lo siguiente:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
Si el chipset no está en la etapa de congelamiento del proveedor:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
El método AVendorSupport_getVendorApiLevelOf()
determina el nivel de API del proveedor correspondiente a partir de un nivel de API del SDK. Por ejemplo, AVendorSupport_getVendorApiLevelOf(35)
, donde 35
es el nivel de API del SDK de la versión principal de Android en 2024, devuelve 202404
, que es la fecha aproximada de Android 14-QPR3 cuando se estableció el nivel de API del proveedor actual.
Cómo determinar el nivel de API del proveedor (Android 13)
El nivel de API del proveedor sigue el nivel de API del SDK, que es para la interfaz del SO de la app y se actualiza una vez al año cuando se lanza la nueva plataforma de Android en AOSP.
Android 13 contiene las siguientes propiedades del sistema relacionadas con el nivel de API del proveedor:
Propiedad del sistema | Formato | Descripción | Ajuste inicial |
---|---|---|---|
ro.board.first_api_level |
Entero | Es el nivel de API del proveedor con el que se lanzó por primera vez el software de un chipset. Esta es una función exclusiva del chipset y no la pueden modificar los proveedores de SoC ni los OEM. Esta propiedad solo se establece para los chipsets que cumplen con los requisitos para la congelación del proveedor. | El valor se establece configurando BOARD_SHIPPING_API_LEVEL en el archivo device.mk . |
ro.board.api_level |
Entero | Es el nivel de API del proveedor que admite el software de un chipset. Esta propiedad solo se establece para los chipsets que cumplen con los requisitos para la congelación del proveedor. | Inicialmente, el sistema de compilación establece el valor de esta propiedad en el mismo valor que ro.board.first_api_level , pero se puede actualizar si se actualiza la partición del proveedor. |
ro.product.first_api_level |
Entero | Es el nivel de API del SDK con el que se inicia el dispositivo. | El OEM establece esta propiedad y nunca se actualiza, incluso después de las actualizaciones del SO. |
ro.vendor.api_level |
Entero | Es igual a la descripción del nivel de API del proveedor en la tabla anterior. | |
ro.vndk.version |
Entero | Es la versión del VNDK con la que se compila la partición del proveedor. | Esta propiedad se configura en la partición del proveedor. |
ro.vendor.build.version.sdk |
Entero | Nivel de API del SDK del árbol de origen en el que se compiló la partición del proveedor. |