A partir del 27 de marzo de 2025, te recomendamos que uses android-latest-release
en lugar de aosp-main
para compilar y contribuir a AOSP. Para obtener más información, consulta Cambios en AOSP.
Extensiones del SDK
Organiza tus páginas con colecciones
Guarda y categoriza el contenido según tus preferencias.
El módulo de extensiones del SDK decide el nivel de SDK de la extensión del dispositivo y proporciona APIs para que las apps consulten el nivel de SDK de la extensión. Este módulo se puede actualizar, lo que significa que puede recibir actualizaciones de funciones fuera del ciclo normal de lanzamientos de Android.
Las Extensiones del SDK son responsables de lo siguiente:
- Decidir el nivel del SDK de extensión del dispositivo
- Proporciona APIs para que las apps consulten el nivel del SDK de la extensión.
- (A partir de Android 12) Determinar los valores de las variables de entorno
BOOTCLASSPATH
, DEX2OATBOOTCLASSPATH
y SYSTEMSERVERCLASSPATH
El módulo de extensiones del SDK (com.android.sdkext
) está en formato APEX y está disponible para dispositivos que ejecutan Android 11 o versiones posteriores.
El módulo de extensiones del SDK (com.google.android.sdkext
) está en formato APEX y contiene los siguientes componentes:
(A partir de Android 12) bin/derive_classpath
: Es un objeto binario nativo que se ejecuta al principio del proceso de inicio del dispositivo. Lee archivos de configuración de classpath individuales del sistema y otros módulos, los combina y define la definición de las variables de entorno CLASSPATH
.
bin/derive_sdk
: Es un binario nativo que se ejecuta al principio del proceso de inicio del dispositivo y lee los metadatos de otros módulos para establecer propiedades del sistema relacionadas con el SDK de la extensión (por ejemplo, build.version.extensions.r
).
javalib/framework-sdkextension.jar
: Este archivo se encuentra en el bootclasspath que expone las APIs a las apps para consultar el nivel de SDK de la extensión.
Deriva el nivel del SDK de la extensión
El programa derive_sdk
lee los metadatos almacenados como archivos protobuf binarios en la subruta etc/sdkinfo.binarypb
dentro de cada módulo APEX. Para obtener detalles sobre la estructura de protobuf, consulta el archivo protobuf
.
Lee el nivel del SDK de la extensión
El módulo de extensiones del SDK expone una clase de Java SdkExtensions
en el paquete android.os.ext
. Usa el método getExtensionVersion(int)
para leer la versión de una extensión de SDK (por ejemplo, getExtensionVersion(Build.VERSION_CODES.R)
).
Cómo derivar rutas de clase
El servicio derive_classpath
lee y combina archivos de configuración individuales en /system/etc/classpaths/
y /apex/*/etc/classpaths/
. Cada configuración almacena el mensaje de protobuf de classpaths.proto
en un formato binario de proto. El algoritmo de combinación exacto que determina el orden de las entradas de classpath se describe en derive_classpath.cpp
y puede cambiar con el tiempo.
El contenido y las muestras de código que aparecen en esta página están sujetas a las licencias que se describen en la Licencia de Contenido. Java y OpenJDK son marcas registradas de Oracle o sus afiliados.
Última actualización: 2025-07-27 (UTC)
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Falta la información que necesito","missingTheInformationINeed","thumb-down"],["Muy complicado o demasiados pasos","tooComplicatedTooManySteps","thumb-down"],["Desactualizado","outOfDate","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Problema con las muestras o los códigos","samplesCodeIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 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."]]