Die API-Ebene des Anbieters 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 (Hardware Abstraction Layer oder HAL-Schnittstelle), und auch die API, die die Anbieterpartition von der Systempartition benötigt (Low-Level Native Developers Kit oder LLNDK-Schnittstelle).
Die API-Ebene des Anbieters wird auch verwendet, um die Softwareanforderungen des Anbieters (Vendor Software Requirements, VSRs) zu ermitteln. Dies ist 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 API-Level des Anbieters zu ermitteln.
Anbietereinfrieren
Unter Android kann ein Anbieter die Anbieterpartition auf einer bestimmten Version der VSR einfrieren. Die Funktionen, die Android von der Anbieterpartition erwartet, werden durch die Anbieter-API-Ebene bestimmt, die mit der Anbieterpartition verknüpft ist. Zur Laufzeit wird das Verhalten der Software, die in der Systempartition ausgeführt wird, an die API-Ebene des Anbieters in der Anbieterpartition angepasst. Beispielsweise werden neue Funktionen von der Software in der Systempartition möglicherweise nicht genutzt, wenn sie vom API-Level der Anbieterpartition nicht unterstützt werden.
Eine Anbietersperrung ist nur verfügbar, wenn Sie ein Android-kompatibles Gerät erstellen.
Anbieter-API-Level ermitteln (Android 14-QPR3 und höher)
Bei Android 14-QPR3 und höher wird die API-Ebene des Anbieters separat veröffentlicht. Das bedeutet, dass die SDK-API-Ebene und die API-Ebene des Anbieters nicht synchron sind.
Aufgrund der separaten Veröffentlichungszeitpläne ist das API-Level des Anbieters für Android 14-QPR3 und höher vollständig von der SDK-API-Ebene entkoppelt. Damit diese Entkopplung klar ist, ist das Format der Anbieter-API-Ebene ein Datum im Format JJJJMM (Jahr und Monat), während die SDK-Ebene eine Ganzzahl ist.
Android 14-QPR3 und höher enthält die folgenden Systemeigenschaften, die sich auf das API-Level des Anbieters (ro.vendor.api_level
) beziehen:
Systemeigenschaft | Formatieren | Beschreibung | Anfangseinstellung |
---|---|---|---|
ro.board.api_level |
JJJJMM | Das API-Level des Anbieters, das von der Software eines Chipsatzes unterstützt wird. Diese Property ist für alle Chipsätze festgelegt. | Dieser Wert wird vom Build-System automatisch festgelegt. |
ro.board.first_api_level |
JJJJMM | Die Anbieter-API-Ebene, mit der die Software eines Chipsatzes erstmals veröffentlicht wurde. Diese Property ist nur eine Funktion des Chipsatzes und wird von SoC-Anbietern festgelegt, wenn der SoC-Chipsatz für die Anbietersperre geeignet ist. Nach der Ersteinrichtung darf er nicht mehr geändert werden. | SoC-Anbieter legen diese Einstellung mit BOARD_SHIPPING_API_LEVEL fest. |
ro.product.first_api_level |
Ganzzahl | Die SDK-API-Ebene, mit der das Gerät gestartet wird. | Dieses Attribut wird vom OEM festgelegt und dann nie aktualisiert, auch nicht nach Betriebssystemupdates. |
ro.vendor.api_level |
JJJJMM | Das API-Level des Anbieters, dem das Gerät insgesamt entsprechen muss. | 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. |
Ist diese Property nicht festgelegt, wird standardmäßig false verwendet. |
ro.llndk.api_level |
JJJJMM | Die Anbieter-API-Ebene im Format JJJJMM, die vom aktuellen LLNDK in der Systempartition bereitgestellt wird. Das LLNDK ist abwärtskompatibel. Daher kann jedes Anbieter-Image, das kleiner oder gleich dieser API-Ebene ist, mit diesem System-Image geflasht werden. | Dieses Attribut wird von der Systempartition festgelegt. |
Die Property ro.vendor.api_level
wird auf eine der folgenden Arten abgeleitet:
Wenn der Chipsatz für die Anbietersperre infrage kommt:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
Wenn der Chipsatz nicht vom Anbieter eingefroren wurde:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
Die AVendorSupport_getVendorApiLevelOf()
-Methode ermittelt das entsprechende Anbieter-API-Level anhand eines SDK-API-Levels. Wenn Sie beispielsweise AVendorSupport_getVendorApiLevelOf(35)
eingeben, wobei 35
das SDK-API-Level der Hauptversion von Android 2024 ist, wird 202404
zurückgegeben. Das ist das ungefähre Datum für Android 14-QPR3, als die aktuelle Anbieter-API-Ebene festgelegt wurde.
Anbieter-API-Level ermitteln (Android 13)
Das API-Level des Anbieters 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 Systemeigenschaften im Zusammenhang mit dem API-Level des Anbieters (ro.vendor.api_level
):
Systemeigenschaft | Formatieren | Beschreibung | Anfangseinstellung |
---|---|---|---|
ro.board.first_api_level |
Ganzzahl | Das API-Level des Anbieters, mit dem die Software eines Chipsatzes erstmals veröffentlicht wurde. Diese Funktion ist nur eine Funktion des Chipsatzes und kann weder von SoC-Anbietern noch von OEMs geändert werden. Diese Property wird nur für Chipsätze festgelegt, die für die Aussetzung durch den Anbieter infrage kommen. | Der Wert wird festgelegt, indem BOARD_SHIPPING_API_LEVEL in der Datei device.mk festgelegt wird. |
ro.board.api_level |
Ganzzahl | Die Anbieter-API-Ebene, die von der Software eines Chipsatzes unterstützt wird. Diese Eigenschaft wird nur für Chipsätze festgelegt, bei denen eine Anbieterbeschränkung festgelegt werden kann. Diese Property ist für alle Chipsätze festgelegt. | Anfangs wird der Wert dieses Attributs 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 | Die SDK-API-Ebene, mit der das Gerät gestartet wird. | Dieses Attribut wird vom OEM festgelegt und dann nie aktualisiert, auch nicht nach Betriebssystemupdates. |
ro.vendor.api_level |
Ganzzahl | Das API-Level des Anbieters, dem das Gerät insgesamt entsprechen muss. | Wird nach dieser Tabelle beschrieben. |
ro.vndk.version |
Ganzzahl | Die VNDK-Version, auf die die Anbieterpartition basiert. | Diese Eigenschaft wird von der Systempartition festgelegt. |
ro.vendor.build.version.sdk |
Ganzzahl | Das SDK API-Level der Quellstruktur, in der die Anbieterpartition erstellt wurde. | |
ro.vendor.build.version.release |
Ganzzahl | Die Plattformversion des Quellbaums, in dem die Anbieterpartition erstellt wurde. | |
ro.vendor.build.version.release_or_codename |
Ganzzahl | Der Codename des Quellbaums, in dem die Anbieterpartition erstellt wurde. |
Das Attribut ro.vendor.api_level
wird automatisch auf den Mindestwert ro.board.api_level
(oder ro.board.first_api_level
, wenn ro.board.api_level
nicht definiert ist) und ro.product.first_api_level
festgelegt.