Nivel de API del proveedor

El nivel de API del proveedor se refiere 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 capa de abstracción de hardware o 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 interfaz LLNDK).

El nivel de API del proveedor también se usa para determinar los requisitos de software del proveedor (VSR), que es 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.

Inmovilización del proveedor

Android permite que un proveedor congele 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 está determinado por el nivel de API del proveedor asociado con 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 use funciones nuevas si no son compatibles con el nivel de API de la partición del proveedor.

El congelamiento del proveedor 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 separados, 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 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 Configuración inicial
ro.board.api_level AAAAMM 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 establece automáticamente.
ro.board.first_api_level AAAAMM 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 del chipset únicamente y los proveedores de SoC la establecen si el chipset de SoC está calificado para el congelamiento del proveedor. Después de la configuración inicial, esta propiedad debe considerarse final y no modificarse. Si bien se desaconseja, se puede permitir una actualización en casos excepcionales y poco frecuentes con una nueva calificación de congelamiento del proveedor. Los proveedores de SoC establecen esta configuración con BOARD_SHIPPING_API_LEVEL.
ro.product.first_api_level Número entero El nivel de API del SDK con el que se lanza inicialmente el dispositivo. El OEM establece esta propiedad y nunca se actualiza, incluso después de las actualizaciones del SO.
ro.vendor.api_level AAAAMM 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 de SoC está calificado para el congelamiento del proveedor. Se describe después de esta tabla.
ro.board.api_frozen booleano Esta propiedad se establece en true si se finaliza el nivel de API del proveedor que representa ro.board.api_level. Si no se establece esta propiedad, se establece de forma predeterminada en false.
ro.llndk.api_level AAAAMM El nivel de API del proveedor del formato AAAAMM que proporciona el LLNDK actual en la partición del sistema. El LLNDK es compatible con versiones anteriores, por lo que cualquier imagen del proveedor que sea inferior o igual a este nivel de API se puede flashear con esta imagen del sistema. Esta propiedad se establece en la partición del sistema.

La propiedad ro.vendor.api_level se deriva de una de las siguientes dos maneras:

  • Si el chipset está calificado para el congelamiento del proveedor:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • Si el chipset no está en 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, muestra 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 de SO de la app 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:

Propiedad del sistema Formato Descripción Configuración inicial
ro.board.first_api_level Número entero El nivel de API del proveedor con el que se lanzó por primera vez el software de un chipset. Esta es una función del chipset únicamente y no puede ser modificada por los proveedores de SoC ni los OEMs. Esta propiedad se establece solo para los chipsets que cumplen con los requisitos para el congelamiento del proveedor. El valor se establece configurando BOARD_SHIPPING_API_LEVEL en el archivo device.mk.
ro.board.api_level Número entero El nivel de API del proveedor que admite el software de un chipset. Esta propiedad se establece solo para los chipsets que cumplen con los requisitos para el congelamiento 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 Número entero El nivel de API del SDK con el que se lanza inicialmente el dispositivo. El OEM establece esta propiedad y nunca se actualiza, incluso después de las actualizaciones del SO.
ro.vendor.api_level Número entero Es lo mismo que la descripción del nivel de API del proveedor en la tabla anterior.
ro.vndk.version Número entero La versión de VNDK con la que se compila la partición del proveedor. Esta propiedad se establece en la partición del proveedor.
ro.vendor.build.version.sdk Número entero El nivel de API del SDK del árbol de origen en el que se compiló la partición del proveedor.