Niveau d'API du fournisseur

Le niveau d'API du fournisseur fait référence à la version de l'interface compatible avec la partition du fournisseur. L'interface est bidirectionnelle. Elle décrit l'API que la partition du fournisseur fournit à la partition système (couche d'abstraction matérielle ou interface HAL), ainsi que l'API que la partition du fournisseur nécessite de la partition système (interface LLNDK, kit de développement natif de bas niveau).

Le niveau de l'API du fournisseur est également utilisé pour déterminer les exigences logicielles du fournisseur (VSR, Vendor Software Requirements), qui sont un ensemble d'exigences fonctionnelles et non fonctionnelles que le logiciel de la partition du fournisseur doit respecter.

Le reste de cette page explique comment les propriétés système sont utilisées, en fonction de votre version d'Android, pour déterminer le niveau de l'API du fournisseur.

Blocage des fournisseurs

Android permet à un fournisseur de figer la partition du fournisseur à une version spécifique du VSR. L'ensemble de fonctionnalités qu'Android attend de la partition du fournisseur est déterminé par le niveau d'API du fournisseur associé à la partition du fournisseur. Au moment de l'exécution, le comportement du logiciel exécuté dans la partition système s'ajuste pour s'adapter au niveau de l'API du fournisseur de la partition du fournisseur. Par exemple, le logiciel de la partition système peut ne pas utiliser les nouvelles fonctionnalités si elles ne sont pas compatibles avec le niveau d'API de la partition du fournisseur.

Le blocage du fournisseur n'est disponible que si vous créez un appareil compatible avec Android.

Déterminer le niveau d'API du fournisseur (Android 14-QPR3 et versions ultérieures)

Pour Android 14-QPR3 et versions ultérieures, le niveau d'API du fournisseur est publié séparément, ce qui signifie que le niveau d'API du SDK et le niveau d'API du fournisseur ne sont pas synchronisés.

En raison des calendriers de publication distincts, pour Android 14-QPR3 et versions ultérieures, le niveau d'API du fournisseur est complètement dissocié du niveau d'API du SDK. Pour garantir que ce découplage est clair, le format du niveau d'API du fournisseur est une date au format AAAAMM (année et mois), tandis que le niveau du SDK est un entier.

Android 14-QPR3 et versions ultérieures contiennent les propriétés système suivantes liées au niveau d'API du fournisseur (ro.vendor.api_level):

Propriété système Format Description Paramètre initial
ro.board.api_level AAAAMM Niveau d'API du fournisseur compatible avec le logiciel d'un chipset. Cette propriété est définie pour tous les chipsets. Ce paramètre est défini automatiquement par le système de compilation.
ro.board.first_api_level AAAAMM Niveau d'API du fournisseur avec lequel le logiciel d'un chipset a été publié pour la première fois. Cette propriété est une fonction du chipset uniquement et est définie par les fournisseurs de SoC si le chipset SoC est qualifié pour le blocage du fournisseur. Une fois défini, il ne doit pas être modifié. Les fournisseurs de SoC définissent ce paramètre à l'aide de BOARD_SHIPPING_API_LEVEL.
ro.product.first_api_level Nombre entier Niveau d'API du SDK avec lequel l'appareil est lancé initialement. Cette propriété est définie par l'OEM et n'est ensuite jamais mise à jour, même après les mises à niveau du système d'exploitation.
ro.vendor.api_level AAAAMM Niveau d'API du fournisseur auquel l'appareil dans son ensemble doit se conformer. Décrit après ce tableau.
ro.board.api_frozen booléen Cette propriété est définie sur true si le niveau d'API du fournisseur représenté par ro.board.api_level est finalisé. Si cette propriété n'est pas définie, elle est définie par défaut sur false.
ro.llndk.api_level AAAAMM Niveau de l'API du fournisseur au format AAAAMM fourni par le LLNDK actuel de la partition système. Le LLNDK est rétrocompatible. Par conséquent, toute image du fournisseur inférieure ou égale à ce niveau d'API peut être flashée avec cette image système. Cette propriété est définie par la partition système.

La propriété ro.vendor.api_level est dérivée de l'une des deux manières suivantes:

  • Si le chipset est éligible au blocage du fournisseur:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • Si le chipset n'est pas soumis à un blocage par le fournisseur:

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

La méthode AVendorSupport_getVendorApiLevelOf() détermine le niveau d'API du fournisseur correspondant à partir d'un niveau d'API du SDK. Par exemple, AVendorSupport_getVendorApiLevelOf(35), où 35 est le niveau d'API du SDK de la version majeure d'Android en 2024, renvoie 202404, qui est la date approximative d'Android 14-QPR3 lorsque le niveau d'API du fournisseur actuel a été défini.

Déterminer le niveau d'API du fournisseur (Android 13)

Le niveau d'API du fournisseur suit le niveau d'API du SDK, qui est destiné à l'interface application-OS et est mis à jour une fois par an lorsque la nouvelle plate-forme Android est publiée sur AOSP.

Android 13 contient les propriétés système suivantes liées au niveau d'API du fournisseur (ro.vendor.api_level):

Propriété système Format Description Paramètre initial
ro.board.first_api_level Nombre entier Niveau d'API du fournisseur avec lequel le logiciel d'un chipset a été publié pour la première fois. Il s'agit d'une fonction du chipset uniquement, et ne peut être modifié ni par les fournisseurs de SoC, ni par les OEM. Cette propriété n'est définie que pour les chipsets éligibles au blocage du fournisseur. La valeur est établie en définissant BOARD_SHIPPING_API_LEVEL dans le fichier device.mk.
ro.board.api_level Nombre entier Niveau d'API du fournisseur compatible avec le logiciel d'un chipset. Cette propriété n'est définie que pour les chipsets éligibles au blocage par le fournisseur. Cette propriété est définie pour tous les chipsets. Initialement, la valeur de cette propriété est définie par le système de compilation sur la même valeur que ro.board.first_api_level, mais elle peut être mise à jour si la partition du fournisseur est mise à niveau.
ro.product.first_api_level Nombre entier Niveau d'API du SDK avec lequel l'appareil est lancé initialement. Cette propriété est définie par l'OEM et n'est jamais mise à jour, même après les mises à niveau de l'OS.
ro.vendor.api_level Nombre entier Niveau d'API du fournisseur auquel l'appareil dans son ensemble doit se conformer. Décrit après ce tableau.
ro.vndk.version Nombre entier Version de VNDK sur laquelle la partition du fournisseur est construite. Cette propriété est définie par la partition système.
ro.vendor.build.version.sdk Nombre entier Niveau d'API du SDK de l'arborescence source dans laquelle la partition du fournisseur a été créée.
ro.vendor.build.version.release Nombre entier Version de la plate-forme de l'arborescence source dans laquelle la partition du fournisseur a été créée.
ro.vendor.build.version.release_or_codename Nombre entier Nom de code de l'arborescence source dans laquelle la partition du fournisseur a été créée.

La propriété ro.vendor.api_level est automatiquement définie sur la valeur minimale de ro.board.api_level (ou ro.board.first_api_level si ro.board.api_level n'est pas défini) et de ro.product.first_api_level.