Slide 1

Slide 1 text

Introducción al performance en aplicaciones Android Angel Elizalde

Slide 2

Slide 2 text

¿Qué es el performance? Es el desempeño con respecto al rendimiento de una computadora, un dispositivo, un programa o aplicación. La cual puede ser medida o cuantificada con la velocidad con la que se realiza una tarea o un proceso. Un ejemplo, en una aplicación android sería: el tiempo que tarda en cargar los componentes de una pantalla.

Slide 3

Slide 3 text

Importancia de medir el performance El performance en una aplicación android puede definir la vida de esta. Con un buen performance se puede evitar: ● mala experiencia de usuario. ● malos comentarios en play store. ● desinstalaciones.

Slide 4

Slide 4 text

Problema del redibujado (Overdraw) La superposición u overdraw es el evento de redibujar pixeles en pantalla por encima del pixel original. Niveles del overdraw: ● 1x - azul (una vez) ● 2x - verde (dos veces) ● 3x - rosa (tres veces) ● 4x - rojo (4 o más)

Slide 5

Slide 5 text

Depurar overdraw Activando previamente las opciones de desarrollador. En el dispositivo se activa la depuración de overdraw para ver cualquier redibujado de pixeles en la aplicación.

Slide 6

Slide 6 text

Jerarquía de vistas Es la cantidad de vistas que se van anidando dentro de un xml. es recomendable que el árbol jerárquico de vistas no sea muy amplio. Pipeline de interfaz: ● Diseño, define los views que se pintaran en pantalla. ● Medición, define las dimensiones de cada view.

Slide 7

Slide 7 text

Layout inspector Herramienta para depurar la interfaz de la aplicación, disponible desde android studio 4.0+

Slide 8

Slide 8 text

Layouts más utilizados ● LinearLayout: Dispone los elementos en una fila o en una columna. ● TableLayout: Distribuye los elementos de forma tabular. ● RelativeLayout: Dispone los elementos en relación a otro o al padre. ● ConstraintLayout: Versión mejorada de RelativeLayout, que permite una edición visual desde el editor.

Slide 9

Slide 9 text

Constraint layout Te permite crear diseños grandes y complejos con una jerarquía de vistas planas (Sin grupos de vistas anidadas). Las vistas se alinean con respecto a su relación con las demás vistas del mismo nivel.

Slide 10

Slide 10 text

Recomendaciones de performance en vistas ● Eliminar backgrounds innecesarios. ● Aplanar la jerarquía de vistas lo máximo posible. ○ Usando constraint layout.

Slide 11

Slide 11 text

Pérdida de memoria En una aplicación se pierde memoria cuando está se asigna a un proceso específico y este nunca se libera. Lo que obliga a que la app trabaje con la memoria restante en el heap asignado por la memoria ram para la aplicación.

Slide 12

Slide 12 text

Maximum heap* size Allocated memory Corre GC Memory Leak Garbage Collector Memory Usage Amount of memory leaking Time

Slide 13

Slide 13 text

Android memory profiler Es una herramienta incluida en android studio, que nos sirve para depurar el uso de memoria de las aplicaciones y así detectar cualquier pérdida de memoria que pueda afectar el performance de esta.

Slide 14

Slide 14 text

Leak canary Librería utilizada para detectar fugas de memoria, directamente desde el dispositivo (físico o emulador). Esta conoce el sdk de android y muestra automáticamente los errores, ya sea en la barra de notificaciones o en la app que se instala en el dispositivo. Se implementa directamente en las dependencias del proyecto .

Slide 15

Slide 15 text

Entonces un memory leak sucede cuando: - El código asigna mucha memoria para objetos y procesos pero no son liberados. - Menos y menos memoria disponible en el heap de la aplicación. - El garbage collector limpia menos memoria de la que se requiere. - La aplicación falla o genera un ANR (Application not responding). - Es cerrada por el sistema.

Slide 16

Slide 16 text

Optimizar APK Por lo regular el peso de la aplicación es uno de los principales factores para una desinstalación, ya sea por tener una memoria reducida en el dispositivo o por el uso de la red móvil para descargarla. Por eso el equipo de android desarrollo R8.

Slide 17

Slide 17 text

R8 Es el proceso por el cual android studio reduce la cantidad de código en nuestra aplicación y gracias a eso se reduce igual el tamaño del apk automáticamente en tiempo de compilación aplicando las siguientes técnicas: ● Reducción. ○ Elimina código sin uso (funciones, clases, etc.). ● Optimización. ○ Elimina código comentado. ○ Elimina requerimiento (import) de librerías sin uso. ○ Elimina código muerto (Ejemplo: else que nunca entra). ● Ofuscación. ○ Acorta nombres de clases y miembros para reducir el peso de la app. ○ Se evita la ingeniería inversa en la aplicación.

Slide 18

Slide 18 text

Activar la reducción con R8 (build.gradle) android { ... buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }

Slide 19

Slide 19 text

App Bundle Es un nuevo formato de carga y distribución que contiene los recursos de la aplicación pero delega la generación y firma del apk a google play. Esto ya viene integrado con android studio y genera un archivo con extensión aab.

Slide 20

Slide 20 text

Ejemplo del uso de App Bundle Adobe redujo el tamaño de la aplicación Adobe Acrobat Reader en un 20% gracias al uso de App Bundle y su distribución dinámica de aplicaciones.

Slide 21

Slide 21 text

Distribución dinámica con App Bundle Antes se tenía que hacer un apk para cada dimensión de pantalla y arquitectura de dispositivos android, entonces se creó android app bundle.

Slide 22

Slide 22 text

Muchas gracias!!!