O Android 11 adiciona um novo HAL, IDumpstateDevice (versão 1.1). Essa HAL expõe novos métodos para logs de fornecedores de escopo mais restrito que estão incluídos em relatórios de bugs padrão, bem como para permitir que compilações de usuários ativem e desativem o log de fornecedores (o padrão para compilações de usuários é desativado). Isso dá aos OEMs 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 esse HAL opcional. Os SoCs podem ser afetados, dependendo do que o OEM escolher expor com este HAL. Não há impacto esperado para as operadoras.
O que você inclui nos relatórios de bugs depende de quais informações você considera relevantes para a depuração, mas geralmente mais detalhado é melhor.
Exemplos e fonte
Há uma implementação padrão da versão 1.0 (descontinuada) do IDumpstateDevice que mostra um exemplo de uso da biblioteca dumpstate util: frameworks/native/cmds/dumpstate/DumpstateUtil.h
. Há também uma implementação do Cuttlefish do 1.1 HAL: 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 bug está em
frameworks/native/cmds/dumpstate/
.
Implementação
Para implementar este HAL, implemente a interface HAL android.hardware.dumpstate@1.1::IDumpstateDevice
. Há muitos valores DumpstateMode
possíveis, mas nem todos são suportados por um único dispositivo (por exemplo, WEAR para dispositivos não Wear OS).
A implementação do HAL dumpstate é opcional. Todos os novos dispositivos lançados com o Android 11 DEVEM implementar o IDumpstateDevice 1.1 se implementarem o Dumpstate HAL. Os dispositivos que já implementaram o IDumpstateDevice 1.0 antes do Android 11 devem ser relativamente fáceis de atualizar para 1.1, e isso é altamente recomendado, pois reduz bastante a quantidade de informações privadas irrelevantes incluídas nos relatórios de bugs.
Esse recurso depende das alterações principais do dumpstate também incluídas no Android 11, localizadas em frameworks/native/cmds/dumpstate
.
A implementação dessa HAL provavelmente exigirá algumas alterações da SEPolicy em certas propriedades do sistema, arquivos, etc.
Costumização
O usuário do dispositivo pode ativar ou desativar o logon do fornecedor usando as configurações do desenvolvedor. Quando está desativado, dumpstateBoard_1_1
ainda pode gerar informações essenciais mínimas conforme determinado pelo OEM. Desativar o logon do fornecedor faz com que IDumpstateDevice::dumpstateBoard
adicione apenas informações essenciais a um relatório de bug, enquanto ativá-lo inclui qualquer informação que o OEM escolher.
Você pode modificar dumpstate.cpp
(que chama os métodos HAL IDumpstateDevice), por exemplo, para aumentar o tempo limite fornecido para que dumpstateBoard
seja concluído. No entanto, a lógica principal do dumpstate.cpp
deve permanecer inalterada.
Os tempos limite podem ter qualquer valor, mas não devem aumentar drasticamente o tempo que um relatório de bug leva para ser concluído. Em particular, DumpstateMode::CONNECTIVITY
é altamente sensível ao tempo e precisa ser executado o mais rápido possível para coletar todos os logs relevantes de modem/Wi-Fi/rede.
Validação
Há um teste VTS para a implementação do IDumpstateDevice e há 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
.