Si optimizas y ofuscas tu código con R8 o herramientas alternativas (como optimizadores compatibles con ProGuard o posprocesadores de DEX secundarios), se reduce el tamaño del DEX de tu app, se mejora el rendimiento del tiempo de ejecución y se minimiza su huella de memoria.
Los archivos DEX, o Dalvik Executable, contienen el código compilado que se usa para ejecutar tu app. Por lo general, esto incluye código Java y Kotlin, a diferencia del código C++ compilado o los archivos .so.
Cómo medir la optimización del código R8 de forma local
Para medir el tamaño DEX sin comprimir de tu paquete de aplicación de forma local con la línea de comandos, ejecuta lo siguiente:
unzip -l <yourapp>.aab | grep -E '\.dex$' | awk '{sum+=$1} END {print sum}'
Si tu app se optimiza con R8, puedes medir su optimización, ofuscación y reducción con el Analizador de configuración de R8. Para obtener definiciones detalladas de reducción, optimización y ofuscación, consulta Usa el Analizador de configuración de R8. El informe del Analizador de configuración de R8 también se incluye en la Habilidad de análisis de R8.
Para inspeccionar los metadatos posteriores a la optimización incorporados en tu paquete de aplicación (para la versión 8.10 o posterior del AGP), extrae el archivo r8.json:
unzip -p <yourapp>.aab BUNDLE-METADATA/com.android.tools/r8.json
Cómo corregir el problema
Para abordar los bajos niveles de optimización del código DEX, revisa las recomendaciones según tu sistema de compilación y optimizador:
Complemento de Android para Gradle y R8
Para mejorar las puntuaciones de optimización del código DEX de R8, consulta la guía en Mejora la optimización de R8. También puedes usar la habilidad de R8 Analyzer para obtener orientación adicional sobre cómo optimizar las reglas de conservación de tu app.
Sistemas de compilación que no son de R8 y posprocesadores de DEX
Si tu canalización de compilación usa herramientas de compilación personalizadas o posprocesadores de DEX secundarios, sigue estos pasos para mejorar la optimización de tu app:
- Abre tu paquete de aplicación en Android Studio y míralo en el Analizador de APK.
- Selecciona todos los archivos
.dex. - Presta mucha atención a los archivos con el tamaño más grande mientras activas el botón "Desofuscar nombres" (nota: Esto requiere que subas un archivo
mapping.txt). Si ves que algunos de esos archivos siguen siendo grandes después de la ofuscación, es probable que se vean afectados por reglas de conservación a nivel del paquete. - Busca en tu archivo
proguard-rules.pro,configuration.txto el equivalente para tu optimizador si no usas R8, y busca reglas de conservación que coincidan con los paquetes que no se ofuscan. Por ejemplo, sicom.foo.es un paquete grande en tu archivo dex, busca reglas de conservación con el formato-keep com.foo.**o-keep com.foo.bar.**. - Ten en cuenta que las reglas de conservación del consumidor de la biblioteca pueden no ser tan sencillas de identificar. Si sospechas que una regla de consumidor de biblioteca afecta la optimización, puedes validarla de forma local agregándola a una app de ejemplo independiente con una versión reciente del AGP y, luego, inspeccionarla con el Analizador de configuración de R8.