Join us on the livestream at Android Dev Summit on 7-8 November 2018, starting at 10AM PDT!

Medir el rendimiento de las apps con Android Profiler

La nueva ventana del generador de perfiles de Android de Android Studio 3.0 reemplaza a las herramientas de Android Monitor. Estas nuevas herramientas de generación de perfiles proporcionan datos en tiempo real relacionados con la CPU, la memoria y la actividad de red de tu app. Puedes llevar a cabo un seguimiento de métodos basado en muestras para cronometrar la ejecución de tu código, capturar volcados de montón, ver asignaciones de memoria e inspeccionar la información de archivos transmitidos por red.

Para abrir la ventana del generador de perfiles de Android, sigue estos pasos:

  1. Haz clic en View > Tool Windows > Android Profiler (también puedes hacer clic en Android Profiler en la barra de herramientas).
  2. En la parte superior de la ventana Android Profiler, como se muestra en la figura 1, selecciona el dispositivo 1 y el proceso de la app 2 del cual desees generar un perfil. Si conectaste un dispositivo mediante USB, pero no lo ves en la lista, asegúrate de haber habilitado la depuración USB.

    Si usas Android Emulator o un dispositivo con derechos de administrador, el generador de perfiles de Android enumera todos los procesos en ejecución, aunque probablemente no sean depurables. Cuando inicias una app depurable, ese proceso se selecciona de forma predeterminada.

El generador de perfiles de Android muestra una vista de línea de tiempo compartida (figura 1), en la que se incluye una línea de tiempo con gráficos en tiempo real relacionada con el uso de la CPU, la memoria y la red. En la ventana también se incluyen controles de zoom para la línea de tiempo, 3, un botón para avanzar hasta las actualizaciones en tiempo real, 4 y una línea de tiempo de eventos que muestra estados de actividad, de entrada de usuarios y de rotación de pantalla 5.

Cuando inicias Android Profiler, sigue recolectando datos de generación de perfiles hasta que desconectes el dispositivo o hagas clic en Close .

Figura 1: Vista de línea de tiempo compartida del generador de perfiles de Android.

En esta vista de línea de tiempo compartida solo se muestran los gráficos de la línea de tiempo. Para acceder a las herramientas de generación de perfiles detalladas, haz clic en el gráfico que corresponda a los datos de rendimiento que desees inspeccionar. Por ejemplo, si deseas acceder a las herramientas para inspeccionar el montón y realizar un seguimiento de las asignaciones de memoria, haz clic en el gráfico MEMORY. En las páginas con vínculos, a continuación, se brinda más información sobre cada ventana correspondiente del generador de perfiles.

Sin embargo, no todos los datos de generación de perfiles son visibles de manera predeterminada. Si ves un mensaje con la leyenda “Advanced profiling is unavailable for the selected process”, debes habilitar la generación de perfiles avanzada en tu configuración de ejecución.

Para consultar más documentación sobre cada una de las herramientas de generación de perfiles, visita los siguientes vínculos:

Habilitar la generación de perfiles avanzada

Para mostrarte datos de generación de perfiles avanzada, Android Studio debe inyectar lógica de supervisión en tu app compilada. Entre las funciones que ofrece la generación de perfiles avanzada se incluye lo siguiente:

  • la línea de tiempo de eventos en todas las ventanas del generador de perfiles;
  • la cantidad de objetos asignados en Memory Profiler
  • eventos de recolección de elementos no usados en Memory Profiler
  • información sobre todos los archivos transmitidos en Network Profiler.

Para habilitar la generación de perfiles avanzada, sigue estos pasos:

  1. Selecciona Run > Edit Configurations.
  2. Selecciona el módulo de tu app en el subpanel izquierdo.
  3. Haz clic en la pestaña Profiling y luego marca Enable advanced profiling.

Luego, compila y ejecuta tu app nuevamente para acceder al conjunto completo de funciones de generación de perfiles. Sin embargo, ten en cuenta que la generación de perfiles avanzada reduce la velocidad de compilación, por lo que deberías habilitarla únicamente cuando desees comenzar a generar perfiles para tu app.

Nota: La generación de perfiles avanzada no se encuentra disponible para código nativo. Si tu app es una puramente nativa (no tiene una clase Activity de Java), las funciones de generación de perfiles avanzada no estarán disponibles. Si en tu app se usa JNI, estarán disponibles algunas funciones de generación de perfiles avanzada, como la línea de tiempo de eventos, los eventos de recolección de elementos no usados, los objetos asignados de Java y la actividad de red basada en Java, pero no se podrán detectar la actividad de red ni las asignaciones nativas.