El rendimiento en Wear OS es una consideración fundamental para la app, 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 allí.
Además, crea y sigue estrategias de medición del rendimiento para validar que las técnicas de este documento funcionen según lo esperado en tu app.
Técnicas esenciales para mejorar el rendimiento
Comienza con los tipos de herramientas de rendimiento más eficaces: perfiles de referencia (incluidos los perfiles de inicio) y el optimizador de código R8.
Antes de comenzar, te recomendamos que actualices tu dependencia de Compose a la versión 1.8, como mínimo, ya que se introdujeron varias funciones nuevas importantes y se mejoró la estabilidad general de la biblioteca. Consulta las instrucciones en Cómo declarar dependencias para obtener información sobre cómo actualizar y, para obtener más información, consulta nuestro blog sobre el lanzamiento de la versión 1.8 y la charla de I/O Novedades de Compose.
Perfiles de Baseline
Usa perfiles de Baseline para mejorar el rendimiento de tu app. 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 referencia. 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 macrobenchmark.
- Aprovecha los comandos específicos de ADB para validar el estado de la 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.
Una vez que te sientas cómodo con la configuración de tus perfiles de Baseline, lee Cómo crear un perfil de inicio para comenzar.
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 sobre cómo mejorar el rendimiento (descripción general), revisa las consideraciones para R8, incluidos los pasos clave para quitar los 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 incluyen 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.
Solo debes extraer conclusiones finales sobre el rendimiento a partir 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 comparativa, usa la variante de compilación de comparativa, 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. Puedes activar esto de forma manual si ejecutas el siguiente comando después de que se haya iniciado la app y haya transcurrido suficiente tiempo para permitir que el instalador de perfiles inicie el perfil en segundo plano. Por lo general, tarda alrededor de 40 segundos.
adb shell cmd package bg-dexopt-job
Luego, puedes volver a ejecutar el comando anterior para verificar que ahora el estado sea speed-profile
.
Para situaciones en las que se realiza la optimización en la instalación, consulta Transfiere el perfil de Baseline.
API de UI Automator
Usa la API de UI Automator para comparar partes discretas de la IU cuando inspecciones los recorridos del usuario en busca de posibles optimizaciones.
Funciona automatizando las interacciones de la IU de forma programática.
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. Consulta la guía de implementación para comenzar.
Para ver un ejemplo del uso de comparativas macro para validar el rendimiento de los perfiles de Baseline, 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, puedes usar la función Registro del sistema en Android Studio para inspeccionar y diagnosticar la latencia en los recorridos del usuario que podrían ser problemáticos. Con esta información, puedes verificar el contenido de tus perfiles de referencia y, luego, inspeccionar la lógica de tu código para buscar lugares con posibles ineficiencias.
Herramientas adicionales
Además de las herramientas para mejorar el rendimiento, los desarrolladores pueden usar otras herramientas para mejorar su productividad y flujo de trabajo.
Herramientas de productividad de Android Studio
Android Studio proporciona varias herramientas que pueden reducir la cantidad de tiempo que dedicas a buscar formas de mejorar el rendimiento.
Por ejemplo, con herramientas como Ediciones en vivo y Vistas previas de elementos componibles, puedes identificar la IU con tirones, junto con las áreas asociadas en el código de tu app, para mejorar 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.