Optimización de código DEX

La optimización del código DEX es un hallazgo de Android vitals que te ayuda a supervisar y mejorar la calidad, el tamaño y el rendimiento de la compilación de tu app. 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.

Los informes de Android vitals registran las métricas de optimización del código DEX para todas las apps y los juegos, pero solo aplican umbrales para las apps y los juegos que cumplen con requisitos de tamaño específicos.

Cómo detectar el problema

Android vitals puede enviarte alertas cuando los niveles de optimización del código DEX de tu app son bajos. Esto incluye la ofuscación, la reducción y la optimización para las apps y los juegos que usan R8. En el caso de las apps que no usan R8, Android vitals intenta verificar las tasas de optimización, reducción y ofuscación, pero recurre a la heurística de ofuscación como proxy cuando es necesario.

Supervisa el estado de la optimización

Android vitals puede ayudarte a mejorar el rendimiento de tu app. Para ello, te envía alertas a través de Play Console cuando tu app no cumple con los porcentajes mínimos definidos para la optimización del código. Para obtener definiciones detalladas sobre la reducción, la optimización y la ofuscación, consulta Cómo usar el Analizador de configuración de R8.

En el caso de las apps compiladas con el parche más reciente de la versión 8.10 o posterior del AGP, estos porcentajes se extraen del archivo r8.json incluido.

En versiones anteriores de AGP o en las que no se incluye el archivo r8.json, los porcentajes se calculan a partir del archivo mapping.txt, si se incluye, o bien con heurísticas de DEX si el archivo de asignación no está disponible.

En el caso de las apps optimizadas con un optimizador de código alternativo, Android vitals realiza un análisis para estimar el porcentaje de clases, métodos y campos que se ofuscan en el paquete de aplicación.

Mínimos de tamaño total de DEX

Si bien Android vitals calcula las métricas de optimización del código para todas las apps, solo recibirás alertas si tu paquete de aplicación cumple con los siguientes requisitos de tamaño total del archivo DEX:

  • Apps: El paquete contiene al menos 10 MB de código DEX medido como tamaño sin comprimir.
  • Juegos: El paquete contiene al menos 50 MB de código DEX medido como tamaño sin comprimir.

Android vitals muestra el tamaño del DEX de tu app, pero también puedes medirlo de forma local con la línea de comandos:

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

Para inspeccionar los metadatos exactos que usa Android vitals para calcular tus puntuaciones, extrae el archivo r8.json de tu paquete de aplicación:

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