Prueba y soluciona problemas relacionados con la optimización

Después de habilitar la optimización de la app, verifica que funcione según lo previsto y que la configuración de R8 haga lo que esperas. Los pasos generales son los siguientes:

  1. Prueba los recorridos críticos del usuario (CUJ) de tu app: Por ejemplo, asegúrate de que los usuarios puedan acceder y realizar otras tareas importantes.
  2. Mide los aumentos de rendimiento con comparativas: Realiza comparativas de tu app antes y después de habilitar la optimización de la app.

Si encuentras problemas, R8 proporciona herramientas para ayudarte a solucionarlos. Si no puedes resolver un problema con R8, informa un error.

Sugerencias generales

Los problemas con R8 suelen ser exclusivos de tu app, pero aquí tienes algunas sugerencias generales para facilitar la depuración:

  • Cómo desactivar temporalmente la ofuscación: R8 ofusca el código como parte de su proceso de optimización. Por lo general, la ofuscación no es la causa de los errores, pero dificulta su depuración. Agrega las marcas ‑dontobfuscate y ‑dontoptimize al archivo de reglas de retención para ayudarte a identificar el código problemático.
  • Verifica la reflexión: Si encuentras una excepción de no hay tal elemento, como la siguiente:

    Caused by: java.util.NoSuchElementException: Collection contains no element matching the predicate in the stack trace ,

    Por lo general, la excepción significa que el campo en cuestión se usa a través de la reflexión y debes agregar una regla de retención.

  • Inspecciona el código de bytes: La mayoría de los problemas de R8 requieren la inspección del código de bytes, que puedes realizar con herramientas como el Analizador de APK.

Cómo verificar qué reglas se aplican

Para generar un informe completo sobre todas las reglas que R8 aplica cuando compila tu proyecto, incluye lo siguiente en el archivo proguard‑rules.pro del módulo de tu app:

-printconfiguration <output-dir>/<report-name>.txt

Puedes especificar cualquier ruta de acceso y nombre de archivo. Si no especificas una ruta de acceso o un nombre de archivo, R8 mostrará el informe de reglas en <module-name>/build/outputs/mapping/<build-type>/configuration.txt.

Comprende por qué se mantuvo el código

Si ves código conservado que esperabas que se quitara, usa la opción de configuración ‑whyareyoukeeping para comprender por qué se conservó. R8 genera una ruta de acceso desde el código conservado a uno de los puntos de entrada de tu app. Para obtener más información, consulta la documentación de ‑whyareyoukeeping en el manual de Proguard.

Recupera el seguimiento de pila original

El código que procesa R8 se modifica de varias maneras para que el seguimiento de pila ya no haga referencia al código original. Por ejemplo, los números de línea y los nombres de las clases y los métodos pueden cambiar. Para recuperar el seguimiento de pila original, R8 proporciona la herramienta de línea de comandos retrace, que se incluye con el paquete de herramientas de línea de comandos.

Para usar el seguimiento, proporciona un archivo de asignación y un archivo de seguimiento de pila. El archivo de asignación, llamado mapping.txt, se incluye automáticamente en tu Android App Bundle (AAB). Para obtener más detalles, consulta la documentación de retrace y el artículo del Centro de ayuda de Play Console sobre cómo desofuscar los seguimientos de pila de fallas.