O módulo "Extensões do SDK" decide o nível do SDK da extensão do dispositivo e Fornece APIs para que os apps consultem o nível do SDK da extensão. Este módulo é atualizáveis, ou seja, podem receber atualizações de funcionalidade Ciclo de lançamento do Android.
As extensões do SDK são responsáveis por:
- Decidir o nível do SDK de extensão do dispositivo.
- Disponibilizar APIs para que os apps consultem o nível do SDK da extensão.
- (A partir do Android 12) Determinar os valores para o
BOOTCLASSPATH
,DEX2OATBOOTCLASSPATH
eSYSTEMSERVERCLASSPATH
variáveis de ambiente.
Formato do módulo
O módulo de extensões do SDK (com.android.sdkext
) está no
no formato APEX e está disponível para dispositivos
com o Android 11 ou mais recente.
Formato do pacote
O módulo de extensões do SDK (com.google.android.sdkext
) está no
formato APEX e
contém os seguintes componentes:
(A partir do Android 12)
bin/derive_classpath
: A binário nativo executado no início da inicialização do dispositivo de desenvolvimento de software. Ele lê arquivos de configuração de caminho de classe individuais do sistema e outros módulos, os mescla e define a definição deCLASSPATH
variáveis de ambiente.bin/derive_sdk
: um binário nativo executado no início do processo de inicialização do dispositivo. e lê metadados de outros módulos para definir propriedades de sistema relacionadas ao SDK da extensão (por exemplo,build.version.extensions.r
).javalib/framework-sdkextension.jar
: esse arquivo está no bootclasspath que expõe APIs a apps para consultar o nível do SDK da extensão.
Derivar o nível do SDK da extensão
O programa derive_sdk
lê metadados armazenados como arquivos protobuf binários na
etc/sdkinfo.binarypb
dentro de cada módulo APEX. Para detalhes sobre o protobuf
do Terraform, consulte a
protobuf
.
Ler o nível do SDK da extensão
O módulo de extensões do SDK expõe uma
SdkExtensions
classe java no pacote android.os.ext
. Usar a getExtensionVersion(int)
para ler a versão de uma extensão do SDK (por exemplo,
getExtensionVersion(Build.VERSION_CODES.R)
).
Derivar 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
Mensagem protobuf de classpaths.proto
em um formato binário proto. O algoritmo de mesclagem exato que determina a ordem
das entradas do caminho de classe é descrita em
derive_classpath.cpp
e podem mudar com o tempo.