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 del SDK de la extensión. En este módulo, actualizable, lo que significa que puede recibir actualizaciones de funciones fuera de lo normal Ciclo de actualización de Android
Las extensiones del SDK son responsables de lo siguiente:
- Decidir el nivel de SDK de la extensión del dispositivo
- Proporcionar APIs para que las apps consulten el nivel de SDK de la extensión
- Determinar los valores de la función (A partir de Android 12)
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
y Variables de entornoSYSTEMSERVERCLASSPATH
.
Formato del módulo
El módulo de extensiones del SDK (com.android.sdkext
) está en
formato APEX y está disponible para dispositivos
con Android 11 o una versión posterior.
Formato del paquete
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
: A Objeto binario nativo que se ejecuta antes del inicio del dispositivo el proceso de administración de recursos. Lee archivos de configuración de ruta de clase individuales desde el sistema otros módulos, los combina y define la definición deCLASSPATH
variables de entorno.bin/derive_sdk
: Es un objeto binario nativo que se ejecuta anticipadamente en el proceso de inicio del dispositivo. y lee los metadatos de otros módulos para definir propiedades del sistema relacionadas con de extensión de SDK (por ejemplo,build.version.extensions.r
).javalib/framework-sdkextension.jar
: Este archivo se encuentra en bootclasspath que expone las APIs a las apps para consultar el nivel del SDK de la extensión.
Cómo derivar el nivel del SDK de la extensión
El programa derive_sdk
lee los metadatos almacenados como archivos binarios protobuf en el
Subruta de acceso etc/sdkinfo.binarypb
dentro de cada módulo APEX. Para obtener detalles sobre protobuf
consulta la página
protobuf
.
Leer el nivel del SDK de la extensión
El módulo de extensiones del SDK expone un
SdkExtensions
Java en el paquete android.os.ext
. Usa el getExtensionVersion(int)
para leer la versión de una extensión del SDK (por ejemplo,
getExtensionVersion(Build.VERSION_CODES.R)
).
Deriva rutas de clase
El servicio derive_classpath
lee y combina los archivos de configuración individuales en
/system/etc/classpaths/
y /apex/*/etc/classpaths/
. Cada configuración almacena
Mensaje protobuf de classpaths.proto
en un formato binario proto. El algoritmo de combinación exacto que determina el orden
de las entradas de la ruta de clase se describe en
derive_classpath.cpp
y pueden cambiar con el tiempo.