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 implementarem essa HAL opcional. Os SoCs podem ser afetados, dependendo do que o OEM escolhe expor com essa HAL. Não há impacto esperado para as operadoras.
O que você inclui nos relatórios de bugs depende das informações que considera relevantes para a depuração, mas, em geral, quanto mais detalhado, melhor.
Exemplos e origem
Há uma implementação padrão da versão 1.0 (descontinuada) de
IDumpstateDevice que mostra um exemplo de uso da biblioteca utilitária dumpstate: frameworks/native/cmds/dumpstate/DumpstateUtil.h
. Também há 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 dumpstate que controla o conteúdo do relatório de bug está em
frameworks/native/cmds/dumpstate/
.
Implementação
Para implementar essa HAL, implemente a
interface android.hardware.dumpstate@1.1::IDumpstateDevice
HAL. Há muitos valores possíveis de DumpstateMode
, mas nem todos são compatíveis com um único dispositivo (por exemplo, WEAR para dispositivos que não são Wear OS).
A implementação da HAL dumpstate é opcional. Todos os novos dispositivos lançados com o Android 11 PRECISAM implementar o IDumpstateDevice 1.1 se implementarem a HAL Dumpstate. Dispositivos que já implementaram o IDumpstateDevice 1.0 antes do Android 11 podem ser atualizados para a versão 1.1 com relativa facilidade, e isso é altamente recomendado, já que reduz muito a quantidade de informações particulares desnecessárias 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 vai exigir algumas mudanças na SEPolicy em determinadas propriedades, arquivos etc. do sistema para que tudo funcione corretamente. Além disso, será necessário coordenar 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 o registro do fornecedor nas configurações do desenvolvedor.
Quando ele está desativado, o dumpstateBoard_1_1
ainda pode gerar informações essenciais mínimas, conforme determinado pelo OEM. Desativar o registro do fornecedor faz com que o
IDumpstateDevice::dumpstateBoard
adicione apenas informações essenciais a um relatório
de bug. Já a ativação inclui todas as informações escolhidas pelo OEM.
É possível modificar dumpstate.cpp
(que chama os métodos IDumpstateDevice HAL),
por exemplo, para aumentar o tempo limite dado para a conclusão de dumpstateBoard
.
No entanto, a lógica principal de dumpstate.cpp
não deve ser alterada.
Os tempos limite podem ter qualquer valor, mas não devem aumentar muito o tempo necessário para concluir um relatório de bug. Em particular, o
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 do 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
.