O nível da API do fornecedor se refere à versão da interface compatível com a partição do fornecedor. A interface é bidirecional. Ela descreve a API que a partição do fornecedor oferece à 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 exige da partição do sistema (o kit de desenvolvedores nativos de baixo nível ou 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 são um conjunto 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 sua versão do Android, para determinar o nível da API do fornecedor.
Congelamento de fornecedores
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. Em tempo de execução, o comportamento do software em execução na partição do sistema se ajusta 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 forem compatíveis com o nível da API da partição do fornecedor.
O congelamento de 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 versões mais recentes)
No 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 dessincronizados.
Devido às programações de lançamento separadas, para o Android 14-QPR3 e versões mais recentes, o nível da API do fornecedor é completamente independente 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:
Propriedade do sistema | Formato | Descrição | Configuração inicial |
---|---|---|---|
ro.board.api_level |
AAAAMM | O nível da API do fornecedor compatível com o software de um chipset. Essa propriedade é definida para todos os chipsets. | Isso é definido automaticamente pelo sistema de build. |
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 do SoC estiver qualificado para o congelamento do fornecedor. Depois da configuração inicial, ele não pode ser modificado. | 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 é lançado inicialmente. | Essa propriedade é definida pelo OEM e nunca é atualizada, nem mesmo após upgrades do SO. |
ro.vendor.api_level |
AAAAMM | O nível da API do fornecedor que corresponde a ro.product.first_api_level . Definimos ro.vendor.api_level como o valor de ro.board.api_level quando ro.board.api_level é menor que o nível da API do fornecedor de ro.product.first_api_level somente se o chipset do SoC estiver qualificado para o congelamento do fornecedor. |
Descrito após esta tabela. |
ro.board.api_frozen |
booleano | Essa propriedade é definida como true se o nível da API do fornecedor que ro.board.api_level representa 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 a LLNDK atual na partição do sistema oferece. O LLNDK é compatível com versões anteriores. Portanto, 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 na partição do sistema. |
A propriedade ro.vendor.api_level
é derivada de uma das duas maneiras a seguir:
Se o chipset estiver qualificado 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 período de congelamento do fornecedor:
ro.vendor.api_level = AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
O método AVendorSupport_getVendorApiLevelOf()
determina o nível da API do fornecedor correspondente com base no nível da API do SDK. Por exemplo, AVendorSupport_getVendorApiLevelOf(35)
, em que 35
é o nível da API do SDK da
principal versão 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:
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 nem 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 compatível com o software de um chipset. Essa propriedade é definida apenas para os chipsets qualificados para o 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 é lançado inicialmente. | Essa propriedade é definida pelo OEM e nunca é atualizada, nem mesmo após upgrades do SO. |
ro.vendor.api_level |
Número inteiro | Igual à descrição do nível da API do fornecedor na tabela anterior. | |
ro.vndk.version |
Número inteiro | A versão do VNDK com que a partição do fornecedor é criada. | Essa propriedade é definida na partição do fornecedor. |
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. |