Cómo generar un perfil del rendimiento de tu app

Se considera que 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 identificar las áreas en las que tu app hace un uso ineficiente de los recursos, como la CPU, la memoria, los gráficos, la red y la batería del dispositivo.

Usa las herramientas y técnicas de creación de perfiles y generación de comparativas que se describen en esta sección a fin de encontrar y corregir estos problemas. Si deseas conocer técnicas para medir el rendimiento y ejemplos de cómo usarlas a fin de resolver problemas específicos, consulta Cómo medir el rendimiento.

Android Studio ofrece varias herramientas de generación de perfiles para ayudarte a encontrar y visualizar los posibles problemas:

  • El Generador de perfiles de CPU ayuda a hacer un seguimiento de los problemas de rendimiento en el entorno de ejecución.
  • El Generador de perfiles de memoria ayuda a realizar el seguimiento de las asignaciones de memoria.
  • El Generador de perfiles de energía realiza un seguimiento del uso de la energía, lo que puede contribuir al agotamiento de la batería.

Estas herramientas son compatibles con Android 5.0 (nivel de API 21) y versiones posteriores. Para obtener más información sobre las herramientas, consulta las otras páginas de esta sección de la guía del usuario.

Las bibliotecas de Jetpack Benchmark permiten que tu aplicación mida varias operaciones importantes:

  • Macrocomparativas: Mide casos de uso importantes de rendimiento, incluidos el inicio y el rediseño de aplicaciones que se activa mediante acciones como animaciones de IU o desplazamiento.
  • Microcomparativas: Mide el costo de la CPU de funciones específicas.

Para obtener más información sobre estas bibliotecas, consulta la página Cómo realizar comparativas de tu app.

Aplicaciones perfilables

Profileable es una configuración del manifiesto que se introdujo en Android Q. Indica si el usuario del dispositivo puede generar perfiles de esta aplicación con herramientas como Android Studio, Simpleperf y Perfetto.

Antes de profileable, la mayoría de los desarrolladores solo podían crear perfiles de apps depurables en Android, lo que agregaba costos de rendimiento considerables como efecto secundario. Esos costos de rendimiento podían invalidar los resultados de la generación de perfiles, en especial si estaban relacionados con el tiempo. En la Tabla 1, se resumen las diferencias entre las apps depurables y las perfilables.

Tabla 1: Resumen de las diferencias clave entre las apps depurables y las perfilables.
Función Depurable Perfilable
Generador de perfiles de memoria Completo

Sí:

No:

Generador de perfiles de CPU Completo

Sí:

No:

Generador de perfiles de red No
Generador de perfiles de energía No
Power Profiler
Supervisión de eventos No

Se introdujo Profileable para que los desarrolladores puedan optar por permitir que sus apps expongan información a las herramientas de generación de perfiles, a la vez que incurren en costos de rendimiento muy bajos. En esencia, un APK perfilable es un APK de lanzamiento con una línea de <profileable android:shell="true"/> agregada dentro de la sección <application> del archivo de manifiesto.

Cómo compilar y ejecutar automáticamente una app perfilable

Puedes configurar, compilar y ejecutar una app perfilable con un solo clic. Esta función requiere un dispositivo de prueba físico o virtual que tenga Google Play y ejecute el nivel de API 29 o uno posterior. Para usar la función, haz clic en la flecha junto al ícono de Profile app y elige entre dos opciones:

Menú de compilación perfilable con un solo clic.
  • La opción Profile 'app' with low overhead inicia los Generadores de perfiles de CPU y memoria. En el Generador de perfiles de memoria, solo está habilitada la opción Record Native Allocations.

    Generación de perfiles con baja sobrecarga.
  • La opción Profile 'app' with complete data inicia los Generadores de perfiles de CPU, memoria y energía.

    Generación de perfiles con datos completos.

Cómo compilar y ejecutar manualmente una app perfilable

Para compilar una aplicación perfilable de forma manual, primero debes compilar una aplicación de lanzamiento y, luego, actualizar su archivo de manifiesto, que convierte la aplicación de lanzamiento en una aplicación perfilable. Después de configurar la aplicación perfilable, inicia el generador de perfiles y selecciona un proceso perfilable para analizar.

Cómo compilar una app de lanzamiento

Si deseas compilar una aplicación de lanzamiento para generar perfiles, haz lo siguiente:

  1. Para firmar tu aplicación con la clave de depuración, agrega las siguientes líneas al archivo build.gradle de la aplicación. Si ya tienes una variante de compilación de lanzamiento que funciona, puedes omitir este paso.

            buildTypes {
              release {
                signingConfig signingConfigs.debug
              }
            }
          
  2. En Android Studio, selecciona Build > Select Build Variant... y elige la variante de lanzamiento.

Cómo cambiar de lanzamiento a perfilable

  1. Para convertir la aplicación de lanzamiento anterior en una perfilable, abre el archivo AndroidManifest.xml y agrega lo siguiente dentro de <application>: Para obtener más detalles, consulta Cómo compilar tu aplicación para el lanzamiento.

    <profileable android:shell="true"/>

  2. Según la versión del SDK, es posible que debas agregar las siguientes líneas al archivo build.gradle de la aplicación.

          aaptOptions {
            additionalParameters =["--warn-manifest-validation"]
          }
        

Cómo generar perfiles de una app perfilable

Para crear un perfil de una app perfilable, haz lo siguiente:

  1. Inicia la app desde el dispositivo o emulador de desarrollo.

  2. En Android Studio, inicia el generador de perfiles seleccionando View > Tool Windows > Profiler.

  3. Después de iniciar la aplicación, haz clic en el botón Botón de signo más de los generadores de perfiles del generador de perfiles para ver el menú desplegable. Selecciona tu dispositivo y, luego, elige la entrada de la aplicación en Other profileable processes.

    Menú perfilable
  4. El generador de perfiles debe adjuntarse a la aplicación. Solo están disponibles la CPU y el Generador de perfiles de memoria, con capacidades limitadas para este último.

    Vista de la sesión perfilable
    Menú perfilable
    Menú perfilable

Sesiones

Es posible guardar los datos de Profiler como sesiones, que se conservarán hasta que salgas de Android Studio. Si registras los datos de generación de perfiles en varias sesiones y alternas entre ellas, podrás comparar el uso de recursos en diferentes situaciones.

  • Para iniciar una nueva sesión, haz clic en el botón Start a new profiling session y selecciona un proceso de app del menú desplegable que aparece.
  • Cuando registras un seguimiento o capturas un volcado de montón, Android Studio agrega esos datos (junto con la actividad de red de tu app) como una entrada separada a la sesión actual.
  • Para dejar de agregar datos a la sesión actual, haz clic en Stop the current profiling session .
  • Para importar un seguimiento exportado desde una ejecución anterior de Android Studio, haz clic en Start new profiler session y elige Load from file.

Cómo habilitar compatibilidad adicional para dispositivos más antiguos (nivel de API < 26)

Para mostrarte datos adicionales de generación de perfiles cuando ejecutas un dispositivo con Android 7.1 o versiones anteriores, Android Studio debe insertar lógica de supervisión en tu app compilada. Estos son algunos de los datos adicionales que se incluyen:

  • El cronograma del evento en todas las ventanas del generador de perfiles
  • La cantidad de objetos asignados en Memory Profiler
  • Los eventos de recolección de elementos no utilizados en Memory Profiler
  • Detalles sobre todos los archivos transmitidos en el Generador de perfiles de red

Para habilitar la compatibilidad adicional para dispositivos más antiguos, sigue estos pasos:

  1. Selecciona Run > Edit Configurations.
  2. Elige el módulo de tu app en el panel izquierdo.
  3. Haz clic en la pestaña Profiling y, luego, marca la opción Enable additional support for older devices (nivel de API < 26).
  4. Vuelve a compilar y ejecutar tu app.

Si habilitas la compatibilidad adicional con dispositivos más antiguos, el proceso de compilación será más lento, por lo que solo deberías habilitarla cuando desees comenzar a generar perfiles para tu app.

Cómo ejecutar generadores de perfiles independientes

Los generadores de perfiles independientes de Android Studio te permiten generar perfiles de tu app sin ejecutar la totalidad del IDE de Android Studio.

Para ejecutar los generadores de perfiles independientes, haz lo siguiente:

  1. Asegúrate de que el generador de perfiles no se esté ejecutando actualmente en Android Studio.
  2. Ve al directorio de instalación y navega hasta el directorio bin:

    Windows/Linux: studio-installation-folder/bin

    macOS: macOS no admite el uso de generadores de perfiles independientes.

  3. Según tu SO, ejecuta profiler.exe o profiler.sh. Aparecerá la pantalla de presentación de Android Studio. Cuando la pantalla de presentación desaparezca, se abrirá una ventana del generador de perfiles.