Nuestra aplicación Android está a dieta: ¡Dynamic Features!
En esta primera parte de la serie te contamos qué es un Dynamic Feature, qué oportunidades nos da, qué podemos lograr y qué queremos lograr.
¡Hola a todos! ¿Cómo están?
En esta oportunidad queremos contarles sobre nuestro camino mejorando la experiencia de nuestros usuarios haciendo que cada vez nuestras aplicaciones de Mercado Libre y Mercado Pago tengan un menor peso de instalación y descarga.
Como ya deben saber, ya sea como usuarios o desarrolladores de aplicaciones, lo importante que es tener aplicaciones que nos ocupen el menor peso posible en nuestros teléfonos.
Actualmente Mercado Libre cuenta con al menos 5 aplicaciones nativas dirigidas a usuarios de las cuales tenemos un aproximado de 120 M de usuarios activos y es por esta razón que ponemos especial atención a la evolución del peso de nuestras aplicaciones.
Hasta el año 2018 veníamos atacando los puntos relacionados con el peso de las aplicaciones con herramientas de optimización y ofuscación de código y recursos (como imágenes o assets, xml etc), con muy buenos resultados, pero como ya saben las aplicaciones van evolucionando y esa evolución viene con features nuevos que van de la mano de la tendencia a subir el peso de nuestras aplicaciones.
Ese mismo año, Google sacó al mercado Dynamic Features, una herramienta que nos permitía continuar mejorando el peso de nuestras aplicaciones y además mejorar la experiencia de nuestros usuarios al mismo tiempo.
¿Qué es Dynamic Features?
Es un servicio de Google que nos da la posibilidad con Android App Bundle (Paquete de aplicación de Android) de que parte de nuestro código y recursos se descarguen de forma dinámica en el dispositivo de los usuarios. Esta funcionalidad, nos la provee Google a través de la dependencia : com.google.android.play.core
¿Qué es App Bundle?
Hace ya un tiempo que venimos trabajando con App Bundles y en esta sección vamos a dejar la referencia a la documentación oficial por si quieren indagar un poco más. App Bundle es el formato de carga con extensión .aab que incluye todos los recursos y el código de una aplicación, pero que a diferencia del APK, no es un instalable.
Para más información les dejamos el link a la documentación oficial de Android.
Pero ¿qué logramos con esto?
Aumentar la velocidad y el tiempo de construcción, lo que da como resultado tasas de conversión de instalación más altas y una mejor experiencia del usuario.
Y lo mejor de todo, garantizar que el usuario pueda bajar la aplicación teniendo poco espacio en su dispositivo o no nos desinstale si somos una de las aplicaciones que no consumen mayor espacio.
¿Qué tipos de instalaciones dinámicas nos proporciona Google?
Cuando Google sacó al mercado la funcionalidad de Dynamic Features lo hizo con 3 tipos de instalaciones diferentes que se adaptan a diferentes necesidades:
Install Time
Instalación de paquetes al momento que el usuario final se descarga la aplicación desde PlayStore, generalmente este modo va muy relacionado a Conditional Delivery para poder aplicar ciertos filtros en tiempo de instalación.
Conditional Delivery
La entrega condicional te permite establecer ciertos requisitos de configuración del dispositivo para que los módulos de funciones se descarguen automáticamente durante la instalación de la app.
OnDemand
Los módulos de funciones a demanda te permiten separar determinados recursos y funciones del módulo base de tu app y, luego, incluirlos en el paquete de aplicación en base a una acción controlada.
Para más información les dejamos la documentación oficial de Android.
Resumimos entonces…
Teníamos claro la necesidad de mejorar la experiencia de los usuarios con esta nueva herramienta de Google apuntando a que el usuario final solamente disponga de lo que puede utilizar dentro de la aplicación sin consumir recursos ni espacio que no sea el necesario.
¿Cómo aplicamos esta definición teniendo claro nuestro objetivo?
Ahora teniendo en cuenta el objetivo que buscamos y el conocimiento sobre la herramienta y sus diferentes tipos de instalación, nos propusimos armar el plan para aplicarlo en nuestras aplicaciones.
¿Quieres saber cómo llevamos todos estos conceptos a la práctica dentro de no sólamente una sino dos aplicaciones de gran porte como son hoy en día Mercado Libre y Mercado Pago?
En nuestra siguiente historia te estaremos contando sobre cómo aplicamos Dynamic Features en Mercado Libre, qué cambios tuvimos a nivel de arquitectura, análisis sobre puntos generales como navegaciones externas, manejo de dependencias y cómo conviven entre los módulos dinámicos y la aplicación base, diferentes modos de compilación con assemble y bundle, cuándo y cómo sabemos cuando un módulo debería ser dinámico entre varias cosas más, los esperamos!