Nivel de API del proveedor

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 el nivel de API de la partición del proveedor no las admite.

La inmovilización del proveedor 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 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 esta desvinculació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 de 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 se finaliza el nivel de API del proveedor que representa ro.board.api_level. 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. 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 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 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 se establece solo para los conjuntos de chips que califican para la inmovilización del proveedor. Para establecer el valor, configura 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. 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 origen 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.