A partire dal 27 marzo 2025, ti consigliamo di utilizzare android-latest-release
anziché aosp-main
per compilare e contribuire ad AOSP. Per ulteriori informazioni, vedi Modifiche ad AOSP.
Estensioni SDK
Mantieni tutto organizzato con le raccolte
Salva e classifica i contenuti in base alle tue preferenze.
Il modulo Estensioni SDK decide il livello dell'SDK di estensione del dispositivo e fornisce API per consentire alle app di eseguire query sul livello dell'SDK di estensione. Questo modulo è aggiornabile, il che significa che può ricevere aggiornamenti alle funzionalità al di fuori del normale ciclo di rilascio di Android.
Le Estensioni SDK sono responsabili 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) Determinazione dei valori per le variabili di ambiente
BOOTCLASSPATH
, DEX2OATBOOTCLASSPATH
e SYSTEMSERVERCLASSPATH
.
Il modulo Estensioni SDK (com.android.sdkext
) è in formato
APEX ed è disponibile per i dispositivi con Android 11 o versioni successive.
Il modulo Estensioni SDK (com.google.android.sdkext
) è in formato
APEX e contiene i seguenti componenti:
(A partire da Android 12) bin/derive_classpath
: un codice binario nativo eseguito all'inizio della procedura di avvio del dispositivo. Legge i singoli file di configurazione del percorso di classe dal sistema e da altri moduli, li unisce e definisce la definizione delle variabili di ambiente CLASSPATH
.
bin/derive_sdk
: un file binario nativo che viene eseguito all'inizio della procedura di avvio del dispositivo
e legge i metadati di altri moduli per impostare le proprietà di sistema relative all'SDK
dell'estensione (ad esempio build.version.extensions.r
).
javalib/framework-sdkextension.jar
: questo file si trova nel percorso di caricamento che
espone le API alle app per eseguire query a livello di SDK dell'estensione.
Livello SDK dell'estensione dedotto
Il programma derive_sdk
legge i metadati archiviati come file protobuf binari nel percorso secondario etc/sdkinfo.binarypb
all'interno di ogni modulo APEX. Per informazioni dettagliate sulla struttura protobuf, consulta il file protobuf
.
Leggi il livello dell'SDK dell'estensione
Il modulo Estensioni SDK espone una classe Java SdkExtensions
nel pacchetto android.os.ext
. Utilizza il metodo getExtensionVersion(int)
per leggere la versione di un'estensione dell'SDK (ad esempio,
getExtensionVersion(Build.VERSION_CODES.R)
).
Derive classpaths
Il servizio derive_classpath
legge e unisce i singoli file di configurazione in /system/etc/classpaths/
e /apex/*/etc/classpaths/
. Ogni configurazione memorizza il messaggio protobuf di classpaths.proto
in un formato proto binario. L'algoritmo di unione esatto che determina l'ordine
delle voci del percorso di classe è descritto in
derive_classpath.cpp
e potrebbe cambiare nel tempo.
I campioni di contenuti e codice in questa pagina sono soggetti alle licenze descritte nella Licenza per i contenuti. Java e OpenJDK sono marchi o marchi registrati di Oracle e/o delle sue società consociate.
Ultimo aggiornamento 2025-07-27 UTC.
[[["Facile da capire","easyToUnderstand","thumb-up"],["Il problema è stato risolto","solvedMyProblem","thumb-up"],["Altra","otherUp","thumb-up"]],[["Mancano le informazioni di cui ho bisogno","missingTheInformationINeed","thumb-down"],["Troppo complicato/troppi passaggi","tooComplicatedTooManySteps","thumb-down"],["Obsoleti","outOfDate","thumb-down"],["Problema di traduzione","translationIssue","thumb-down"],["Problema relativo a esempi/codice","samplesCodeIssue","thumb-down"],["Altra","otherDown","thumb-down"]],["Ultimo aggiornamento 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."]]