Implementar a geração de registros do fornecedor com escopo

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:

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.