O Android 11 adiciona uma nova HAL, IDumpstateDevice (versão 1.1). Essa HAL expõe novos métodos para restringir ainda mais o escopo dos registros de fornecedores incluídos em relatórios de bugs padrão, assim como para permitir que as versões do usuário ativem e desativem a geração de registros do fornecedor (o padrão para versões de usuário é desativado). Dessa forma, os OEMs têm mais controle sobre o que é incluído em determinados tipos de relatórios de bugs.
Esse recurso afeta os OEMs se eles optarem por implementar essa HAL opcional. Os SoCs podem ser afetados, dependendo do que o OEM escolher expor com essa HAL. Não há impacto esperado nas operadoras.
O que você inclui nos relatórios de bugs depende das informações que você considera relevantes para a depuração, mas, geralmente, quanto mais detalhado, melhor.
Exemplos e origem
Há uma implementação padrão da versão 1.0 (descontinuada) do IDumpstateDevice que mostra um exemplo de uso da biblioteca de utilitários dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h. Há também uma implementação do Cuttlefish da HAL 1.1: device/google/cuttlefish/guest/monitoring/dumpstate_ext/*.
O código-fonte está localizado aqui:
- Os arquivos HAL estão em
hardware/interfaces/dumpstate/1.1/. - O código nativo do dumpstate que controla o conteúdo do relatório de bugs está em
frameworks/native/cmds/dumpstate/.
Implementação
Para implementar essa HAL, implemente a interface HAL android.hardware.dumpstate@1.1::IDumpstateDevice. Há muitos valores DumpstateMode possíveis, mas nem todos provavelmente serão compatíveis com um único dispositivo (por exemplo, WEAR para dispositivos que não são Wear OS).
A implementação da HAL do dumpstate é opcional. Todos os novos dispositivos lançados com o Android 11 PRECISAM implementar o IDumpstateDevice 1.1 se implementarem a HAL do dumpstate. Os dispositivos que já implementaram o IDumpstateDevice 1.0 antes do Android 11 devem ser relativamente fáceis de fazer upgrade para a versão 1.1. Recomendamos fazer isso, já que reduz muito a quantidade de informações particulares estranhas incluídas nos relatórios de bugs.
Esse recurso depende das mudanças principais do dumpstate também incluídas no Android 11, localizadas em frameworks/native/cmds/dumpstate.
A implementação dessa HAL provavelmente exigirá algumas mudanças na SEPolicy em determinadas propriedades, arquivos etc. do sistema para que tudo funcione totalmente, e exigirá coordenação com os fornecedores para despejar todas as informações relevantes em relatórios de bugs.
Personalização
O usuário do dispositivo pode ativar ou desativar a geração de registros do fornecedor usando as configurações do desenvolvedor.
Quando estiver desativado, dumpstateBoard_1_1 ainda poderá gerar informações essenciais mínimas, conforme determinado pelo OEM. Desativar a geração de registros do fornecedor faz com que IDumpstateDevice::dumpstateBoard adicione apenas informações essenciais a um relatório de bugs, enquanto ativá-lo inclui todas as informações que o OEM escolher.
É possível modificar dumpstate.cpp (que chama os métodos HAL do IDumpstateDevice), por exemplo, para aumentar o tempo limite fornecido para a conclusão de dumpstateBoard.
No entanto, a lógica principal de dumpstate.cpp precisa permanecer inalterada.
Os tempos limite podem ser qualquer valor, mas não devem aumentar muito o tempo necessário para concluir um relatório de bugs. Em particular, DumpstateMode::CONNECTIVITY é altamente sensível ao tempo e precisa ser executado o mais rápido possível para coletar todos os registros relevantes de modem/Wi-Fi/rede.
Validação
Há um teste VTS para a implementação do IDumpstateDevice e testes de unidade funcionais para a funcionalidade geral do BugreportManager.
O caso de teste manual recomendado é frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java.