Os dispositivos lançados com o Android 12 usando versões
do kernel mais recentes que a v5.4 precisam ser enviados com o kernel do GKI. Para que
os parceiros possam acessar DebugFS em builds de userdebug durante o desenvolvimento no kernel
do GKI, a configuração do kernel CONFIG_DEBUG_FS é ativada no defconfig do GKI.
Nunca monte DebugFS em builds de usuário para dispositivos
lançados no Android 12.
Os builds do userdebug têm uma cobertura de teste melhor do que os builds do usuário e são
testados extensivamente durante o ciclo de desenvolvimento. O plano a seguir minimiza a
diferença entre os dois tipos de build em relação ao acesso DebugFS e
oferece estes benefícios:
- Evita que builds de userdebug dependam acidentalmente de
DebugFSpara novas funcionalidades. - Garante que qualquer funcionalidade existente que seja interrompida pela falta do DebugFS seja conhecida no início do ciclo de desenvolvimento
Os acessos de DebugFS em builds de userdebug são categorizados da seguinte forma:
- Inicializações de arquivos
DebugFSdurante a inicialização do dispositivo, como acesso de gravação a um arquivo emDebugFSpara ativar a coleta de dados de depuração. - Geração de bugreport: o HAL de dumpstate lê arquivos
DebugFSquandoDumpstateBoard()é invocado pordumpstate. Essas informações fazem parte do relatório de bug. - Testes e validação específicos do dispositivo.
A tabela a seguir descreve como cada uma dessas três categorias tem
suporte no Android 12. O
seguinte só se aplica a builds userdebug, já que DebugFS não pode ser
montado em builds do usuário.
| Caso de uso | Build userdebug do Android 12 |
|---|---|
Inicialização única de arquivos DebugFS durante a inicialização.
Esse acesso acontece apenas uma vez durante a inicialização.
|
O HAL Dumpstate executa isso durante a inicialização do HAL. Para ativar isso,
init monta DebugFS em builds de userdebug antes que o HAL seja inicializado.
Init chama umount() em DebugFS quando
a inicialização do dispositivo é concluída.
|
Geração de relatórios de bugs: o HAL de dumpstate lê
arquivos DebugFS, que se tornam parte do relatório de bugs.
|
Feito por dumpstate HAL em DumpstateBoard() quando invocado por dumpstate
(DumpstateDevice.cpp).
A ferramenta dumpstate (parte do framework do Android) garante que o DebugFS
seja montado durante a invocação.
|
| Testes e validação específicos do dispositivo | Raiz e shell do adb. Monte DebugFS no shell do adb com
acesso raiz1.
|
1Para montar DebugFS em adb shell com
acesso raiz, use este comando:
adb shell mount -t debugfs debugfs /sys/kernel/debug.
Ações necessárias do parceiro
Os parceiros precisam implementar o seguinte com base nessas mudanças nos dispositivos Android 12:
- Fazer com que todas as inicializações de tempo de inicialização de nós
DebugFSocorram durante a inicialização do HAL de dumpstate. Para conferir um exemplo de como fazer isso, consulte DNM: Example for boot time initialization ofDebugFSfiles. - Não permita o acesso a
DebugFSdurante a execução. As seguintes exceções se aplicam:- Geração de relatórios de bugs (vem do HAL de dumpstate)
- Teste e validação (acessível por
adb rooteshell- verifique se o DebugFS foi montado primeiro)
Os desenvolvedores podem definir a propriedade persistente de depuração
persist.dbg.keep_debugfs_mounted para manter DebugFs montado em
reinicializações em builds de userdebug e eng.
Os testes de compliance do GTS garantem que o sistema de arquivos DebugFS não seja
montado em builds do usuário. As declarações neverallow da Sepolicy garantem que, em dispositivos
que são iniciados no Android 12 ou mais recente, processos não autorizados não tenham
acesso a DebugFs.