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 y describe la API que la partición del proveedor proporciona a la partición del sistema (la capa de abstracción de hardware o la interfaz HAL) y también la API que la partición del proveedor requiere de la partición del sistema (el kit de desarrolladores nativos de bajo nivel o la interfaz LLNDK).
El nivel de API del proveedor también se usa para determinar los requisitos de software del proveedor (VSR), que es un conjunto 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 la versión de Android, para determinar el nivel de API del proveedor.
Suspensión del proveedor
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 con la partición. Durante 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 ejecute funciones nuevas si no son compatibles con el nivel de API de la partición del proveedor.
La suspensión de los proveedores solo está disponible si creas un dispositivo compatible con Android.
Determina el nivel de API del proveedor (Android 14-QPR3 y versiones posteriores)
En el caso de 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 versiones independientes, para Android 14-QPR3 y versiones posteriores, el nivel de API del proveedor está completamente separado del nivel de API del SDK. Para garantizar que esta separación sea clara, el formato del nivel de API del proveedor es una fecha con 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 (ro.vendor.api_level
):
Propiedad del sistema | Formato | Descripción | Configuración 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 conjuntos de chips. | El sistema de compilación lo establece 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 solo una función del chipset y la establecen los proveedores de SoC si el chipset del SoC está calificado para la inmovilización del proveedor. Después de la configuración 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 inicialmente. | El OEM establece esta propiedad y nunca la actualiza, incluso después de las actualizaciones del SO. |
ro.vendor.api_level |
AAAAMM | Es el nivel de API del proveedor al que debe cumplir el dispositivo en su totalidad. | 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 configura 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. | La partición del sistema establece esta propiedad. |
La propiedad ro.vendor.api_level
se deriva de una de las siguientes maneras:
Si el chipset calificó para la inmovilizació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á bloqueado por el proveedor, haz lo siguiente:
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 de SDK. Por ejemplo, AVendorSupport_getVendorApiLevelOf(35)
, en el que 35
es el nivel de API del SDK de la versión principal de Android en 2024, muestra 202404
, que es la fecha aproximada de Android 14-QPR3 cuando se estableció el nivel de API actual del proveedor.
Determina 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 de la app y el SO, y se actualiza una vez al año cuando se lanza la nueva plataforma de Android a AOSP.
Android 13 contiene las siguientes propiedades del sistema relacionadas con el nivel de API del proveedor (ro.vendor.api_level
):
Propiedad del sistema | Formato | Descripción | Configuración 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 solo una función del chipset, y los proveedores de SoC o los OEMs no pueden modificarla. Esta propiedad solo se establece para los conjuntos de chips que califican para la inmovilización del proveedor. | El valor se establece mediante la configuración de 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 se establece solo para los conjuntos de chips que califican para la inmovilización del proveedor. Esta propiedad se establece para todos los conjuntos de chips. | 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 inicialmente. | El OEM establece esta propiedad y nunca la actualiza, incluso después de las actualizaciones del SO. |
ro.vendor.api_level |
Entero | Es el nivel de API del proveedor al que debe cumplir el dispositivo en su totalidad. | Se describe después de esta tabla. |
ro.vndk.version |
Entero | Es la versión de VNDK con la que se compila la partición del proveedor. | La partición del sistema establece esta propiedad. |
ro.vendor.build.version.sdk |
Entero | Es el nivel de API del SDK del árbol de origen en el que se compiló la partición del proveedor. | |
ro.vendor.build.version.release |
Entero | Es la versión de la plataforma del árbol de fuentes en el que se compiló la partición del proveedor. | |
ro.vendor.build.version.release_or_codename |
Entero | Es el nombre de código del árbol de origen en el que se compiló la partición del proveedor. |
La propiedad ro.vendor.api_level
se establece automáticamente en el mínimo de ro.board.api_level
(o ro.board.first_api_level
si no se define ro.board.api_level
) y ro.product.first_api_level
.