Nivel de API del proveedor

El nivel de API del proveedor hace referencia a la versión de la interfaz compatible con la en la partición de 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 o interfaz de HAL), y también la API que la partición del proveedor los requisitos de la partición del sistema (el 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), un conjunto de requisitos funcionales y no funcionales que el software en la partición del proveedor debe cumplir.

En el resto de esta página, se explica cómo el sistema se usan, según tu versión de Android, para determinar Nivel de API.

Suspensión del proveedor

Android permite a un proveedor inmovilizar la partición del proveedor en una versión específica de la VSR. El conjunto de las funciones que Android espera de la partición del proveedor está determinada 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 a las nivel de API del proveedor de la partición de proveedor. Por ejemplo, el software del partición del sistema podría no ejecutar 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 una Dispositivo compatible con Android.

Determina el nivel de API del proveedor (Android 14-QPR3 y versiones posteriores)

Para Android 14-QPR3 y versiones posteriores, el nivel de API del proveedor es se lanza por separado, es decir, el nivel de API del SDK y el proveedor El nivel de API no está sincronizado.

Debido a los programas de lanzamientos independientes, para Android 14-QPR3 y posteriores, el nivel de API del proveedor es completamente desvinculada del nivel de API del SDK. Para garantizar que esta separación sea clara, el 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 las versiones posteriores incluyen el siguiente sistema Propiedades 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 conjunto de chips. Esta propiedad se establece para todos los chipsets. 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 conjunto de chips. Esta propiedad es una función solo del chipset y la establecen los proveedores de SoC si este se califica para la inmovilización de proveedores. Después de la configuración inicial, no se debe modificar. Los proveedores de SoC establecen esta configuración con BOARD_SHIPPING_API_LEVEL.
ro.product.first_api_level Entero Es el nivel de API del SDK con el que se lanzó el dispositivo por primera vez. El OEM establece esta propiedad y nunca se actualiza, incluso después de las actualizaciones del SO.
ro.vendor.api_level AAAAMM Nivel de API del proveedor al que debe cumplir todo el dispositivo. 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 El nivel de API del proveedor en formato AAAAMM que proporciona el LLNDK actual en la partición del sistema. LLNDK es retrocompatible, por lo que cualquier imagen de proveedor que sea inferior o igual a este nivel de API puede escribirse 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 dos maneras:

  • Si el chipset cumplió con los requisitos para la suspensió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á inmovilizado por el proveedor, haz lo siguiente:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

El método AVendorSupport_getVendorApiLevelOf() determina el valor del proveedor a partir del nivel de API del SDK. Por ejemplo: AVendorSupport_getVendorApiLevelOf(35), donde 35 es el nivel de API del SDK de la lanzamiento principal de Android en 2024 devuelve 202404, que es la fecha aproximada Android 14-QPR3 cuando el nivel de API del proveedor actual era automático.

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 el SO de la app. y se actualiza una vez al año cuando se lanza la nueva plataforma de Android al AOSP.

Android 13 incluye el siguiente sistema: Propiedades 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 conjunto de chips. Esta es una función solo de chipset, y ni los proveedores de SoC ni los OEM pueden modificarla. Esta propiedad solo se establece para los chipsets que cumplen con los requisitos de la suspensión de proveedores. 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 conjunto de chips. Esta propiedad se establece solo para los chipsets que cumplen con los requisitos para la suspensión de proveedores. Esta propiedad se establece para todos los chipsets. Al principio, el sistema de compilación establece el valor de esta propiedad con 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 lanzó el dispositivo por primera vez. El OEM establece esta propiedad y nunca se actualiza, incluso después de las actualizaciones del SO.
ro.vendor.api_level Entero Nivel de API del proveedor al que debe cumplir todo el dispositivo. 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 El nivel de API del SDK del árbol de fuentes 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 El nombre interno del árbol de fuentes 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). ro.product.first_api_level