Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introducción al performance en aplicaciones Android

GDG Culiacán
September 03, 2020

Introducción al performance en aplicaciones Android

En esta presentación, Ángel Elizalde habla sobre tips y buenas prácticas para crear apps para Android que tienen un buen desempeño (performance) en tiempo de ejecución.

GDG Culiacán

September 03, 2020
Tweet

More Decks by GDG Culiacán

Other Decks in Technology

Transcript

  1. ¿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.
  2. 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.
  3. 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)
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. Recomendaciones de performance en vistas • Eliminar backgrounds innecesarios. •

    Aplanar la jerarquía de vistas lo máximo posible. ◦ Usando constraint layout.
  9. 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.
  10. Maximum heap* size Allocated memory Corre GC Memory Leak Garbage

    Collector Memory Usage Amount of memory leaking Time
  11. 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.
  12. 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 .
  13. 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.
  14. 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.
  15. 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.
  16. Activar la reducción con R8 (build.gradle) android { ... buildTypes

    { release { minifyEnabled true proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' } } }
  17. 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.
  18. 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.
  19. 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.