Requisitos principais do kernel

O Android 8.0 e superior exigem uma versão e configuração de kernel mínimas, que são verificadas pelas atualizações Vendor Test Suite (VTS) e over-the-air (OTA). Os kernels de dispositivos Android devem habilitar o suporte ao kernel .config e a opção de ler a configuração do kernel em tempo de execução por meio do sistema de arquivos procfs .

Suporte a .config do kernel

Todos os kernels do dispositivo devem habilitar a totalidade do android-base.cfg , que deve incluir as seguintes opções de configuração do kernel (ou seu equivalente na versão do kernel):

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y

Versão do kernel

Para o Android 9, os requisitos mínimos de versão do kernel LTS (Long Term Support) são 4.4.107, 4.9.84 e 4.14.42.

  • Todos os SoCs produzidos em 2018 devem ser lançados com kernel 4.9.84 ou superior.
  • Todos os outros SoCs que executam dispositivos Android com Android 9 devem usar o kernel 4.4.107 ou superior.
  • Os kernels de dispositivos baseados em 4.14 devem incluir a versão LTS 4.14.42 ou superior.
  • Independentemente da data de lançamento, todos os SoCs com lançamentos de dispositivos no Android 8.0 e superior permanecem sujeitos às alterações de kernel necessárias para habilitar o Treble.
  • Dispositivos Android mais antigos atualizados para o Android 8.0 ou superior podem continuar a usar sua versão original do kernel base.

Para obter detalhes sobre kernels LTS, consulte kernels estáveis ​​de longo prazo e kernels comuns do Android

Suporte à árvore de dispositivos

Se a plataforma não suportar a especificação ACPI (Advanced Configuration and Power Interface) , o suporte a devicetree no kernel deve ser habilitado e os carregadores de inicialização devem passar a descrição do hardware na forma de uma devicetree para o kernel. A devicetree também deve estar disponível para leitura do Android e deve ser capaz de passar parâmetros específicos do fornecedor e do ODM para o Android. CONFIG_OF é obrigatório, juntamente com todas as outras opções de configuração do kernel CONFIG_OF_* específicas de dispositivo e subsistema.

Usando o DebugFS

A implementação da interface do fornecedor não pode depender do sistema de arquivos DebugFS para acessar informações de depuração. Isso porque no Android 7.0–10, DebugFS pode ser ativado, mas o teste VTS pode ser feito com DebugFS desmontado.

No Android 11, DebugFS não pode ser acessado ou montado em dispositivos de produção, portanto, os fabricantes de dispositivos devem removê-lo. Antes do Android 11, o dumpstate acessava as estatísticas do binder do DebugFS . Como as compilações do usuário iniciadas com o Android 11 ou superior não podem acessar o DebugFS , o dumpstate acessa as estatísticas do binderfs . Para habilitar o Binderfs , habilite a configuração do kernel CONFIG_ANDROID_BINDERFS .

No Android 11, o VTS aplica estes dois requisitos:

  • CONFIG_DEBUG_FS não está habilitado na configuração do kernel do dispositivo.
  • DebugFS não está listado em /proc/filesystems .

DebugFS no Android 11

A tabela a seguir descreve como cada uma dessas três categorias é compatível com o Android 11. Observe que o seguinte se aplica apenas a compilações de userdebug, pois DebugFS não pode ser montado em compilações de usuário. Nunca monte o DebugFS nas compilações do usuário para dispositivos iniciados no Android 11.

Caso de uso Compilação de depuração do usuário do Android 11
Inicialização única de arquivos DebugFS , durante a inicialização . Este acesso acontece apenas uma vez durante o boot. O init do fornecedor faz isso.
Geração de relatório de bug: O dumpstate HAL lê arquivos DebugFS , que se tornam parte do relatório de bug. Feito por dumpstate HAL dentro de DumpstateBoard() quando invocado pela ferramenta dumpstate.
Teste e validação específicos do dispositivo ADB raiz e shell