Il modulo Estensioni SDK stabilisce il livello SDK di estensione del dispositivo e fornisce API che consentono alle app di eseguire query a livello di SDK dell'estensione. Questo modulo è aggiornabile, vale a dire che può ricevere aggiornamenti delle funzionalità al di fuori del normale Ciclo di rilascio di Android.
SDK Extensions è responsabile di:
- Decidere il livello SDK dell'estensione del dispositivo.
- Fornire API per consentire alle app di eseguire query a livello di SDK dell'estensione.
- (A partire da Android 12) Determinare i valori degli attributi
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
eSYSTEMSERVERCLASSPATH
variabili di ambiente.
Formato del modulo
Il modulo Estensioni SDK (com.android.sdkext
) è in
APEX ed è disponibile per i dispositivi
con Android 11 o versioni successive.
Formato del pacchetto
Il modulo Estensioni SDK (com.google.android.sdkext
) è in
formato APEX e
contiene i seguenti componenti:
(A partire da Android 12)
bin/derive_classpath
: A binario nativo eseguito nelle prime fasi dell'avvio del dispositivo e il processo di sviluppo. Legge i singoli file di configurazione di classpath dal sistema altri moduli, li unisce e definisce la definizione diCLASSPATH
variabili di ambiente.bin/derive_sdk
: un programma binario nativo eseguito nelle prime fasi del processo di avvio del dispositivo. e legge i metadati degli altri moduli per impostare le proprietà di sistema relative dell'estensione SDK (ad esempio,build.version.extensions.r
).javalib/framework-sdkextension.jar
: questo file si trova nel percorso bootclass che espone le API alle app per eseguire query a livello di SDK dell'estensione.
Ricava livello di SDK delle estensioni
Il programma derive_sdk
legge i metadati archiviati come file protobuf binari nella
etc/sdkinfo.binarypb
percorso secondario all'interno di ogni modulo APEX. Per maggiori dettagli su protobuf
struttura, fai riferimento
protobuf
.
Livello SDK estensione di lettura
Il modulo Estensioni SDK mostra
SdkExtensions
classe java nel pacchetto android.os.ext
. Usa getExtensionVersion(int)
per leggere la versione di un'estensione SDK (ad esempio,
getExtensionVersion(Build.VERSION_CODES.R)
).
Estrazione di percorsi delle classi
Il servizio derive_classpath
legge e unisce i singoli file di configurazione
/system/etc/classpaths/
e /apex/*/etc/classpaths/
. Ogni configurazione archivia
messaggio protobuf da classpaths.proto
in un formato binario proto. L'esatto algoritmo di unione che determina l'ordine
delle voci classpath è descritto in
derive_classpath.cpp
e potrebbero cambiare nel tempo.