Os dispositivos iniciados com Android 12 usando versões de kernel superiores à v5.4 precisam ser fornecidos com o kernel GKI. Para que os parceiros possam acessar DebugFS
em compilações userdebug enquanto desenvolvem no kernel GKI, a configuração do kernel CONFIG_DEBUG_FS
é habilitada no defconfig do GKI. Nunca monte DebugFS
em compilações de usuário para dispositivos lançados no Android 12.
As compilações do Userdebug têm melhor cobertura de teste do que as compilações do usuário e são fortemente testadas durante todo o ciclo de desenvolvimento. O plano a seguir minimiza a diferença entre os dois tipos de compilação em relação ao acesso DebugFS
e fornece estes benefícios:
- Impede que compilações userdebug dependam acidentalmente do
DebugFS
para novas funcionalidades - Garante que qualquer funcionalidade existente quebrada pela falta do DebugFS seja conhecida no início do ciclo de desenvolvimento
Os acessos Debugfs em compilações userdebug são categorizados da seguinte forma:
- Inicializações de arquivo
DebugFS
durante a inicialização do dispositivo, como acesso de gravação a um arquivo noDebugFS
para ativar a coleta de dados de depuração. - Geração de bugreport: O dumpstate HAL lê arquivos
DebugFS
quandoDumpstateBoard()
é invocado pordumpstate
. Esta informação passa a fazer parte do relatório de bug. - Teste e validação específicos do dispositivo.
A tabela a seguir descreve como cada uma dessas três categorias é compatível com o Android 12. Observe que o seguinte se aplica apenas a compilações de userdebug, já que DebugFS
não pode ser montado em compilações de usuário.
Caso de uso | Compilação de depuração de usuário do Android 12 |
---|---|
Inicialização única de arquivos DebugFS , durante a inicialização . Esse acesso acontece apenas uma vez durante a inicialização. | Dumpstate HAL executa isso durante a inicialização do HAL. Para habilitar o mesmo, o init monta DebugFS em compilações userdebug antes da inicialização do HAL. Init chama umount() no DebugFS quando o dispositivo conclui a inicialização. |
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 por dumpstate ( DumpstateDevice.cpp ). A ferramenta dumpstate (parte da estrutura Android) garante que DebugFS seja montado durante a invocação. |
Teste e validação específicos do dispositivo | Raiz e shell do Adb. Monte DebugFS a partir do shell adb com acesso root 1 . |
1 Para montar DebugFS
a partir adb shell
com acesso root, use este comando:
adb shell mount -t debugfs debugfs /sys/kernel/debug
.
Ações obrigatórias do parceiro
Os parceiros precisam aprovar o seguinte com base nessas alterações nos dispositivos Android 12:
- Faça com que todas as inicializações de tempo de inicialização dos nós
DebugFS
aconteçam durante a inicialização do dumpstate HAL. Para obter um exemplo de como fazer isso, consulte DNM: Exemplo de inicialização de arquivosDebugFS
no tempo de inicialização . - Não permita acesso
DebugFS
durante o tempo de execução. As seguintes exceções se aplicam:- Geração de bugreport (vem do dumpstate HAL)
- Teste e validação (acessível por
adb root
eshell
- certifique-se de que o DebugFS seja montado primeiro)
Os desenvolvedores podem definir a propriedade persistente de depuração persist.dbg.keep_debugfs_mounted
para manter DebugFs
montados durante reinicializações em compilações userdebug e eng.
Os testes de conformidade do GTS garantem que o sistema de arquivos DebugFS
não seja montado nas compilações do usuário. As declarações neverallow
da Sepolicy garantem que, em dispositivos lançados no Android 12 ou superior, processos não autorizados não tenham acesso a DebugFs
.