À partir du 27 mars 2025, nous vous recommandons d'utiliser android-latest-release
au lieu de aosp-main
pour créer et contribuer à AOSP. Pour en savoir plus, consultez la section Modifications apportées à AOSP.
Extensions SDK
Restez organisé à l'aide des collections
Enregistrez et classez les contenus selon vos préférences.
Le module Extensions SDK détermine le niveau du SDK d'extension de l'appareil et fournit des API permettant aux applications d'interroger le niveau du SDK d'extension. Ce module est mis à jour, ce qui signifie qu'il peut recevoir des mises à jour de fonctionnalités en dehors du cycle de publication normal d'Android.
Les extensions de SDK sont responsables des éléments suivants:
- Déterminer le niveau du SDK de l'extension de l'appareil.
- Fournit des API permettant aux applications d'interroger le niveau du SDK de l'extension.
- (À partir d'Android 12) Détermination des valeurs pour les variables d'environnement
BOOTCLASSPATH
, DEX2OATBOOTCLASSPATH
et SYSTEMSERVERCLASSPATH
.
Le module Extensions du SDK (com.android.sdkext
) est au format APEX et est disponible pour les appareils exécutant Android 11 ou version ultérieure.
Le module Extensions du SDK (com.google.android.sdkext
) est au format APEX et contient les composants suivants:
(À partir d'Android 12) bin/derive_classpath
: binaire natif exécuté tôt dans le processus de démarrage de l'appareil. Il lit les fichiers de configuration de chemin d'accès au cours du système et d'autres modules, les fusionne et définit la définition des variables d'environnement CLASSPATH
.
bin/derive_sdk
: binaire natif qui s'exécute tôt dans le processus de démarrage de l'appareil et lit les métadonnées d'autres modules pour définir les propriétés système liées au SDK d'extension (par exemple, build.version.extensions.r
).
javalib/framework-sdkextension.jar
: ce fichier se trouve sur le bootclasspath qui expose les API aux applications pour interroger le niveau du SDK d'extension.
Dériver le niveau du SDK de l'extension
Le programme derive_sdk
lit les métadonnées stockées en tant que fichiers protobuf binaires dans le sous-chemin etc/sdkinfo.binarypb
de chaque module APEX. Pour en savoir plus sur la structure protobuf, consultez le fichier protobuf
.
Niveau du SDK de l'extension de lecture
Le module Extensions du SDK expose une classe Java SdkExtensions
dans le package android.os.ext
. Utilisez la méthode getExtensionVersion(int)
pour lire la version d'une extension de SDK (par exemple, getExtensionVersion(Build.VERSION_CODES.R)
).
Dériver des chemins d'accès
Le service derive_classpath
lit et fusionne des fichiers de configuration individuels dans /system/etc/classpaths/
et /apex/*/etc/classpaths/
. Chaque configuration stocke le message protobuf de classpaths.proto
dans un format binaire proto. L'algorithme de fusion exact qui détermine l'ordre des entrées de classpath est décrit dans derive_classpath.cpp
et peut changer au fil du temps.
Le contenu et les exemples de code de cette page sont soumis aux licences décrites dans la Licence de contenu. Java et OpenJDK sont des marques ou des marques déposées d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2025/07/27 (UTC).
[[["Facile à comprendre","easyToUnderstand","thumb-up"],["J'ai pu résoudre mon problème","solvedMyProblem","thumb-up"],["Autre","otherUp","thumb-up"]],[["Il n'y a pas l'information dont j'ai besoin","missingTheInformationINeed","thumb-down"],["Trop compliqué/Trop d'étapes","tooComplicatedTooManySteps","thumb-down"],["Obsolète","outOfDate","thumb-down"],["Problème de traduction","translationIssue","thumb-down"],["Mauvais exemple/Erreur de code","samplesCodeIssue","thumb-down"],["Autre","otherDown","thumb-down"]],["Dernière mise à jour le 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."]]