Os dispositivos iniciados com o Android 12 usando versões de kernel superiores a v5.4 precisam ser enviados com o kernel GKI. Para que os parceiros possam acessar DebugFS
em builds userdebug enquanto desenvolvem no kernel GKI, a configuração do kernel CONFIG_DEBUG_FS
é habilitada no defconfig do GKI. Nunca monte o DebugFS
nas compilações do usuário para dispositivos iniciados 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 ao DebugFS
e oferece esses benefícios:
- Evita que builds de userdebug dependam acidentalmente do
DebugFS
para novas funcionalidades - Garante que qualquer funcionalidade existente quebrada pela falta de DebugFS seja conhecida no início do ciclo de desenvolvimento
Os acessos Debugfs em builds userdebug são categorizados da seguinte forma:
- Inicializações do arquivo
DebugFS
durante a inicialização do dispositivo, como um acesso de gravação a um arquivo noDebugFS
para ativar a coleta de dados de depuração. - Geração de relatório de bug: O dumpstate HAL lê arquivos
DebugFS
quandoDumpstateBoard()
é invocado pordumpstate
. Esta informação torna-se 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, pois DebugFS
não pode ser montado em compilações de usuário.
Caso de uso | Compilação de depuração do usuário do Android 12 |
---|---|
Inicialização única de arquivos DebugFS , durante a inicialização . Este acesso acontece apenas uma vez durante o boot. | O Dumpstate HAL executa isso durante a inicialização do HAL. Para habilitar o mesmo, o init monta DebugFS em builds userdebug antes que o HAL seja inicializado. Init chama umount() no DebugFS quando o dispositivo conclui a inicialização. |
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 por dumpstate ( DumpstateDevice.cpp ). A ferramenta dumpstate (parte da estrutura do Android) garante que o DebugFS montado durante a invocação. |
Teste e validação específicos do dispositivo | ADB raiz e shell. Monte o DebugFS a partir do shell adb com acesso root 1 . |
1 Para montar DebugFS
do 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 devem 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 tempo de inicialização de arquivosDebugFS
. - Não permita o acesso ao
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
montado nas reinicializações em builds userdebug e eng.
Os testes de conformidade GTS garantem que o sistema de arquivos DebugFS
não seja montado nas compilações do usuário. As instruções neverallow da neverallow
garantem que, em dispositivos iniciados no Android 12 ou superior, processos não autorizados não tenham acesso a DebugFs
.