Anbieter-API-Level bezeichnet 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 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 Anforderungen an die Anbietersoftware (Vendor Software Requirements, VSRs) zu bestimmen. Das sind eine Reihe von funktionalen und nicht funktionalen Anforderungen, die die Software in der Anbieterpartition erfüllen muss.
Auf dem Rest dieser Seite wird erläutert, wie Systemeigenschaften je nach Android-Version verwendet werden, um das API-Level des Anbieters zu bestimmen.
Anbieter-Freeze
Mit Android kann ein Anbieter die Anbieterpartition auf einer bestimmten Version der VSR einfrieren. Die Reihe von Funktionen, die Android von der Anbieterpartition erwartet, wird 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 sie nicht vom API-Level der Anbieterpartition unterstützt werden.
Ein Vendor Freeze ist nur verfügbar, wenn du ein Android-kompatibles Gerät erstellst.
Anbieter-API-Level bestimmen (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 Veröffentlichungszeitplä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 das API-Level des Anbieters beziehen:
| Systemeigenschaft | Format | 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 Chipsätze festgelegt. | Das wird automatisch vom Build-System festgelegt. |
ro.board.first_api_level |
JJJJMM | Das Anbieter-API-Level, mit dem die Software eines Chipsatzes zuerst veröffentlicht wurde. Diese Property hängt nur vom Chipsatz ab und wird von SoC-Anbietern festgelegt, wenn der SoC-Chipsatz für den Vendor Freeze qualifiziert ist. Nach der ersten Einstellung sollte diese Eigenschaft als endgültig betrachtet und nicht mehr geändert werden. Obwohl dies dringend abgeraten wird, kann ein Update in seltenen Ausnahmefällen mit einer neuen Vendor Freeze-Qualifizierung zulässig sein. | 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. | Diese Property 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 setzen ro.vendor.api_level auf den Wert von ro.board.api_level, wenn ro.board.api_level kleiner als das Anbieter-API-Level 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 |
boolean | Diese Property wird auf true gesetzt, wenn das Anbieter-API-Level, das ro.board.api_level darstellt, finalisiert ist. |
Wenn dieses Attribut nicht festgelegt ist, wird standardmäßig false verwendet. |
ro.llndk.api_level |
YYYYMM | Das Anbieter-API-Level im Format YYYYMM, das das aktuelle LLNDK in der Systempartition bereitstellt. Das LLNDK ist abwärtskompatibel, sodass jedes Anbieter-Image, das kleiner oder gleich diesem API-Level ist, mit diesem System-Image geflasht werden kann. | Diese Property wird in der Systempartition festgelegt. |
Das Attribut ro.vendor.api_level wird auf eine der beiden folgenden Arten abgeleitet:
Wenn der Chipsatz für die Vendor Freeze-Phase 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 ermittelt. Beispiel: AVendorSupport_getVendorApiLevelOf(35), wobei 35 das SDK-API-Level des Haupt-Android-Releases im Jahr 2024 ist, gibt 202404 zurück. Das ist das ungefähre Datum für Android 14 QPR3, als das aktuelle Anbieter-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 im Jahr aktualisiert wird, wenn die neue Android-Plattform im AOSP veröffentlicht wird.
Android 13 enthält die folgenden Systemeigenschaften, die sich auf das API‑Level des Anbieters beziehen:
| Systemeigenschaft | Format | Beschreibung | Anfangseinstellung |
|---|---|---|---|
ro.board.first_api_level |
Ganzzahl | Das Anbieter-API-Level, mit dem die Software eines Chipsatzes erstmals veröffentlicht wurde. Dies ist nur 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-Freeze 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-Phase infrage kommen. | Der Wert dieser Eigenschaft wird anfangs vom Build-System auf denselben Wert wie ro.board.first_api_level festgelegt, 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. | Diese Property wird vom OEM festgelegt und danach nie aktualisiert, auch nicht nach Betriebssystemupgrades. |
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. |