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 der Systempartition zur Verfügung stellt (die Hardware-Abstraktionsebene 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 Anforderungen an die Anbietersoftware (Vendor Software Requirements, VSRs) zu bestimmen. Dabei handelt es sich um eine Sammlung funktionaler und nicht funktionaler Anforderungen, die die Software in der Anbieterpartition erfüllen muss.
Im Rest dieser Seite wird erläutert, wie Systemeigenschaften je nach Android-Version verwendet werden, um das Anbieter‑API‑Level zu bestimmen.
Anbieter-Freeze
In Android kann ein Anbieter die Anbieterpartition auf eine bestimmte Version der VSR fixieren. Die Reihe der Funktionen, die Android von der Anbieterpartition erwartet, wird durch das Anbieter‑API‑Level bestimmt, das mit der Anbieterpartition verknüpft ist. Zur Laufzeit wird das Verhalten der Software, die in der Systempartition ausgeführt wird, an das Anbieter‑API‑Level der Anbieterpartition angepasst. Beispielsweise verwendet die Software in der Systempartition möglicherweise keine neuen Funktionen, wenn sie vom API‑Level der Anbieterpartition nicht unterstützt werden.
Ein Anbieter-Freeze ist nur verfügbar, wenn Sie ein Android-kompatibles Gerät erstellen.
Anbieter‑API‑Level bestimmen (Android 14-QPR3 und höher)
Bei Android 14-QPR3 und höher 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 Anbieter‑API‑Level bei Android 14-QPR3 und höher vollständig vom SDK‑API‑Level entkoppelt. Um diese Entkopplung zu verdeutlichen, 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 im Zusammenhang mit dem Anbieter‑API‑Level:
| Systemeigenschaft | Format | Beschreibung | Anfangseinstellung |
|---|---|---|---|
ro.board.api_level |
JJJJMM | Das Anbieter‑API‑Level, das von der Software eines Chipsatzes unterstützt wird. Diese Eigenschaft wird für alle Chipsätze festgelegt. | Diese Einstellung 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 Eigenschaft ist nur eine Funktion des Chipsatzes und wird von SoC-Anbietern festgelegt, wenn der SoC-Chipsatz für den Anbieter-Freeze qualifiziert ist. Nach der ersten Einstellung sollte diese Eigenschaft als endgültig betrachtet und nicht mehr geändert werden. Obwohl dringend davon abgeraten wird, kann in seltenen Ausnahmefällen ein Update mit einer neuen Anbieter-Freeze-Qualifikation 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 Eigenschaft 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. ro.vendor.api_level wird nur dann auf den Wert von ro.board.api_level gesetzt, wenn ro.board.api_level kleiner als das Anbieter‑API‑Level von ro.product.first_api_level ist und der SoC-Chipsatz für den Anbieter-Freeze qualifiziert ist. |
Nach dieser Tabelle beschrieben. |
ro.board.api_frozen |
boolean | Diese Eigenschaft wird auf true gesetzt, wenn das Anbieter‑API‑Level, das von ro.board.api_level dargestellt wird, endgültig ist. |
Wenn diese Eigenschaft nicht festgelegt ist, wird standardmäßig false verwendet. |
ro.llndk.api_level |
JJJJMM | Das Anbieter‑API‑Level im Format JJJJMM, das vom aktuellen LLNDK in der Systempartition bereitgestellt wird. Das LLNDK ist abwärtskompatibel. Daher kann jedes Anbieter-Image, das kleiner oder gleich diesem API‑Level ist, mit diesem System-Image geflasht werden. | Diese Eigenschaft wird in der Systempartition festgelegt. |
Die Eigenschaft ro.vendor.api_level wird auf eine der beiden folgenden Arten abgeleitet:
Wenn der Chipsatz für den Anbieter-Freeze qualifiziert ist:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))Wenn der Chipsatz nicht unter Anbieter-Freeze steht:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
Die Methode AVendorSupport_getVendorApiLevelOf() bestimmt das entsprechende Anbieter‑API‑Level aus einem SDK‑API‑Level. Beispiel:
AVendorSupport_getVendorApiLevelOf(35), wobei 35 das SDK‑API‑Level des
großen 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 bestimmen (Android 13)
Das Anbieter‑API‑Level folgt dem SDK‑API‑Level, das für die App-OS-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 Systemeigenschaften im Zusammenhang mit dem Anbieter‑API‑Level:
| Systemeigenschaft | Format | Beschreibung | Anfangseinstellung |
|---|---|---|---|
ro.board.first_api_level |
Ganzzahl | Das Anbieter‑API‑Level, mit dem die Software eines Chipsatzes erstmals veröffentlicht wurde. Diese Eigenschaft ist nur eine Funktion des Chipsatzes und kann weder von SoC-Anbietern noch von OEMs geändert werden. Diese Eigenschaft wird nur für Chipsätze festgelegt, die für den Anbieter-Freeze qualifiziert sind. | 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 Chipsätze festgelegt, die für den Anbieter-Freeze qualifiziert sind. | Anfangs wird der Wert dieser Eigenschaft vom Build-System auf denselben Wert wie ro.board.first_api_level gesetzt. Er kann jedoch 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 Eigenschaft 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 Eigenschaft wird in der Anbieterpartition festgelegt. |
ro.vendor.build.version.sdk |
Ganzzahl | Das SDK‑API‑Level des Quellbaums, in dem die Anbieterpartition erstellt wurde. |