Otimização de código DEX

Otimizar e ofuscar seu código usando o R8 ou ferramentas alternativas (como otimizadores compatíveis com ProGuard ou pós-processadores DEX secundários) reduz o tamanho do DEX do app, melhora o desempenho de execução e minimiza a presença na memória.

Os arquivos DEX, ou Dalvik Executable, contêm o código compilado usado para executar o app. Isso normalmente inclui código Java e Kotlin, em vez de código C++ compilado ou arquivos .so.

Medir a otimização de código do R8 localmente

Para medir o tamanho DEX não compactado do pacote do app localmente usando a linha de comando, execute:

unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'

Se o app for otimizado com o R8, você poderá medir a otimização, a ofuscação e a redução do pacote do app usando o Analisador de configuração do R8. Para definições detalhadas de redução, otimização e ofuscação, consulte Usar o R8 Configuration Analyzer. O relatório do analisador de configuração do R8 também está incluído na R8 Analyzer Skill.

Para inspecionar os metadados pós-otimização incorporados no pacote de app (para AGP versão 8.10 ou mais recente), extraia o arquivo r8.json:

unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json

Corrigir o problema

Para resolver pontuações baixas de otimização de código DEX, revise as recomendações com base no seu sistema de build e otimizador:

Plug-in do Android para Gradle e R8

Para melhorar suas pontuações de otimização de código DEX do R8, consulte as orientações em Melhorar a otimização do R8. Você também pode usar a habilidade do R8 Analyzer para receber mais orientações sobre como otimizar as regras de manutenção do app.

Sistemas de build e pós-processadores DEX não R8

Se o pipeline de build usar ferramentas de build personalizadas ou pós-processadores DEX secundários, siga estas etapas para melhorar a otimização do app:

  • Abra o pacote de app no Android Studio e confira no APK Analyzer.
  • Selecione todos os arquivos .dex.
  • Preste atenção aos arquivos com o maior tamanho ao alternar o botão "Desofuscar nomes". Observação: isso exige que você faça upload de um arquivo mapping.txt. Se você notar que alguns desses arquivos permanecem grandes enquanto estão ofuscados, é provável que eles sejam afetados por regras de manutenção em todo o pacote.
  • Procure no arquivo proguard-rules.pro, configuration.txt ou o equivalente para seu otimizador se você não estiver usando o R8, e pesquise regras de manutenção que correspondam aos pacotes que não estão sendo ofuscados. Por exemplo, se com.foo. for um pacote grande no seu dex, procure regras de manutenção no formato -keep com.foo.** ou -keep com.foo.bar.**.
  • As regras de retenção do consumidor da biblioteca podem não ser tão simples de identificar. Se você suspeitar que uma regra de consumidor de biblioteca está afetando a otimização, valide localmente adicionando-a a um app de exemplo independente usando uma versão recente do AGP e inspecionando-a com o R8 Configuration Analyzer.