Rendimiento de Jetpack Compose en Wear OS

El rendimiento en Wear OS es una consideración fundamental para las apps, ya que muchos dispositivos Wear OS cuentan con recursos limitados de CPU y GPU en comparación con dispositivos móviles más grandes. Con la introducción de animaciones más detalladas y efectos dinámicos en Material 3 Expressive, debes validar y mejorar el rendimiento de los flujos de trabajo clave de tu app.

Usa la guía de Rendimiento de Jetpack Compose para configurar y desarrollar tu app con un rendimiento óptimo usando Jetpack Compose. En este documento, se destacan algunas de las técnicas que se describen en esa guía.

Crea y sigue estrategias de medición del rendimiento para validar que estas técnicas funcionen como se espera en tu app.

Técnicas esenciales para mejorar el rendimiento

Comienza con los tipos de herramientas de rendimiento más eficaces: los perfiles de Baseline (incluidos los perfiles de inicio) y el optimizador de código R8.

Actualiza tu dependencia de Compose a la versión 1.8 o posterior, que introdujo varias funciones nuevas significativas y mejoró la estabilidad general de la biblioteca. Consulta las instrucciones en Cómo declarar dependencias para obtener información sobre cómo realizar la actualización. Para obtener más información, lee nuestro blog sobre la versión 1.8 y la charla de I/O Novedades de Compose.

Perfiles de Baseline

Para mejorar el rendimiento de tu app, usa perfiles de Baseline. Agrupa las clases y los métodos que representan los flujos de trabajo clave de tu app, que el sistema puede precompilar con un perfil de Baseline. Esto puede reducir los tiempos de inicio, disminuir los fotogramas con bloqueos y ofrecer mejoras adicionales en el rendimiento.

Cada biblioteca de Jetpack Compose se envía con sus propias reglas de perfil. Cuando tu app depende de una biblioteca, las reglas del perfil de la biblioteca se combinan y distribuyen automáticamente con el APK de tu app para la precompilación.

Verifica tus perfiles de referencia con las siguientes técnicas:

  • Usa pruebas de macrocomparativas.
  • Usa comandos de ADB específicos para validar el estado de configuración del perfil de tu app. En la guía de medición y validación del rendimiento, se explican los pasos para aplicar ambas técnicas.

Perfiles de inicio

Como subconjunto de los perfiles de Baseline, los perfiles de inicio optimizan aún más las clases y los métodos que contienen para reducir la latencia del inicio de la app.

Agregar un perfil de inicio aumentará el tamaño del APK de tu app, por lo que, antes de agregar uno a tu versión de producción, asegúrate de evaluar la compensación entre el tamaño del APK y la latencia de inicio.

Para comenzar, lee Cómo crear un perfil de empresa emergente.

R8

Usa el compilador R8 para reducir y optimizar las apps. R8 quita el código y los recursos que no se usan, vuelve a escribir el código para optimizar el rendimiento del tiempo de ejecución y mucho más.

En las guías de Descripción general de la mejora del rendimiento, lee las consideraciones para R8, incluidos los pasos clave para quitar recursos sin usar.

Medición y validación del rendimiento

Para obtener información sobre las estrategias generales de medición del rendimiento en Android, consulta Descripción general de la medición del rendimiento de apps. En esta sección, se describen algunas de las técnicas que se analizan en esa documentación.

Elige una variante de compilación para las mediciones

Si bien el modo de depuración es útil para detectar muchos problemas, implica un costo de rendimiento significativo, no usa perfiles de referencia y puede dificultar la detección de problemas de código que podrían afectar el rendimiento.

Para comprender con precisión el rendimiento de tu app, ejecútala en el modo de lanzamiento.

Las conclusiones finales sobre el rendimiento solo deben extraerse de las pruebas realizadas con apps que se ejecutan con opciones de compilación de lanzamiento y en dispositivos reales.

Sin embargo, cuando realices pruebas de comparativas, usa la variante de compilación de comparativas, que tiene algunas diferencias clave con la depuración de la versión. Consulta la guía de configuración de Macrobenchmark para obtener más detalles.

Valida los perfiles de Baseline de tu app

Para comenzar, inspecciona el estado de tu perfil:

adb shell dumpsys package dexopt | grep -A 1 $PACKAGE_NAME

Si el estado no es status=speed-profile, las reglas de perfil aún no se aplicaron para optimizar la app.

Las reglas se aplican con un trabajo en segundo plano que se ejecuta cuando el dispositivo está cargado e inactivo. Para activar esto de forma manual, ejecuta el siguiente comando después de que se inicie la app y haya transcurrido suficiente tiempo para que el instalador de perfiles inicie el perfil en segundo plano. Por lo general, este proceso tarda alrededor de 40 segundos.

adb shell cmd package bg-dexopt-job

Luego, vuelve a ejecutar el comando anterior para verificar que el estado sea speed-profile.

Para situaciones en las que la optimización se produce en la instalación, consulta Transfiere el perfil de Baseline.

API de UI Automator

La API de UI Automator automatiza las interacciones de forma programática. Usa esta API para comparar partes discretas de la IU cuando inspecciones los recorridos del usuario en busca de posibles optimizaciones.

Pruebas de Macrobenchmark

Las macrocomparativas prueban casos de uso más grandes de tu app, en especial, el inicio de la app y las manipulaciones de IU complejas. Para comenzar, consulta la guía de implementación.

Para ver un ejemplo del uso de comparativas de rendimiento generales para validar el rendimiento de los perfiles de referencia, consulta las muestras de rendimiento en GitHub.

Biblioteca de JankStats

Usa la biblioteca de JankStats para realizar un seguimiento y analizar los problemas de rendimiento en las aplicaciones.

Para ver un ejemplo, consulta el ejemplo de JankStats en GitHub.

Registro del sistema

Con los nuevos tipos de animación que se introdujeron en Material 3 Expressive, usa la función System Trace en Android Studio para inspeccionar y diagnosticar la latencia en los recorridos del usuario que podrían ser problemáticos. Con esta información, verifica el contenido de tus perfiles de Baseline y, luego, identifica posibles ineficiencias en la lógica de tu código.

Herramientas adicionales

Además de las herramientas para mejorar el rendimiento, puedes usar otras herramientas para aumentar tu productividad y optimizar tu flujo de trabajo.

Herramientas de productividad de Android Studio

Android Studio proporciona varias herramientas que pueden reducir la cantidad de tiempo que dedicas a identificar mejoras de rendimiento.

Por ejemplo, con herramientas como Ediciones en vivo y Composable Previews, puedes identificar elementos de la IU con problemas de rendimiento, junto con las áreas asociadas en el código de tu app, para realizar mejoras en el rendimiento.

Ejecuta todas las pruebas de rendimiento finales en un conjunto de dispositivos Wear OS físicos que representen con precisión tu base de usuarios objetivo.

Esto es especialmente importante cuando migras a Material 3 Expressive, que introduce funciones como fuentes flexibles y transformación de formas en tu app.

Si estás migrando desde vistas, consulta nuestra guía de migración y nuestras prácticas recomendadas para el rendimiento de Jetpack Compose para verificar que las IU de tu app tengan un buen rendimiento cuando usas Jetpack Compose.

Otros recursos

Para mantenerte al día sobre el rendimiento de Android, consulta las noticias y los videos más recientes en la guía de rendimiento de la app.