Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
SDK-Erweiterungen
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Das SDK-Erweiterungsmodul bestimmt die Erweiterungs-SDK-Ebene des Geräts und stellt APIs für Apps bereit, um die Erweiterungs-SDK-Ebene abzufragen. Dieses Modul kann aktualisiert werden, d. h. es kann außerhalb des normalen Android-Releasezyklus Updates für Funktionen erhalten.
SDK-Erweiterungen sind für Folgendes verantwortlich:
- Festlegen der SDK-Ebene der Erweiterung des Geräts
- APIs für Apps bereitstellen, um die Erweiterungs-SDK-Ebene abzufragen.
- (Ab Android 12) Festlegen der Werte für die Umgebungsvariablen
BOOTCLASSPATH
, DEX2OATBOOTCLASSPATH
und SYSTEMSERVERCLASSPATH
Das SDK-Erweiterungsmodul (com.android.sdkext
) ist im APEX-Format verfügbar und für Geräte mit Android 11 oder höher geeignet.
Das SDK-Erweiterungsmodul (com.google.android.sdkext
) ist im APEX-Format und enthält die folgenden Komponenten:
(Ab Android 12) bin/derive_classpath
: Ein nativer Binärcode, der früh im Bootvorgang des Geräts ausgeführt wird. Es liest einzelne Classpath-Konfigurationsdateien aus dem System und anderen Modulen, führt sie zusammen und definiert die Definition der Umgebungsvariablen CLASSPATH
.
bin/derive_sdk
: Ein nativer Binärcode, der zu Beginn des Gerätestartvorgangs ausgeführt wird und Metadaten anderer Module liest, um Systemeigenschaften im Zusammenhang mit dem Erweiterungs-SDK festzulegen (z. B. build.version.extensions.r
).
javalib/framework-sdkextension.jar
: Diese Datei befindet sich in der Boot-Klassenbibliothek, die APIs für Apps freigibt, um die Erweiterungs-SDK-Ebene abzufragen.
SDK-Ebene der Erweiterung ableiten
Das derive_sdk
-Programm liest Metadaten, die als binäre protobuf-Dateien im Unterpfad etc/sdkinfo.binarypb
jedes APEX-Moduls gespeichert sind. Weitere Informationen zur protobuf-Struktur finden Sie in der Datei protobuf
.
Lesezugriff auf SDK-Ebene der Erweiterung
Das SDK-Erweiterungsmodul stellt eine Java-Klasse SdkExtensions
im Paket android.os.ext
bereit. Mit der Methode getExtensionVersion(int)
kannst du die Version einer SDK-Erweiterung (z. B. getExtensionVersion(Build.VERSION_CODES.R)
) lesen.
Klassenpfade ableiten
Der Dienst derive_classpath
liest und kombiniert einzelne Konfigurationsdateien in /system/etc/classpaths/
und /apex/*/etc/classpaths/
. In jeder Konfiguration wird die protobuf-Nachricht von classpaths.proto
in einem Proto-Binärformat gespeichert. Der genaue Algorithmus zum Zusammenführen, der die Reihenfolge der Classpath-Einträge bestimmt, wird in derive_classpath.cpp
beschrieben und kann sich im Laufe der Zeit ändern.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# SDK Extensions\n\nThe SDK Extensions module decides the extension SDK level of the device and\nprovides APIs for apps to query the extension SDK level. This module is\nupdatable, meaning it can receive updates to functionality outside of the normal\nAndroid release cycle.\n\nSDK Extensions is responsible for:\n\n- Deciding the extension SDK level of the device.\n- Providing APIs for apps to query the extension SDK level.\n- (Starting Android 12) Determining the values for the `BOOTCLASSPATH`, `DEX2OATBOOTCLASSPATH`, and `SYSTEMSERVERCLASSPATH` environment variables.\n\nModule format\n-------------\n\nThe SDK Extensions module (`com.android.sdkext`) is in\n[APEX](/docs/core/ota/apex) format and is available for devices\nrunning Android 11 or higher.\n\nPackage format\n--------------\n\nThe SDK Extensions module (`com.google.android.sdkext`) is in\n[APEX](/devices/tech/ota/apex) format and\ncontains the following components:\n\n- (Starting Android 12) `bin/derive_classpath`: A\n native binary that runs early in the device boot\n process. It reads individual classpath configs files from the system and\n other modules, merges them, and defines the definition of `CLASSPATH`\n environment variables.\n\n- `bin/derive_sdk`: A native binary that runs early in the device boot process\n and reads metadata of other modules to set system properties related to the\n extension SDK (for example, `build.version.extensions.r`).\n\n- `javalib/framework-sdkextension.jar`: This file is on the bootclasspath that\n exposes APIs to apps to query the extension SDK level.\n\nDerive extension SDK level\n--------------------------\n\nThe `derive_sdk` program reads metadata stored as binary protobuf files in the\n`etc/sdkinfo.binarypb` subpath inside each APEX module. For details on protobuf\nstructure, refer to the\n[`protobuf`](https://android.googlesource.com/platform/external/protobuf.git)\nfile.\n\nRead extension SDK level\n------------------------\n\nThe SDK Extensions module exposes an\n[`SdkExtensions`](https://android.googlesource.com/platform/packages/modules/SdkExtensions/)\njava class in the `android.os.ext` package. Use the `getExtensionVersion(int)`\nmethod to read the version of an SDK extension (for example,\n`getExtensionVersion(Build.VERSION_CODES.R)`).\n\nDerive classpaths\n-----------------\n\nThe `derive_classpath` service reads and merges individual config files in\n`/system/etc/classpaths/` and `/apex/*/etc/classpaths/`. Each config stores\nprotobuf message from [`classpaths.proto`](https://android.googlesource.com/platform/packages/modules/common/+/android16-release/proto/classpaths.proto)\nin a proto binary format. The exact merging algorithm that determines the order\nof the classpath entries is described in\n[`derive_classpath.cpp`](https://android.googlesource.com/platform/packages/modules/SdkExtensions/+/android16-release/derive_classpath/derive_classpath.cpp)\nand might change over time."]]