Perfila el 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 red supervisa el uso del tráfico de red.
  • 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.

Para obtener más información sobre estas herramientas, consulta la página Generadores de perfiles de Android Studio.

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 significativos 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
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 al archivo de manifiesto.

Para compilar una aplicación perfilable, 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.

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 tu aplicación de lanzamiento anterior en una perfilable, abre el archivo AndroidManifest.xml y agrega lo siguiente: Para obtener más detalles, consulta Cómo compilar tu app 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

Nota: Cuando generas perfiles de una app, debes inhabilitar Instant Run. El impacto en el rendimiento es leve cuando usas Instant Run y un poco más importante cuando se actualizan los métodos. Este impacto en el rendimiento podría interferir con la información que proporcionan las herramientas de generación de perfiles de rendimiento. Además, los métodos de código auxiliar que se generan cuando usas la función pueden complicar los seguimientos de pila.