Implementando o registro de fornecedores com escopo

O Android 11 adiciona um novo HAL, IDumpstateDevice (versão 1.1). Este HAL expõe novos métodos para logs de fornecedor de escopo mais restrito que são incluídos em relatórios de bug padrão, bem como para permitir que as compilações do usuário ativem e desativem o logon do fornecedor (o padrão para compilações do usuário é 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 bug depende de quais informações você considera relevantes para 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 utilitária 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:

Implementação

Para implementar este HAL, implemente a interface android.hardware.dumpstate@1.1::IDumpstateDevice HAL. Há muitos valores DumpstateMode possíveis, mas nem todos são compatíveis com 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 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 estranhas incluídas nos relatórios de bugs.

Esse recurso depende das alterações de dumpstate principais também incluídas no Android 11, localizadas em frameworks/native/cmds/dumpstate .

A implementação desse HAL provavelmente exigirá algumas alterações 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 IDumpstateDevice HAL), por exemplo, para aumentar o tempo limite fornecido para a conclusão de dumpstateBoard . No entanto, a lógica principal de dumpstate.cpp deve permanecer inalterada.

Os tempos limite podem ser de 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 a funcionalidade geral BugreportManager .

O caso de teste manual recomendado é frameworks/base/core/tests/bugreports/src/android/server/bugreports/BugreportManagerTest.java .