Anbieter-API-Level

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 Folgenden wird erläutert, wie Systemeigenschaften je nach Android-Version verwendet werden, um die API-Ebene des Anbieters zu bestimmen.

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 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)

Ab Android 14-QPR3 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 Release-Zeitpläne ist die Anbieter-API-Ebene für Android 14-QPR3 und höher vollständig von der SDK-API-Ebene getrennt. Damit diese Entkopplung klar ist, ist das Format der API-Ebene des Anbieters 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 Ersteinrichtung
ro.board.api_level JJJJMM Die Anbieter-API-Ebene, die von der Software eines Chipsatzes unterstützt wird. Diese Property ist für alle Chipsätze festgelegt. Dieser Wert wird automatisch vom Build-System 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 qualifiziert 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. Der LLNDK ist abwärtskompatibel. Daher kann jedes Anbieter-Image, das diesem API-Level entspricht oder niedriger ist, mit diesem System-Image geflasht werden. Diese Eigenschaft 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 Die Anbieter-API-Ebene, mit der 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 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 Property wird nur für die Chipsätze festgelegt, die für die Anbietersperre infrage kommen. Der Wert dieser Eigenschaft wird vom Build-System anfangs 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 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 Die SDK-API-Ebene des Quellbaums, in dem 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 das Minimum von 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.