Mida con precisión el rendimiento de las aplicaciones de Android con compilaciones perfilables


Publicado por Yi Yang (ingeniero de software)
Es importante mantenerse al tanto del rendimiento de su aplicación para asegurarse de que sus usuarios puedan usarla fácilmente. Cuando una aplicación encuentra problemas como animación Jak, fotogramas congelados y un uso elevado de la memoria, afecta negativamente a la experiencia del usuario, lo que podría provocar calificaciones más bajas o la eliminación de la aplicación. Para resolver estos problemas de rendimiento, primero necesitamos las herramientas adecuadas para medir correctamente el rendimiento de la aplicación.

La compilación de depuración le permite usar funciones de desarrollo útiles, como Aplicar los cambiostrabajando con el depuradoro el inspector de base de datos. Además, también permite que las herramientas de creación de perfiles examinen el estado de una aplicación en ejecución que no está disponible para la versión de lanzamiento.

Debajo del capó, la compilación de depuración establece el depurable marcar en el manifiesto de Android como verdadero.

Si bien es útil, la compilación de depuración pretende proporcionar más información a expensas del rendimiento. Esto se debe a que cuando depurable Es cierto que muchas optimizaciones del compilador están deshabilitadas.

Captura de pantalla de la configuración de representación HWUI del perfil en Opciones de desarrollador.  La opción está en Opciones de desarrollador > Supervisión > Representación del perfil HWUI > En pantalla como barras” frontera =”0″ datos-original-altura =”1999″ datos-original-ancho =”947″ altura =”640″ origen =”https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibu1SgMb2IahMZdI6rbpRYD3yL2WKShUW4jezaKL1L699yUcmLdUtH0pMYdXQAMmeNfNHqyiuVmSHt0sWyah4krhseBY5otYnVy2C9SyzdCIVmsp_s4_lqpiJ_H9K3qCkRAh8yT1X6mr8bHNGwkfP_0zsftAYEvsSDWsRKHgVXilMbxiYQlh3NMDSc/w304-h640/image9.png” ancho =”304″/></a>Para mostrarle la diferencia de rendimiento entre las compilaciones de depuración y lanzamiento, registramos una aplicación que se ejecuta en el mismo dispositivo pero en estas dos variantes de compilación.  Para ver el tiempo de procesamiento de fotogramas, habilitamos el procesamiento de GPU de perfil (o el procesamiento de HWUI de perfil en algunas versiones de Android) en Opciones de desarrollador durante la grabación de pantalla.  Cada barra vertical en la parte inferior de la pantalla representa el tiempo que tarda cada fotograma en renderizarse.  Cuanto más cortas sean estas barras, más suave será la animación.  </p>
<p>La siguiente grabación de pantalla muestra la misma aplicación ejecutándose en el mismo dispositivo.  El lado izquierdo está en una compilación de depuración, el lado derecho es una compilación de lanzamiento.  La versión de depuración tiene más tramas entrecortadas, también conocidas como IU jank.  Esto significa que al crear perfiles de la compilación de depuración, es posible que las mediciones de tiempo sean significativamente diferentes de lo que ven los usuarios en la compilación de lanzamiento, y es posible que termine ajustando algo que no es el problema.</p>
<table align= GIF que muestra la diferencia de rendimiento entre las versiones de depuración y versión

Para solucionar este problema, la plataforma Android ha introducido una etiqueta llamada perfilable. Habilita muchas herramientas de creación de perfiles que miden la información de tiempo, sin la sobrecarga de rendimiento de la compilación de depuración. perfilable está disponible en dispositivos con Android 10 o posterior.

AndroidManifest.xml


caparazón=[“true” | “false”] />

Echemos un vistazo a otra grabación de pantalla. Esta vez, el lado izquierdo muestra un perfilable aplicación de lanzamiento y en el lado derecho una aplicación de lanzamiento sin modificar. Hay poca diferencia en el rendimiento entre los dos.

GIF que muestra la diferencia de rendimiento entre compilaciones y versiones perfilables

Con perfilableahora puede medir la información de tiempo con mucha más precisión que la compilación de depuración.

Esta característica está diseñada para usarse en producción donde la seguridad de la aplicación es primordial. Por lo tanto, hemos decidido admitir solo funciones de creación de perfiles como Muestreo de pila de llamadas Y Rastreo del sistema, donde la medida del tiempo es fundamental. los Perfilador de memoria solo admite Perfilado de memoria nativa. los Perfil energético y el historial de eventos no están disponibles. Puede encontrar la lista completa de funciones deshabilitadas aquí. Todas estas restricciones se implementan para proteger los datos de su aplicación.

Ahora que sabes lo que perfilable hace una etiqueta, déjame mostrarte cómo usarlo. Hay dos opciones: automática y manual.

Opción 1: use la opción en Android Studio.

Con Android Studio Flamingo y Android Gradle Plugin 8.0, todo lo que necesita hacer es seleccionar esta opción en el menú desplegable Perfil en la barra de herramientas Ejecutar: “Bajo perfil de sobrecarga”. Luego, Android Studio creará automáticamente una aplicación perfilable de su tipo de compilación actual y adjuntará el generador de perfiles. Funciona con cualquier tipo de compilación, pero le recomendamos encarecidamente que genere un perfil de compilación de lanzamiento, que es lo que ven sus usuarios.

Captura de pantalla de la función de compilación perfilable con un solo clic en Android Studio Flamingo Canary

Cuando se perfila una aplicación perfilada, hay un indicador visual junto con un mensaje de banner. Solo están disponibles los perfiladores de memoria y CPU.

Captura de pantalla del perfilador de Android Studio perfilando una compilación perfilable

En Memory Profiler, solo la función de grabación de asignación nativa está disponible por razones de seguridad.

Captura de pantalla que muestra la funcionalidad del perfilador de memoria de Android Studio mientras se perfila una compilación perfilable

Esta función es excelente para simplificar el proceso de creación de perfiles local, pero solo se aplica cuando se crea un perfil con Android Studio. Por lo tanto, aún puede ser útil configurar manualmente la aplicación en caso de que desee diagnosticar problemas de rendimiento en producción o si aún no está listo para usar la última versión de Android Studio o el complemento Android Gradle.

Opción 2: configuración manual.

Se necesitan 4 pasos para habilitar manualmente el perfil.

1. Agregue esta línea a su AndroidManifest.xml.

AndroidManifest.xml


caparazón=”real” />

2. Cambie al tipo de compilación de lanzamiento (o cualquier tipo de compilación que no sea depurable).

Captura de pantalla de la selección de variante de compilación activa en Android Studio

3. Asegúrese de tener configurada una clave de firma. Para evitar comprometer la clave de firma de versión, puede usar temporalmente la clave de firma de depuración o configurar una nueva clave solo para la generación de perfiles.


4. Cree y ejecute la aplicación en un dispositivo con Android 10 o posterior. Ahora tienes una aplicación perfilable. A continuación, puede conectar Android Studio Profiler iniciando la ventana de Profiler Tool y seleccionando el proceso de la aplicación en la lista desplegable.

Captura de pantalla de la selección de procesos en los generadores de perfiles de Android StudioMuchos de ustedes se estarán preguntando si es seguro dejar la etiqueta de manifiesto perfilable en producción y la respuesta es sí. Esta etiqueta está diseñada para usarse en compilaciones de lanzamiento para permitir la creación de perfiles locales. Las herramientas de generación de perfiles del host y el proceso de shell no pueden leer los datos de la memoria. Solo se pueden leer los seguimientos de pila, que normalmente están ofuscados o sin símbolos en las compilaciones de lanzamiento.

De hecho, muchas aplicaciones patentadas de Google, como Google Maps, envían su aplicación a Play Store como aplicaciones rentables.

Captura de pantalla que muestra Google Maps como un proceso perfilable en el menú desplegable del proceso del generador de perfilesEn resumen, la generación de perfiles de la compilación de depuración puede afectar el rendimiento y, por lo tanto, es mejor analizar la compilación de lanzamiento con la etiqueta perfilable habilitada.

Aquí hay una tabla que muestra qué tipo de compilación se debe usar:

Publicación Lanzamiento perfilable Depurar
Producción Perfilado de temporización de CPU Depuradores, inspectores, etc.

Perfilado de memoria, energía, etc.

Para obtener más información sobre compilaciones perfilables, comience leyendo la documentación y el la guía del usuario.

Con estas herramientas proporcionadas por el equipo de Android, esperamos que pueda hacer que su aplicación funcione más rápido y sin problemas.

Compruebe también

La actualización de CameraX hace que las cámaras duales simultáneas sean aún más fáciles

Publicado por Donovan McMurray – Ingeniero de relaciones con desarrolladores CámaraXLa biblioteca de cámaras Jetpack …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *