Nível da API do fornecedor

Nível da API do fornecedor refere-se à versão da interface compatível com o fornecedora. A interface é bidirecional. ela descreve a API que a partição do fornecedor fornece à partição do sistema (o hardware camada de abstração ou interface HAL) e também a API que o fornecedor particiona da partição do sistema (o kit de desenvolvimento nativo 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), que é uma coleção de requisitos funcionais e não funcionais que que o software da partição do fornecedor precisa atender.

O restante desta página explica como o sistema propriedades são usadas, dependendo da versão do Android, para determinar o fornecedor Nível da API.

Congelamento dos fornecedores

O Android permite que um fornecedor congele a partição do fornecedor em uma versão específica do a VSR. O conjunto de recursos que o Android espera da partição do fornecedor é determinado pela o nível da API do fornecedor associado à partição do fornecedor. No 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 a partição do sistema pode não usar novos recursos se eles não forem suportados pelo o nível da API da partição do fornecedor.

O congelamento de fornecedores só estará disponível se você estiver criando 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, ou seja, o nível da API do SDK e o fornecedor O nível da API está fora de sincronia.

Devido às programações de lançamento separadas, para Android 14-QPR3 e posteriores, o nível da API do fornecedor é totalmente dissociados do nível da API do SDK. Para garantir que essa separação seja clara, a 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 têm o sistema abaixo Propriedades 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 compatível com o software de um chipset. Esta propriedade é definida para todos os chipsets. Isso é definido automaticamente pelo sistema de compilação.
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 do SoC se o chipset SoC estiver qualificado para o congelamento de fornecedores. 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 é iniciado inicialmente. Essa propriedade é definida pelo OEM e nunca é atualizada, mesmo após upgrades do SO.
ro.vendor.api_level AAAAMM O nível da API do fornecedor com que o dispositivo como um todo precisa estar em conformidade. Descrita depois desta tabela.
ro.board.api_frozen booleano Essa propriedade será 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 o LLNDK atual na partição do sistema oferece. O LLNDK é compatível com versões anteriores. Portanto, qualquer imagem de fornecedor menor ou igual a esse nível de 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 estiver qualificado para o congelamento de fornecedor:

    ro.vendor.api_level = min(
      ro.board.api_level,
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level))
    
  • Se o chipset não estiver sob congelamento de fornecedor:

    ro.vendor.api_level =
      AVendorSupport_getVendorApiLevelOf(ro.product.first_api_level)
    

O método AVendorSupport_getVendorApiLevelOf() determina do fornecedor em um nível da API do SDK. Por exemplo AVendorSupport_getVendorApiLevelOf(35), em que 35 é o nível da API do SDK do versão principal do Android em 2024 retorna 202404, que é a data aproximada para QPR3 do Android 14 quando o nível atual da API do fornecedor era 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 é voltado ao SO do app e é atualizada uma vez por ano quando a nova plataforma Android é lançada para o AOSP.

O Android 13 tem o seguinte sistema Propriedades 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 somente do chipset e não pode ser modificada por fornecedores de SoC ou OEMs. Esta propriedade é definida apenas para chipsets qualificados para o congelamento de 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. Esta propriedade é definida apenas para os chipsets qualificados para o congelamento de fornecedor. Esta propriedade é definida para todos os chipsets. Inicialmente, o valor dessa propriedade é definido pelo sistema de compilação para 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 é iniciado inicialmente. Essa propriedade é definida pelo OEM e nunca é atualizada, mesmo após upgrades do SO.
ro.vendor.api_level Número inteiro O nível da API do fornecedor com que o dispositivo como um todo precisa estar em conformidade. Descrita depois desta tabela.
ro.vndk.version Número inteiro A versão do VNDK para a criação da partição do fornecedor. 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 codinome 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.