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, além de permitir que as versões do usuário ativem e desativem a geração de registros do fornecedor (o padrão para versões do usuário é desativado). Isso dá aos OEMs mais controle sobre o que é incluído em tipos específicos 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 esse HAL. Não esperamos impacto nos provedores de serviços de telefonia.
O que você inclui nos relatórios de bugs depende das informações que você considera relevantes para depuração, mas, em geral, 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 util dumpstate:
frameworks/native/cmds/dumpstate/DumpstateUtil.h
. Há também uma implementação do 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 de 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 HAL android.hardware.dumpstate@1.1::IDumpstateDevice
. Há muitos
valores possíveis de DumpstateMode
, mas nem todos têm suporte de um
único dispositivo (por exemplo, WEAR para dispositivos que não são do Wear OS).
A implementação do HAL de dumpstate é opcional. Todos os novos dispositivos lançados com o Android 11 PRECISAM implementar IDumpstateDevice 1.1 se implementarem a HAL Dumpstate. Os dispositivos que já implementaram o IDumpstateDevice 1.0 antes do Android 11 podem ser atualizados para a versão 1.1 com facilidade. Recomendamos fazer isso, porque reduz muito a quantidade de informações privadas desnecessárias incluídas nos relatórios de bugs.
Esse recurso depende das mudanças principais de dumpstate também incluídas no Android
11, localizadas em frameworks/native/cmds/dumpstate
.
A implementação desse HAL provavelmente exigirá algumas mudanças na SEPolicy para determinadas propriedades do sistema, arquivos etc. para que tudo funcione totalmente e exigirá coordenação com os fornecedores para despejar todas as informações relevantes nos relatórios de bugs.
Personalização
O usuário do dispositivo pode ativar ou desativar o registro do fornecedor usando as configurações do desenvolvedor.
Quando desativado, o dumpstateBoard_1_1
ainda pode 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 bug, enquanto a ativação inclui todas as informações que o OEM escolher.
É possível modificar dumpstate.cpp
, que chama os métodos HAL IDumpstateDevice,
por exemplo, para aumentar o tempo limite dado para a conclusão de dumpstateBoard
.
No entanto, a lógica principal de dumpstate.cpp
precisa permanecer inalterada.
Os tempos limite podem ter qualquer valor, mas não devem aumentar drasticamente o tempo
de conclusão de um relatório de bug. Em particular,
DumpstateMode::CONNECTIVITY
é muito sensível ao tempo e precisa ser executado o mais rápido
possível para coletar todos os registros de modem/Wi-Fi/rede relevantes.
Validação
Há um teste VTS para a implementação de IDumpstateDevice, e há
testes de unidade funcionais para a funcionalidade geral de BugreportManager
.
O caso de teste manual recomendado é
frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java
.