O módulo SDK Extensions decide o nível SDK de extensão do dispositivo e fornece APIs para aplicativos para consultar o nível SDK de extensão. Este módulo é atualizável, o que significa que pode receber atualizações de funcionalidade fora do ciclo normal de lançamento do Android.
SDK Extensions é responsável por:
- Decidir o nível SDK de extensão do dispositivo.
- Fornecer APIs para aplicativos para consultar o nível do SDK de extensão.
- (A partir do Android 12) Determinar os valores para as variáveis de ambiente
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
eSYSTEMSERVERCLASSPATH
.
Formato do módulo
O módulo SDK Extensions ( com.android.sdkext
) está no formato APEX e está disponível para dispositivos com Android 11 ou superior.
Formato do pacote
O módulo SDK Extensions ( com.google.android.sdkext
) está no formato APEX e contém os seguintes componentes:
(A partir do Android 12)
bin/derive_classpath
: um binário nativo executado no início do processo de inicialização do dispositivo. Ele lê arquivos de configuração de classpath individuais do sistema e outros módulos, os mescla e define a definição de variáveis de ambienteCLASSPATH
.bin/derive_sdk
: Um binário nativo que é executado no início do processo de inicialização do dispositivo e lê metadados de outros módulos para definir as propriedades do sistema relacionadas ao SDK de extensão (por exemplo,build.version.extensions.r
).javalib/framework-sdkextension.jar
: Este arquivo está no bootclasspath que expõe APIs para aplicativos para consultar o nível SDK de extensão.
Derivando o nível do SDK de extensão
O programa derive_sdk
lê metadados armazenados como arquivos protobuf binários no subcaminho etc/sdkinfo.binarypb
dentro de cada módulo APEX. Para obter detalhes sobre a estrutura do protobuf, consulte o arquivo protobuf
.
Lendo o nível do SDK da extensão
O módulo SDK Extensions expõe uma classe java SdkExtensions
no pacote android.os.ext
. Use o método getExtensionVersion(int)
para ler a versão de uma extensão SDK (por exemplo, getExtensionVersion(Build.VERSION_CODES.R)
).
Derivando caminhos de classe
O serviço derive_classpath
lê e mescla arquivos de configuração individuais em /system/etc/classpaths/
e /apex/*/etc/classpaths/
. Cada configuração armazena a mensagem protobuf de classpaths.proto
em um formato binário proto. O algoritmo de mesclagem exato que determina a ordem das entradas de caminho de classe é descrito em derive_classpath.cpp
e pode mudar com o tempo.
O módulo SDK Extensions decide o nível SDK de extensão do dispositivo e fornece APIs para aplicativos para consultar o nível SDK de extensão. Este módulo é atualizável, o que significa que pode receber atualizações de funcionalidade fora do ciclo normal de lançamento do Android.
SDK Extensions é responsável por:
- Decidir o nível SDK de extensão do dispositivo.
- Fornecer APIs para aplicativos para consultar o nível do SDK de extensão.
- (A partir do Android 12) Determinar os valores para as variáveis de ambiente
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
eSYSTEMSERVERCLASSPATH
.
Formato do módulo
O módulo SDK Extensions ( com.android.sdkext
) está no formato APEX e está disponível para dispositivos com Android 11 ou superior.
Formato do pacote
O módulo SDK Extensions ( com.google.android.sdkext
) está no formato APEX e contém os seguintes componentes:
(A partir do Android 12)
bin/derive_classpath
: um binário nativo executado no início do processo de inicialização do dispositivo. Ele lê arquivos de configuração de classpath individuais do sistema e outros módulos, os mescla e define a definição de variáveis de ambienteCLASSPATH
.bin/derive_sdk
: Um binário nativo que é executado no início do processo de inicialização do dispositivo e lê metadados de outros módulos para definir as propriedades do sistema relacionadas ao SDK de extensão (por exemplo,build.version.extensions.r
).javalib/framework-sdkextension.jar
: Este arquivo está no bootclasspath que expõe APIs para aplicativos para consultar o nível SDK de extensão.
Derivando o nível do SDK de extensão
O programa derive_sdk
lê metadados armazenados como arquivos protobuf binários no subcaminho etc/sdkinfo.binarypb
dentro de cada módulo APEX. Para obter detalhes sobre a estrutura do protobuf, consulte o arquivo protobuf
.
Lendo o nível do SDK da extensão
O módulo SDK Extensions expõe uma classe java SdkExtensions
no pacote android.os.ext
. Use o método getExtensionVersion(int)
para ler a versão de uma extensão SDK (por exemplo, getExtensionVersion(Build.VERSION_CODES.R)
).
Derivando caminhos de classe
O serviço derive_classpath
lê e mescla arquivos de configuração individuais em /system/etc/classpaths/
e /apex/*/etc/classpaths/
. Cada configuração armazena a mensagem protobuf de classpaths.proto
em um formato binário proto. O algoritmo de mesclagem exato que determina a ordem das entradas de caminho de classe é descrito em derive_classpath.cpp
e pode mudar com o tempo.