Cómo reducir el tamaño de la app

El tamaño pequeño de la app está directamente relacionado con el éxito de la descarga, en especial en mercados emergentes con conexiones deficientes de red en los dispositivos o velocidades de red bajas. Si el tamaño no es adecuado, pueden disminuir las tasas de uso de la app lo que, a su vez, reduce la cobertura y la posibilidad de alcanzar el público deseado. Sin embargo, existen varias formas de reducir el tamaño de tu app.

Prácticas recomendadas

Sube la app como Android App Bundle

La manera más simple de ahorrar espacio cuando publicas en Google Play es subir la app como Android App Bundle, que es un nuevo formato de publicación que incluye todos los recursos y el código compilado de la app, pero delega la generación del APK y la firma a Google Play.

Reduce el tamaño del código de tiempo de ejecución

Verifica el código que tu app no usa durante el tiempo de ejecución (por ejemplo, cualquier clase grande o código generado automáticamente). Los optimizadores de código como R8 pueden ayudar a optimizar y reducir el tamaño del código, pero no pueden manejar código protegido por constantes de tiempo de ejecución. Reemplaza las marcas de verificación por constantes de tiempo de compilación para aprovechar al máximo las herramientas de optimización. Puedes habilitar la reducción de código y recursos en el archivo de configuración de Gradle:

android {
    buildTypes {
        getByName("release") {
            isMinifyEnabled = true
            isShrinkResources = true
        }
    }
}

Quita diseños innecesarios

Combina los diseños no utilizados que tienen pequeñas diferencias de IU y quita los diseños innecesarios para reducir el tamaño general del código de la app. Además, puedes renderizar vistas y diseños de forma dinámica cuando sea posible. Esto te permite evitar dibujar plantillas estáticas y aplicar diseños alternativos sin una sobrecarga técnica.

Vuelve a evaluar las funciones con poco uso

Optimiza tu contenido para Android (edición Go) específicamente inhabilitando funciones que tengan métricas bajas de usuarios activos por día (DAU). Algunos ejemplos incluyen quitar animaciones complejas, archivos GIF grandes o cualquier otra adición estética que no sea necesaria para el éxito de la app.

Usa Dynamic Delivery

Play Feature Delivery usa capacidades avanzadas de los paquetes de aplicaciones, lo que permite que ciertas funciones de tu app se entreguen de manera condicional o se descarguen a pedido. Puedes usar módulos de funciones para la entrega personalizada. Un beneficio único de los módulos de funciones es la capacidad de personalizar cómo y cuándo se descargan las diferentes funciones de la app en dispositivos con Android 5.0 (nivel de API 21) o versiones posteriores.

Reduce el tamaño de las strings traducibles

Puedes usar la propiedad resConfigs de Android para Gradle a fin de quitar archivos de recursos alternativos que tu app no necesite. Si usas una biblioteca que incluye recursos de idioma (como AppCompat o los Servicios de Google Play), tu app incluye todas las strings de idiomas traducidas para mensajes de biblioteca, independientemente de la traducción de la app. Si deseas mantener solo los idiomas que tu app admite oficialmente, puedes especificarlos a través de la propiedad resConfig. Se quitarán los recursos para idiomas que no se especifiquen.

Para limitar los recursos de idioma a inglés y francés, puedes editar defaultConfig como se muestra a continuación:


android {
    defaultConfig {
        ...
        resConfigs "en", "fr"
    }
}

Usa un método de traducción selectiva

Si una string determinada no está visible en la IU de la app, no es necesario que la traduzcas. Las cadenas que se usan en la depuración, los mensajes de excepción o las URLs deben ser literales de cadena en código, no recursos.

Por ejemplo, no te molestes en traducir URLs.

<string name="car_frx_device_incompatible_sol_message">
  This device doesn\'t support Android Auto.\n
  &lt;a href="https://support.google.com/androidauto/answer/6395843"&gt;Learn more&lt;/a&gt;
</string>

Es posible que reconozcas &lt; y &gt, ya que son caracteres de escape para < y >. Son necesarios aquí porque, si colocas una etiqueta <a> dentro de una etiqueta <string>, el compilador de recursos de Android las descarta, dado que no reconoce la etiqueta. Sin embargo, esto significa que estás traduciendo las etiquetas HTML y la URL a 78 idiomas. En su lugar, puedes quitar el HTML:

<string name="car_frx_device_incompatible_sol_message">
         This device doesn\'t support Android Auto.
</string>

Combina objetos binarios nativos con dependencias comunes

Si tu app tiene diferentes implementaciones de la interfaz nativa de Java (JNI) con dependencias subyacentes comunes, los distintos objetos binarios aumentarán el tamaño del APK con componentes redundantes. Puedes combinar varios objetos binarios de JNI en un solo archivo binario de JNI y mantener los archivos de JNI y Java separados. Esto puede reducir drásticamente el tamaño del APK.