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
DebugFS
para 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
DebugFS
durante a inicialização do dispositivo, como acesso de gravação a um arquivo emDebugFS
para ativar a coleta de dados de depuração. - Geração de bugreport: o HAL de dumpstate lê arquivos
DebugFS
quandoDumpstateBoard()
é 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
DebugFS
ocorram durante a inicialização do HAL de dumpstate. Para conferir um exemplo de como fazer isso, consulte DNM: Example for boot time initialization ofDebugFS
files. - Não permita o acesso a
DebugFS
durante 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 root
eshell
- 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
.