Das Anbieter-API-Level bezieht sich auf die Version der Schnittstelle, die von der Anbieterpartition unterstützt wird. Die Schnittstelle ist bidirektional. Sie beschreibt die API, die die Anbieterpartition für die Systempartition bereitstellt (die Hardwareabstraktionsschicht oder HAL-Schnittstelle), und auch die API, die die Anbieterpartition von der Systempartition benötigt (die Low-Level Native Developers Kit- oder LLNDK-Schnittstelle).
Das Anbieter-API-Level wird auch verwendet, um die Softwareanforderungen für Anbieter (Vendor Software Requirements, VSRs) zu bestimmen. Das sind funktionale und nicht funktionale Anforderungen, die die Software auf der Anbieterpartition erfüllen muss.
Im restlichen Teil dieser Seite wird erläutert, wie System-Properties je nach Android-Version verwendet werden, um das Vendor-API-Level zu bestimmen.
Anbieter-Freeze
Unter Android kann ein Anbieter die Anbieterpartition in einer bestimmten Version des VSR einfrieren. Die Funktionen, die Android von der Anbieterpartition erwartet, werden durch das mit der Anbieterpartition verknüpfte Anbieter-API-Level bestimmt. Zur Laufzeit wird das Verhalten der Software, die in der Systempartition ausgeführt wird, an das Anbieter-API-Level der Anbieterpartition angepasst. Die Software in der Systempartition kann beispielsweise keine neuen Funktionen nutzen, wenn diese nicht vom API-Level der Anbieterpartition unterstützt werden.
Ein Vendor Freeze ist nur verfügbar, wenn Sie ein Android-kompatibles Gerät erstellen.
Anbieter‑API‑Level ermitteln (Android 14‑QPR3 und höher)
Ab Android 14-QPR3 wird das Anbieter-API-Level separat veröffentlicht. Das bedeutet, dass das SDK-API-Level und das Anbieter-API-Level nicht synchron sind.
Aufgrund der separaten Release-Zeitpläne ist das Vendor-API-Level für Android 14-QPR3 und höher vollständig vom SDK-API-Level entkoppelt. Damit diese Entkopplung deutlich wird, ist das Format des Anbieter-API-Levels ein Datum im Format YYYYMM (Jahr und Monat), während das SDK-Level eine Ganzzahl ist.
Android 14-QPR3 und höher enthält die folgenden Systemeigenschaften, die sich auf die Vendor-API-Ebene beziehen:
Systemattribut | Formatieren | Beschreibung | Erste Einstellung |
---|---|---|---|
ro.board.api_level |
JJJJMM | Das Anbieter‑API‑Level, das von der Software eines Chipsatzes unterstützt wird. Diese Property wird für alle Chipsets festgelegt. | Dies wird automatisch vom Build-System festgelegt. |
ro.board.first_api_level |
JJJJMM | Das Anbieter-API-Level, mit dem die Software eines Chipsatzes erstmals veröffentlicht wurde. Diese Property hängt nur vom Chipsatz ab und wird von SoC-Anbietern festgelegt, wenn der SoC-Chipsatz für die Vendor-Freeze-Phase qualifiziert ist. Nach der ersten Einrichtung darf sie nicht mehr geändert werden. | SoC-Anbieter legen diese Einstellung mit BOARD_SHIPPING_API_LEVEL fest. |
ro.product.first_api_level |
Ganzzahl | Das SDK-API-Level, mit dem das Gerät ursprünglich auf den Markt gebracht wurde. | Dieses Attribut wird vom OEM festgelegt und danach nie aktualisiert, auch nicht nach Betriebssystem-Upgrades. |
ro.vendor.api_level |
JJJJMM | Das Anbieter‑API‑Level, das ro.product.first_api_level entspricht. Wir legen ro.vendor.api_level auf den Wert von ro.board.api_level fest, wenn ro.board.api_level kleiner als die Vendor-API-Ebene von ro.product.first_api_level ist, aber nur, wenn der SoC-Chipsatz für den Vendor-Freeze qualifiziert ist. |
Wird nach dieser Tabelle beschrieben. |
ro.board.api_frozen |
Boolesch | Dieses Attribut wird auf true gesetzt, wenn die Anbieter-API-Ebene, die ro.board.api_level darstellt, abgeschlossen ist. |
Wenn diese Eigenschaft nicht festgelegt ist, wird standardmäßig false verwendet. |
ro.llndk.api_level |
JJJJMM | Das Anbieter-API-Level im Format YYYYMM, das das aktuelle LLNDK auf der Systempartition bereitstellt. Das LLNDK ist abwärtskompatibel. Daher kann jedes Anbieter-Image, das diesem API‑Level entspricht oder darunter liegt, mit diesem System-Image geflasht werden. | Diese Property wird in der Systempartition festgelegt. |
Die ro.vendor.api_level
-Eigenschaft wird auf eine der beiden folgenden Arten abgeleitet:
Wenn der Chipsatz für die Anbieter-Einfrierung infrage kommt:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
Wenn der Chipsatz nicht unter Vendor Freeze fällt:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
Mit der Methode AVendorSupport_getVendorApiLevelOf()
wird das entsprechende Anbieter-API-Level aus einem SDK-API-Level bestimmt. Beispiel: AVendorSupport_getVendorApiLevelOf(35)
, wobei 35
das SDK-API-Level der wichtigsten Android-Version im Jahr 2024 ist, gibt 202404
zurück. Das ist das ungefähre Datum für Android 14-QPR3, als das aktuelle Vendor-API-Level festgelegt wurde.
Anbieter‑API‑Level ermitteln (Android 13)
Das Anbieter-API-Level folgt dem SDK-API-Level, das für die App-Betriebssystem-Schnittstelle gilt und einmal jährlich aktualisiert wird, wenn die neue Android-Plattform für AOSP veröffentlicht wird.
Android 13 enthält die folgenden Systemattribute, die sich auf das Vendor-API-Level beziehen:
Systemattribut | Formatieren | Beschreibung | Erste Einstellung |
---|---|---|---|
ro.board.first_api_level |
Ganzzahl | Das Anbieter-API-Level, mit dem die Software eines Chipsatzes erstmals veröffentlicht wurde. Dies ist eine Funktion des Chipsatzes und kann weder von SoC-Anbietern noch von OEMs geändert werden. Diese Eigenschaft wird nur für Chipsets festgelegt, die für die Vendor-Sperre infrage kommen. | Der Wert wird durch Festlegen von BOARD_SHIPPING_API_LEVEL in der Datei device.mk festgelegt. |
ro.board.api_level |
Ganzzahl | Das Anbieter‑API‑Level, das von der Software eines Chipsatzes unterstützt wird. Diese Eigenschaft wird nur für Chipsets festgelegt, die für die Vendor Freeze infrage kommen. | Der Wert dieser Eigenschaft wird anfangs vom Build-System auf denselben Wert wie ro.board.first_api_level gesetzt, kann aber aktualisiert werden, wenn die Anbieterpartition aktualisiert wird. |
ro.product.first_api_level |
Ganzzahl | Das SDK-API-Level, mit dem das Gerät ursprünglich auf den Markt gebracht wurde. | Dieses Attribut wird vom OEM festgelegt und danach nie aktualisiert, auch nicht nach Betriebssystem-Upgrades. |
ro.vendor.api_level |
Ganzzahl | Entspricht der Beschreibung des Anbieter-API-Levels in der vorherigen Tabelle. | |
ro.vndk.version |
Ganzzahl | Die Version von VNDK, für die die Anbieterpartition erstellt wurde. | Diese Property wird in der Anbieterpartition festgelegt. |
ro.vendor.build.version.sdk |
Ganzzahl | Das SDK-API-Level des Quellbaums, in dem die Anbieterpartition erstellt wurde. |