O Android 11 adiciona um novo HAL, IDumpstateDevice (versão 1.1). Este HAL expõe novos métodos para definir um escopo mais rígido de logs de fornecedores 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.
Este recurso impactará os OEMs se eles decidirem implementar este HAL opcional. Os SoCs podem ser afetados, dependendo do que o OEM decidir 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 (obsoleta) de 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 Cuttlefish do 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 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
. Existem muitos valores DumpstateMode
possíveis, mas nem todos provavelmente serão suportados por um único dispositivo (por exemplo, WEAR para dispositivos não-Wear OS).
A implementação do dumpstate HAL é opcional. Todos os novos dispositivos lançados com Android 11 DEVEM implementar IDumpstateDevice 1.1 se implementarem o Dumpstate HAL. 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 estranhas incluídas em 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 deste HAL provavelmente exigirá algumas alterações na SEPolicy em certas propriedades do sistema, arquivos, etc. para que as coisas funcionem totalmente, e exigirá coordenação com os fornecedores para despejar todas as informações relevantes em relatórios de bugs.
Costumização
O usuário do dispositivo pode ativar ou desativar o logon do fornecedor usando as configurações do desenvolvedor. Quando desligado, 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 quaisquer informações 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 a conclusão de dumpstateBoard
. No entanto, a lógica central 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 de IDumpstateDevice e há testes de unidade funcional para funcionalidade geral BugreportManager
.
O caso de teste manual recomendado é frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
.