Le module SDK Extensions décide du niveau d'extension SDK de l'appareil et fournit des API permettant aux applications d'interroger le niveau d'extension SDK. Ce module peut être 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 SDK sont responsables de :
- Décider du niveau d'extension SDK de l'appareil.
- Fournir des API pour que les applications interrogent le niveau du SDK d'extension.
- (À partir d'Android 12) Détermination des valeurs des variables d'environnement
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
etSYSTEMSERVERCLASSPATH
.
Format des modules
Le module SDK Extensions ( com.android.sdkext
) est au format APEX et est disponible pour les appareils exécutant Android 11 ou supérieur.
Format de paquet
Le module SDK Extensions ( com.google.android.sdkext
) est au format APEX et contient les composants suivants :
(À partir d'Android 12)
bin/derive_classpath
: Un binaire natif qui s'exécute au début du processus de démarrage de l'appareil. Il lit les fichiers de configuration de chemin de classe individuels du système et d'autres modules, les fusionne et définit la définition des variables d'environnementCLASSPATH
.bin/derive_sdk
: un binaire natif qui s'exécute au début du 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érivation du niveau du SDK d'extension
Le programme derive_sdk
lit les métadonnées stockées sous forme de fichiers protobuf binaires dans le sous-chemin etc/sdkinfo.binarypb
à l'intérieur de chaque module APEX. Pour plus de détails sur la structure protobuf, reportez-vous au fichier protobuf
.
Lecture du niveau du SDK d'extension
Le module SDK Extensions expose une classe Java SdkExtensions
dans le package android.os.ext
. Utilisez la méthode getExtensionVersion(int)
pour lire la version d'une extension SDK (par exemple, getExtensionVersion(Build.VERSION_CODES.R)
).
Dérivation des chemins de classe
Le service derive_classpath
lit et fusionne les 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 chemin de classe est décrit dans derive_classpath.cpp
et peut changer au fil du temps.
Le module SDK Extensions décide du niveau d'extension SDK de l'appareil et fournit des API permettant aux applications d'interroger le niveau d'extension SDK. Ce module peut être 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 SDK sont responsables de :
- Décider du niveau d'extension SDK de l'appareil.
- Fournir des API pour que les applications interrogent le niveau du SDK d'extension.
- (À partir d'Android 12) Détermination des valeurs des variables d'environnement
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
etSYSTEMSERVERCLASSPATH
.
Format des modules
Le module SDK Extensions ( com.android.sdkext
) est au format APEX et est disponible pour les appareils exécutant Android 11 ou supérieur.
Format de paquet
Le module SDK Extensions ( com.google.android.sdkext
) est au format APEX et contient les composants suivants :
(À partir d'Android 12)
bin/derive_classpath
: Un binaire natif qui s'exécute au début du processus de démarrage de l'appareil. Il lit les fichiers de configuration de chemin de classe individuels du système et d'autres modules, les fusionne et définit la définition des variables d'environnementCLASSPATH
.bin/derive_sdk
: un binaire natif qui s'exécute au début du 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érivation du niveau du SDK d'extension
Le programme derive_sdk
lit les métadonnées stockées sous forme de fichiers protobuf binaires dans le sous-chemin etc/sdkinfo.binarypb
à l'intérieur de chaque module APEX. Pour plus de détails sur la structure protobuf, reportez-vous au fichier protobuf
.
Lecture du niveau du SDK d'extension
Le module SDK Extensions expose une classe Java SdkExtensions
dans le package android.os.ext
. Utilisez la méthode getExtensionVersion(int)
pour lire la version d'une extension SDK (par exemple, getExtensionVersion(Build.VERSION_CODES.R)
).
Dérivation des chemins de classe
Le service derive_classpath
lit et fusionne les 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 chemin de classe est décrit dans derive_classpath.cpp
et peut changer au fil du temps.