Requisitos principais do kernel

O Android 8.0 e superior exigem uma versão mínima do kernel e uma configuração do kernel, que são verificadas pelo Vendor Test Suite (VTS) e pelas atualizações over-the-air (OTA). Os kernels de dispositivos Android devem ativar 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 ao kernel .config

Todos os kernels de dispositivos devem ativar todo o android-base.cfg , que deve incluir as seguintes opções de configuração do kernel (ou sua versão equivalente do kernel):

CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y

Versão do kernel

Para o Android 9, os requisitos mínimos da versão do kernel do Long Term Support (LTS) 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 4.14.42 ou superior do LTS.
  • Independentemente da data de lançamento, todos os SoCs com lançamento de dispositivos no Android 8.0 e superior permanecem sujeitos às alterações de kernel necessárias para ativar o Treble.
  • Dispositivos Android mais antigos atualizados para Android 8.0 ou superior podem continuar a usar sua versão base original do kernel.

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

Suporte à árvore de dispositivos

Se a plataforma não suportar a especificação Advanced Configuration and Power Interface (ACPI) , o suporte a devicetree no kernel deverá ser habilitado e os bootloaders deverão passar a descrição do hardware na forma de uma devicetree para o kernel. O 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 do dispositivo e do subsistema.

Usando DebugFS

A implementação da interface do fornecedor não pode contar com o sistema de arquivos DebugFS para acessar informações de depuração. Isso ocorre 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, dumpstate acessava as estatísticas do binder do DebugFS . Como as compilações do usuário lançadas com Android 11 ou superior não podem acessar DebugFS , dumpstate acessa estatísticas de binder de binderfs . Para habilitar Binderfs , habilite a configuração do kernel CONFIG_ANDROID_BINDERFS .

No Android 11, o VTS impõe 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 DebugFS em compilações de usuário para dispositivos lançados no Android 11.

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