O nível da API do fornecedor se refere à versão da interface com suporte da partição do fornecedor. A interface é bidirecional e descreve a API que a partição do fornecedor fornece à partição do sistema (a camada de abstração de hardware ou interface HAL) e também a API que a partição do fornecedor requer da partição do sistema (o kit de desenvolvedores nativo de baixo nível ou a interface LLNDK).
O nível da API do fornecedor também é usado para determinar os requisitos de software do fornecedor (VSRs, na sigla em inglês), que é uma coleção de requisitos funcionais e não funcionais que o software na partição do fornecedor precisa atender.
O restante desta página explica como as propriedades do sistema são usadas, dependendo da versão do Android, para determinar o nível da API do fornecedor.
Bloqueio do fornecedor
O Android permite que um fornecedor congele a partição do fornecedor em uma versão específica do VSR. O conjunto de recursos que o Android espera da partição do fornecedor é determinado pelo nível da API do fornecedor associado a ela. No momento da execução, o comportamento do software em execução na partição do sistema é ajustado para acomodar o nível da API do fornecedor da partição do fornecedor. Por exemplo, o software na partição do sistema pode não usar novos recursos se eles não tiverem suporte do nível da API da partição do fornecedor.
O congelamento do fornecedor só está disponível se você estiver criando um dispositivo compatível com Android.
Determinar o nível da API do fornecedor (Android 14-QPR3 e mais recentes)
Para o Android 14-QPR3 e versões mais recentes, o nível da API do fornecedor é lançado separadamente, o que significa que o nível da API do SDK e o nível da API do fornecedor estão fora de sincronia.
Devido aos cronogramas de lançamento separados, para o Android 14-QPR3 e versões mais recentes, o nível da API do fornecedor é completamente desvinculado do nível da API do SDK. Para garantir que esse desacoplamento seja claro, o formato do nível da API do fornecedor é uma data formatada como AAAAMM (ano e mês), enquanto o nível do SDK é um número inteiro.
O Android 14-QPR3 e versões mais recentes contêm as seguintes propriedades
do sistema relacionadas ao nível da API do fornecedor (ro.vendor.api_level
):
Propriedade do sistema | Formato | Descrição | Configuração inicial |
---|---|---|---|
ro.board.api_level |
AAAAMM | O nível da API do fornecedor com suporte do software de um chipset. Essa propriedade é definida para todos os chipsets. | Isso é definido pelo sistema de build automaticamente. |
ro.board.first_api_level |
AAAAMM | O nível da API do fornecedor com que o software de um chipset foi lançado pela primeira vez. Essa propriedade é uma função apenas do chipset e é definida pelos fornecedores de SoC se o chipset de SoC estiver qualificado para congelamento do fornecedor. Após a configuração inicial, ela não pode ser modificada. | Os fornecedores de SoC definem essa configuração usando BOARD_SHIPPING_API_LEVEL . |
ro.product.first_api_level |
Número inteiro | O nível da API do SDK com que o dispositivo é inicializado inicialmente. | Essa propriedade é definida pelo OEM e nunca é atualizada, mesmo após atualizações do SO. |
ro.vendor.api_level |
AAAAMM | O nível da API do fornecedor ao qual o dispositivo como um todo precisa se conformar. | Descrito após esta tabela. |
ro.board.api_frozen |
booleano | Essa propriedade é definida como true se o nível da API do fornecedor representado por ro.board.api_level for finalizado. |
Se essa propriedade não for definida, o padrão será false . |
ro.llndk.api_level |
AAAAMM | O nível da API do fornecedor no formato AAAAMM que o LLNDK atual na partição do sistema oferece. O LLNDK é compatível com versões anteriores, então qualquer imagem do fornecedor que seja menor ou igual a esse nível da API pode ser atualizada com essa imagem do sistema. | Essa propriedade é definida pela partição do sistema. |
A propriedade ro.vendor.api_level
é derivada de uma das duas maneiras a seguir:
Se o chipset se qualificou para o congelamento do fornecedor:
ro.vendor.api_level = min( ro.board.api_level, AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
Se o chipset não estiver em congelamento do fornecedor:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
O método AVendorSupport_getVendorApiLevelOf()
determina o nível
correspondente da API do fornecedor de um nível da API do SDK. Por exemplo,
AVendorSupport_getVendorApiLevelOf(35)
, em que 35
é o nível da API do SDK da
versão principal do Android em 2024 retorna 202404
, que é a data aproximada do
Android 14-QPR3 quando o nível da API do fornecedor atual foi
definido.
Determinar o nível da API do fornecedor (Android 13)
O nível da API do fornecedor segue o nível da API do SDK, que é para a interface app-SO e é atualizado uma vez por ano quando a nova plataforma Android é lançada para o AOSP.
O Android 13 contém as seguintes propriedades
do sistema relacionadas ao nível da API do fornecedor (ro.vendor.api_level
):
Propriedade do sistema | Formato | Descrição | Configuração inicial |
---|---|---|---|
ro.board.first_api_level |
Número inteiro | O nível da API do fornecedor com que o software de um chipset foi lançado pela primeira vez. Essa é uma função exclusiva do chipset e não pode ser modificada por fornecedores de SoC ou OEMs. Essa propriedade é definida apenas para chipsets qualificados para o congelamento do fornecedor | O valor é estabelecido definindo BOARD_SHIPPING_API_LEVEL no arquivo device.mk . |
ro.board.api_level |
Número inteiro | O nível da API do fornecedor com suporte do software de um chipset. Essa propriedade é definida apenas para os chipsets qualificados para congelamento do fornecedor. | Inicialmente, o valor dessa propriedade é definido pelo sistema de build como o mesmo valor de ro.board.first_api_level , mas pode ser atualizado se a partição do fornecedor for atualizada. |
ro.product.first_api_level |
Número inteiro | O nível da API do SDK com que o dispositivo é inicializado inicialmente. | Essa propriedade é definida pelo OEM e nunca é atualizada, mesmo após atualizações do SO. |
ro.vendor.api_level |
Número inteiro | O nível da API do fornecedor ao qual o dispositivo como um todo precisa se conformar. | Descrito após esta tabela. |
ro.vndk.version |
Número inteiro | A versão do VNDK para a qual a partição do fornecedor é criada. | Essa propriedade é definida pela partição do sistema. |
ro.vendor.build.version.sdk |
Número inteiro | O nível da API do SDK da árvore de origem em que a partição do fornecedor foi criada. | |
ro.vendor.build.version.release |
Número inteiro | A versão da plataforma da árvore de origem em que a partição do fornecedor foi criada. | |
ro.vendor.build.version.release_or_codename |
Número inteiro | O nome de código da árvore de origem em que a partição do fornecedor foi criada. |
A propriedade ro.vendor.api_level
é definida automaticamente como o mínimo de ro.board.api_level
(ou ro.board.first_api_level
se ro.board.api_level
não estiver definido) e
ro.product.first_api_level
.