Cómo generar un perfil del rendimiento de tu app

Una app tiene un rendimiento bajo si responde lentamente, muestra animaciones entrecortadas, se bloquea o consume demasiada batería. Para solucionar los problemas de rendimiento, es necesario generar perfiles de tu app o identificar las áreas en las que tu app hace un uso ineficiente de los recursos, como la CPU, la memoria, los gráficos o la batería del dispositivo. En este tema, se describen las herramientas y técnicas de Android Studio que se usan para solucionar problemas comunes de rendimiento.

Para obtener información sobre cómo ejecutar generadores de perfiles independientes sin ejecutar todo el IDE de Android Studio (solo para Windows o Linux), consulta Cómo ejecutar el generador de perfiles independiente.

Requisitos

Para generar perfiles de tu app, te recomendamos que tengas lo siguiente:

  • Una app con una variante de compilación de lanzamiento que tiene habilitada la configuración del manifiesto profileable, también conocida como app perfilable. De forma predeterminada, las apps tienen esta configuración establecida en "true". Para verificar o cambiar esta configuración, abre el manifiesto o el archivo AndroidManifest.xml de tu app y busca en la sección <application> la configuración del manifiesto profileable:

    <profileable android:shell="true" />
    
  • Un dispositivo de prueba físico o virtual que ejecute el nivel de API 29 o una versión posterior y tenga Google Play.

  • Complemento de Android para Gradle 7.3 o una versión posterior

Apps perfilables y depurables

Una app perfilable te permite realizar las tareas de perfilación más comunes, pero debes usar una app de depuración si necesitas registrar asignaciones de Java/Kotlin o capturar un volcado de montón. Un proceso de app depurable y un dispositivo que ejecuta el nivel de API 26 o superior también te permiten ver el cronograma de Interaction, que muestra la interacción del usuario y los eventos del ciclo de vida de la app, en las vistas de tareas que lo proporcionan.

Una app depurable se basa en la variante de compilación debug de tu app y te permite usar herramientas de desarrollo, como el depurador. Sin embargo, tiene algunos costos de rendimiento. Una app perfilable se basa en la variante de compilación release de tu app y habilita un subconjunto de tareas de generación de perfiles comunes sin la sobrecarga de rendimiento de la compilación de depuración.

Cómo compilar y ejecutar una app perfilable

Para compilar y ejecutar una app perfilable en Android Studio, sigue estos pasos:

  1. Crea una configuración de ejecución y depuración si aún no tienes una.
  2. Selecciona la variante de compilación de lanzamiento (Build > Select Build Variant).
  3. Haz clic en Más acciones > Perfilar "app" con baja sobrecarga o Perfilar "app" con datos completos ("app" es el nombre de la configuración de ejecución, por lo que podría ser diferente para tu caso). Para elegir entre las dos opciones, consulta Requisitos. La app se abrirá en tu dispositivo de prueba y el panel Profiler se abrirá en Android Studio.

Si estas instrucciones no funcionan, consulta Cómo compilar y ejecutar una app perfilable manualmente.

Cómo iniciar el perfilamiento

Para iniciar una tarea de generación de perfiles, sigue estos pasos:

  1. Selecciona un proceso de la lista en la pestaña Home del panel Profiler. En la mayoría de los casos, querrás seleccionar el proceso superior que representa tu app.

    Pestaña principal de Profiler
  2. Selecciona una tarea de generación de perfiles en la sección Tasks. Para obtener más información sobre las tareas, consulta las otras páginas de esta sección. No todas las tareas de generación de perfiles están disponibles para todos los procesos. Si no sabes por dónde empezar, inspecciona tu app en vivo para obtener una vista general de la actividad de rendimiento.

  3. Usa el menú desplegable Start profiler task from para seleccionar si quieres iniciar la tarea del generador de perfiles desde el inicio o adjuntarla al proceso mientras se ejecuta. Si intentas mejorar el tiempo de inicio de la app o capturar un proceso que se produce durante el inicio, debes incluir el inicio. De lo contrario, puedes comenzar a generar perfiles en el estado actual de la app.

  4. Haz clic en Iniciar tarea del generador de perfiles. La tarea comienza en su propia pestaña.

  5. Interactúa con tu app para que se activen las actividades.

  6. Detén la grabación (si corresponde), espera a que se analice y consulta los resultados.

Compara, importa y exporta seguimientos

Cuando detienes una tarea de generación de perfiles, esta se guarda automáticamente en la pestaña Registros anteriores del panel Generador de perfiles. Puedes usar estas grabaciones guardadas para comparar el uso de recursos en diferentes situaciones. Las grabaciones se guardan durante la sesión actual de Android Studio. Si quieres conservarlas por más tiempo, haz clic en Export recording para exportarlas. No se pueden exportar todos los tipos de seguimiento.

Para importar un seguimiento, por ejemplo, desde una ejecución anterior de Android Studio, haz clic en Import recording en la pestaña Past Recordings y selecciona el archivo de seguimiento. También puedes importar un archivo arrastrándolo a la ventana del editor de Android Studio.

Editar la configuración de registro

Para editar la configuración de registro de tareas del generador de perfiles, haz clic en la configuración del generador de perfiles. Hay dos parámetros de configuración principales que puedes activar o desactivar:

  • Para las tareas que involucran el muestreo, el Intervalo de muestra representa el tiempo entre cada muestra. Cuanto más corto sea el intervalo que especifiques, más rápido alcanzarás el límite de tamaño de archivo para los datos registrados.
  • El límite de tamaño de archivo representa la cantidad de datos que se pueden escribir en el dispositivo conectado. Si detienes el registro, Android Studio analizará estos datos y los mostrará en la ventana del generador de perfiles. Si aumentas el límite y registras una gran cantidad de datos, Android Studio necesitará mucho más tiempo para analizar el archivo y podría bloquearse.