En algunos países, el costo de los planes de datos puede superar el 10% del ingreso mensual de un usuario promedio. Esto significa que minimizar el tamaño de descarga de tu app y permitir que el usuario controle cómo esta utiliza los datos puede implicar un beneficio grande y tangible para muchos usuarios. Minimizar el tamaño de las descargas también ayuda a ahorrar espacio en el almacenamiento interno, que es un recurso escaso en algunos dispositivos.
Aquí encontrarás algunas estrategias para optimizar la cantidad de datos que utiliza tu app, tanto en la red como en el almacenamiento interno.
Reduce el tamaño de la app
Reducir el tamaño de las apps es una de las principales formas en las que puedes ayudar a los usuarios a consumir menos datos, tanto en términos de datos de red como de almacenamiento interno. En esta sección, se describen varios enfoques con el fin de reducir el tamaño de las apps.
Reduce el tamaño de los elementos gráficos del APK
- A menudo, los recursos gráficos son los que más contribuyen al tamaño del APK. La optimización de estos elementos puede dar como resultado descargas más pequeñas y, en consecuencia, menores tiempos de instalación para los usuarios.
- Para recursos gráficos como los íconos, utiliza el formato de Gráficos vectoriales escalables (SVG). Las imágenes SVG son muy pequeñas en comparación con los gráficos de mapas de bits y se pueden renderizar durante el tiempo de ejecución en cualquier resolución. La biblioteca de compatibilidad de Android proporciona una implementación de recursos vectoriales retrocompatible hasta Android 2.1 (nivel de API 7). Consulta esta publicación de Medium a fin de comenzar a trabajar con vectores.
- Para imágenes no vectoriales, como las fotos, usa WebP a efectos de reducir los tiempos de carga de imágenes y ahorrar ancho de banda de red. Está comprobado que WebP permite obtener archivos más pequeños que sus contrapartes PNG y JPG, y tiene una calidad de imagen igual o superior. Incluso en configuraciones con pérdida, WebP puede producir una imagen casi idéntica a la original. Android incluye compatibilidad con WebP con pérdida desde Android 4.0 (nivel de API 14: Ice Cream Sandwich) y compatibilidad con WebP transparente y sin pérdida desde Android 4.2 (nivel de API 17: Jelly Bean).
- Si tienes muchas imágenes grandes con diferentes densidades, considera usar la compatibilidad con varios APK para dividir tu APK según la densidad. Como resultado, obtendrás compilaciones orientadas a densidades específicas, lo cual significa que los usuarios con dispositivos de baja densidad no tendrán que descargar recursos de alta densidad que no usarán.
- Si deseas obtener más información para disminuir el tamaño del APK, consulta Cómo reducir el tamaño del APK y Cómo reducir tu código y los recursos. Además, puedes encontrar una guía detallada para disminuir el tamaño del APK en esta serie de publicaciones de Medium.
Reduce el tamaño del código
- Cada biblioteca de tu proyecto de Android agrega al APK código que posiblemente no se use. Ten especial cuidado cuando utilices bibliotecas externas, ya que no todas pueden usarse en apps para dispositivos móviles. Verifica que las bibliotecas que utiliza tu app estén optimizadas para su uso en dispositivos móviles.
- Una buena idea es optimizar el código compilado mediante alguna herramienta, como ProGuard. ProGuard identifica el código que no se usa y lo quita del APK. Además, puedes habilitar la reducción de recursos en el tiempo de compilación si estableces
minifyEnabled=true
yshrinkResources=true
enbuild.gradle
. De esta forma, se quitarán automáticamente de tu APK los recursos no utilizados. - Cuando uses los Servicios de Google Play, deberás incluir de forma selectiva solo las API necesarias en tu APK.
- Si deseas obtener más información para disminuir el tamaño del código de tu APK, consulta la capacitación de Android acerca de cómo evitar frameworks de inserción de dependencias.
Permite que la app se pueda mover a un almacenamiento externo (SD)
- A menudo, los dispositivos de bajo costo cuentan con poco almacenamiento integrado. Los usuarios pueden ampliarlo con tarjetas SD; sin embargo, las apps deben declarar explícitamente que admiten instalaciones en almacenamiento externo antes de que los usuarios puedan moverlas.
- Permite que tu app se instale en almacenamientos externos usando la marca
android:installLocation
en el AndroidManifest.xml. Si deseas obtener más información para permitir que tu app se pueda mover a un almacenamiento externo, consulta la guía de Android sobre la ubicación de instalación de las apps.
Reduce el uso de disco de tu app tras la instalación
- Si tu app ocupa poco espacio en disco, será menos probable que los usuarios la desinstalen cuando su dispositivo tenga poco espacio libre. Es importante que establezcas límites en las cachés. De esta forma, evitarás que el uso de disco por parte de la app crezca indefinidamente. Asegúrate de colocar los datos almacenados en caché en
getCacheDir()
. El sistema puede borrar los archivos que se encuentren en esta ubicación según sea necesario, por lo que no se mostrarán como almacenamiento destinado a la app.
Ofrece uso de red configurable
La plataforma de Android incluye varias formas de otorgar al usuario control sobre el uso de la red por parte de tu app y la optimiza según sus propias necesidades. Por ejemplo, en el primer uso, tu app puede guiar al usuario a través de una variedad de configuraciones relacionadas con la red. También puedes proporcionar una pantalla de preferencias de red desde fuera de la app.
Incluye experiencias de integración para las opciones de red de los usuarios
- Las apps que les permiten a los usuarios disminuir el uso de datos son bien vistas, incluso si requieren grandes cantidades de datos. Si tu app consume un ancho de banda considerable (por ejemplo, las apps de streaming de videos), puedes ofrecer una experiencia de integración a fin de que los usuarios configuren el uso de la red. Por ejemplo, puedes permitir que el usuario fuerce la transmisión de video por Internet con baja tasa de bits si se trata de una red móvil.
- Otras configuraciones para que los usuarios controlen la sincronización de datos, la carga previa y el comportamiento de uso de la red (por ejemplo, cargar previamente todas las categorías destacadas de noticias solo cuando se esté usando una red Wi-Fi) también ayudan a los usuarios a personalizar el comportamiento de la app según sus necesidades.
- Si deseas obtener más información para administrar el uso de la red, consulta la capacitación de Android sobre la administración del uso de red.
Proporciona una pantalla de preferencias de red
- Mediante una pantalla de preferencias de red, puedes navegar a la configuración de red de la app sin necesidad de entrar en ella. Puedes invocar esta pantalla desde la pantalla de configuración del sistema o la de uso de datos del sistema.
- Para proporcionar una pantalla de preferencias de la red a la cual los usuarios puedan acceder tanto desde la app como desde la configuración del sistema, incluye una actividad en tu app que admita la acción
ACTION_MANAGE_NETWORK_USAGE
. - Si deseas obtener más información para agregar una pantalla con preferencias de red, consulta la capacitación de Android sobre la implementación de una actividad de preferencias.
Recursos adicionales
Para obtener más información sobre este tema, consulta los siguientes recursos adicionales: