A partir de 27 de março de 2025, recomendamos usar android-latest-release
em vez de aosp-main
para criar e contribuir com o AOSP. Para mais informações, consulte Mudanças no AOSP.
Extensões do SDK
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
O módulo de 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. Esse módulo é
atuável, ou seja, ele pode receber atualizações de funcionalidade fora do ciclo normal
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.
- Fornecimento de APIs para que os apps consultem o nível do SDK da extensão.
- (A partir do Android 12) Determinação dos valores das
variáveis de ambiente
BOOTCLASSPATH
, DEX2OATBOOTCLASSPATH
e
SYSTEMSERVERCLASSPATH
.
O módulo de extensões do SDK (com.android.sdkext
) está no
formato APEX e está disponível para dispositivos
com o Android 11 ou mais recente.
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
: 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
de outros módulos, os mescla e define a definição das variáveis de ambiente
CLASSPATH
.
bin/derive_sdk
: um binário nativo executado no início do processo de inicialização do dispositivo
e que lê os metadados de outros módulos para definir propriedades do 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 para 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 no
subcaminho etc/sdkinfo.binarypb
dentro de cada módulo do APEX. Para detalhes sobre a estrutura
do protobuf, consulte o
arquivo
protobuf
.
Nível de leitura do SDK da extensão
O módulo de extensões do SDK expõe uma classe
SdkExtensions
Java no pacote android.os.ext
. Use o método getExtensionVersion(int)
para ler a versão de uma extensão do SDK (por exemplo,
getExtensionVersion(Build.VERSION_CODES.R)
).
Derivar classpaths
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 do caminho de classe é descrito em
derive_classpath.cpp
e pode mudar com o tempo.
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 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."]]