Le module d'extensions SDK détermine le niveau de SDK de l'extension de l'appareil fournit des API permettant aux applications d'interroger le niveau du SDK de l'extension. Ce module est peut être mise à jour, c'est-à-dire qu'elle peut recevoir des mises à jour de fonctionnalités Cycle de publication d'Android
Les extensions SDK sont responsables des éléments suivants:
- Déterminer le niveau du SDK de l'extension de l'appareil
- Fournir des API pour que les applications interrogent le niveau du SDK de l'extension
- (À partir d'Android 12) Déterminer les valeurs du paramètre
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
etSYSTEMSERVERCLASSPATH
.
Format du module
Le module d'extensions SDK (com.android.sdkext
) se trouve
Format APEX. Il est compatible avec les appareils
fonctionnant sous Android 11 ou version ultérieure.
Format du package
Le module d'extensions SDK (com.google.android.sdkext
) se trouve
le format APEX et
contient les composants suivants:
(À partir d'Android 12)
bin/derive_classpath
: A binaire natif s'exécutant au début du démarrage de l'appareil processus. Il lit les fichiers de configuration classpath individuels du système et autres modules, les fusionne et définit la définition deCLASSPATH
variables d'environnement.bin/derive_sdk
: 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 (par exemple,build.version.extensions.r
).javalib/framework-sdkextension.jar
: ce fichier se trouve sur le chemin d'accès de la classe d'amorçage qui expose des API aux applications pour interroger le niveau du SDK de l'extension.
Établir le niveau du SDK de l'extension
Le programme derive_sdk
lit les métadonnées stockées sous forme de fichiers protobuf binaires dans
Sous-chemin d'accès etc/sdkinfo.binarypb
à l'intérieur de chaque module APEX. Pour en savoir plus sur les tampons de protocole
consultez la
protobuf
.
Afficher le niveau du SDK de l'extension
Le module d'extensions SDK expose une
SdkExtensions
Java dans le package android.os.ext
. Utiliser le getExtensionVersion(int)
pour lire la version d'une extension SDK (par exemple,
getExtensionVersion(Build.VERSION_CODES.R)
).
Établir les classpaths
Le service derive_classpath
lit et fusionne les fichiers de configuration individuels dans
/system/etc/classpaths/
et /apex/*/etc/classpaths/
. Chaque configuration stocke
Message protobuf de classpaths.proto
au format binaire proto. L'algorithme de fusion exact qui détermine l'ordre
des entrées classpath est décrite dans
derive_classpath.cpp
et peuvent changer au fil du temps.