Depois de ativar a otimização do app, verifique se ele está funcionando conforme o esperado e se a configuração do R8 está fazendo o que você espera. As etapas gerais são as seguintes:
- Teste as jornadas ideais do usuário (CUJs) do app: por exemplo, verifique se os usuários podem fazer login e outras tarefas importantes.
- Meça os ganhos de performance usando comparativos:compare seu app antes e depois de ativar a otimização.
Se você encontrar problemas, o R8 oferece ferramentas para ajudar na solução. Se você não conseguir resolver um problema com o R8, informe um bug.
Dicas gerais
Os problemas com o R8 geralmente são exclusivos do app, mas aqui estão algumas dicas gerais para facilitar a depuração:
- Desativar temporariamente a ofuscação:o R8 ofusca o código como parte do
processo de otimização. A ofuscação geralmente não é a causa de erros, mas
ela dificulta a depuração. Adicione as flags
‑dontobfuscate
e‑dontoptimize
ao arquivo de regras de manutenção para ajudar a identificar o código problemático. Verificar a reflexão:se você encontrar uma exceção no such element (nenhum elemento desse tipo), como
Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace
,A exceção geralmente significa que o campo em questão está sendo usado por reflexão e você precisa adicionar uma regra de manutenção.
Inspecionar bytecode:a maioria dos problemas do R8 exige a inspeção de bytecode, que pode ser feita com ferramentas como o APK Analyzer.
Verificar quais regras são aplicadas
Para gerar um relatório completo de todas as regras que o R8 aplica ao criar seu
projeto, inclua o seguinte no arquivo proguard‑rules.pro
do módulo do app:
-printconfiguration <output-dir>/<report-name>.txt
Você pode especificar qualquer caminho e nome de arquivo. Se você não especificar um caminho ou nome de arquivo,
o R8 vai gerar o relatório de regras em <module-name>/build/outputs/mapping/<build-type>/configuration.txt
.
Entender por que o código foi mantido
Se você encontrar um código mantido que esperava ser removido, use a opção de configuração
‑whyareyoukeeping
para entender por que ele foi
mantido. O R8 gera um caminho do código mantido para um dos pontos de entrada do app. Para mais informações, consulte a documentação
‑whyareyoukeeping
no manual do Proguard.
Recuperar o stack trace original
O código processado pelo R8 muda de várias maneiras para que o stack trace não se refira mais ao código original. Por exemplo, os números de linha e os nomes de classes e métodos podem mudar. Para recuperar o stack trace original, o R8 oferece a ferramenta de linha de comando retrace, que faz parte do pacote de ferramentas de linha de comando.
Para usar o retrace, forneça um arquivo de mapeamento e um arquivo de stack trace. O arquivo de mapeamento, chamado mapping.txt
, é agrupado automaticamente com o Android App
Bundle (AAB). Para mais detalhes, consulte a documentação de retrace e o artigo da Central de Ajuda do
Play Console sobre como desofuscar stack traces de
falhas.