Cómo reducir los costos de datos para miles de millones de usuarios

En algunos países, el costo de los planes de datos puede superar el 10% del ingreso mensual del usuario promedio. Esto significa que minimizar el tamaño de descarga de tu app y permitir que el usuario controle cómo utiliza los datos implique un gran beneficio tangible para muchas personas. 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 de red como en el almacenamiento interno.

Reduce el tamaño de la app

Reducir el tamaño de las apps es una de las mejores 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. Esta sección describe varios enfoques para reducir el tamaño de las apps.

Reduce el tamaño de los elementos gráficos del APK

  • A menudo, los elementos gráficos son los que más amplían el tamaño del APK. La optimización de estos elementos puede implicar descargas más pequeñas y, en consecuencia, menores tiempos de instalación para los usuarios.
  • Para recursos gráficos, como íconos, utiliza el formato Scalable Vector Graphics (SVG). El tamaño de las imágenes SVG es relativamente muy pequeño en comparación con gráficos de mapas de bits y se pueden procesar durante el tiempo de ejecución en cualquier resolución. La Biblioteca de compatibilidad de Android proporciona una implementación para recursos vectoriales que es compatible con versiones anteriores, hasta Android 2.1 (nivel de API 7). Consulta esta publicación de Medium para comenzar a trabajar con vectores.
  • Para imágenes no vectoriales, como fotos, usa WebP a fin 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 PNG y JPG con una calidad de imagen igual o superior. Incluso en configuraciones de compresión con pérdida, WebP puede producir una imagen casi idéntica a la original. Android ha ofrecido compatibilidad con WebP para compresión con pérdida desde la versión 4.0 (nivel de API 14: Ice Cream Sandwich) y compatibilidad con compresión sin pérdida/transparente de WebP desde la versión 4.2 (nivel de API 17: Jelly Bean).
  • Si tienes muchas imágenes grandes en diferentes densidades, considera usar la compatibilidad con varios APK para dividir tu archivo según la densidad. Como resultado, obtendrás compilaciones destinadas a densidades específicas, lo que significa que los usuarios con dispositivos de baja densidad no se verán afectados por no descargar elementos de alta densidad.
  • Para obtener más información sobre cómo disminuir el tamaño del APK, consulta Reducir el tamaño del APK y Reducir tu código y tus recursos. Además, puedes encontrar una guía detallada sobre cómo 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 aplicaciones para dispositivos móviles. Verifica que las bibliotecas de tu app estén optimizadas para dispositivos móviles.
  • Una buena idea es optimizar el código compilado con alguna herramienta, como ProGuard. ProGuard identifica el código que no se usa y lo quita del APK. Además, puedes activar la disminución de recursos en el momento de la compilación si estableces minifyEnabled=true y shrinkResources=true en build.gradle. De esta forma, se quitan automáticamente los recursos no empleados de tu APK.
  • Cuando uses los servicios de Google Play, debes incluir de forma selectiva solo las API necesarias en tu APK.
  • Para obtener más información sobre cómo disminuir el tamaño del código de tu APK, consulta la capacitación de Android sobre cómo evitar marcos de trabajo 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 ampliar el almacenamiento 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 la app se instale en almacenamientos externos usando la función experimental android:installLocation en tu AndroidManifest.xml. Para obtener más información sobre cómo lograr 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, es 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 de la app crezca indefinidamente. Asegúrate de colocar los datos almacenados en caché en getCacheDir(). El sistema puede borrar los archivos de 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 Android incluye varias formas de otorgar al usuario control sobre el uso de la red de tu app, optimizándola para 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 utilizan bastantes datos. Si tu app consume un ancho de banda considerable (por ejemplo, las apps de transmisión de video por Internet), puedes ofrecer una experiencia de integración para 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 captura previa y el comportamiento del uso de la red (por ejemplo, capturar todas las categorías de noticias con estrellas solo en Wi-Fi) también ayudan a los usuarios a personalizar el comportamiento de la app según sus necesidades.
  • Para obtener más información sobre cómo administrar el uso de la red, consulta la capacitación de Android sobre la administración del uso de red.

Proporciona una pantalla con preferencias de red

  • Mediante una pantalla con preferencias de red, puedes navegar hasta 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 pantalla de uso de datos del sistema.
  • Para proporcionar una pantalla con preferencias de la red a la cual los usuarios puedan tener acceso desde la app y desde la configuración del sistema, incluye una actividad que admita la acción ACTION_MANAGE_NETWORK_USAGE en tu app.
  • Para obtener más información sobre cómo agregar una pantalla con preferencias de red, consulta la capacitación de Android sobre la implementación de una actividad de preferencias.