App Size Optimization — conjunto de técnicas destinadas a reducir el tamaño del archivo de instalación (APK, AAB, IPA) sin pérdida de funcionalidad. Según la Android Reduce APK Size Guide, cada megabyte de reducción puede aumentar la conversión de instalaciones en un 1–2% en regiones con internet lento. App Thinning — la tecnología clave de Apple que entrega solo los recursos que necesita un dispositivo específico.
Puntos clave
App Size Optimization es una disciplina del desarrollo móvil destinada a minimizar el tamaño del paquete de instalación de la aplicación. Incluye la eliminación de código y recursos muertos, compresión de imágenes, optimización de librerías, fragmentación de compilación para diferentes arquitecturas y el uso de tecnologías de entrega bajo demanda.
El tamaño de la aplicación afecta de manera desigual a diferentes segmentos de usuarios. En regiones con infraestructura móvil desarrollada (EE. UU., Europa, Japón) la diferencia entre 50 y 100 MB puede ser imperceptible. En regiones en desarrollo (India, Indonesia, Brasil) cada megabyte adicional reduce la conversión de instalaciones debido a los límites de los planes de datos y la velocidad del internet móvil. Google Play limita el tamaño del APK a 200 MB, pero recomienda mantenerlo por debajo de 100 MB.
Para la App Store de iOS, el tamaño máximo de descarga por red celular es de 200 MB (antes de 2023 era de 150 MB). Si el IPA supera este límite, el usuario solo puede instalar la aplicación a través de Wi-Fi. Apple también es compatible con App Thinning, que incluye Slicing, Bitcode y On-Demand Resources — tecnologías que reducen automáticamente el tamaño de instalación en un dispositivo específico sin intervención del desarrollador.
El tamaño de la aplicación afecta no solo la conversión de instalaciones, sino también la retención, la frecuencia de actualizaciones y la velocidad del primer inicio. Cada megabyte adicional es una barrera entre el usuario y el uso de su producto.
Según datos de Google I/O 2024, reducir el APK en 10 MB aumenta la conversión de instalaciones en un promedio del 3.5%. Para aplicaciones de 150+ MB, la conversión puede ser entre un 20–30% menor que para aplicaciones de la misma clase de 50 MB. El efecto es especialmente notable en Google Play, donde el usuario ve el tamaño antes de la instalación. En la App Store, el tamaño se muestra en la página de la aplicación, y los usuarios con planes de datos limitados posponen la instalación a Wi-Fi, después de lo cual a menudo se olvidan de la aplicación.
Las aplicaciones grandes se actualizan por aire con menos frecuencia — los usuarios posponen la descarga de parches a Wi-Fi, perdiéndose correcciones críticas de seguridad. Google Play permite Incremental Updates (parches de hasta 10 MB), pero una reinstalación completa sigue descargando el APK o AAB completo. La App Store de Apple utiliza Delta Updates, transfiriendo solo los archivos modificados, pero incluso el delta puede ser significativo cuando cambian los recursos.
El tamaño afecta directamente el tiempo del primer inicio: la aplicación debe descomprimir recursos, compilar código (Android) o firmar el caché (iOS). Una aplicación de 200 MB puede iniciarse entre 10–15 segundos más lento que una de 50 MB en un dispositivo promedio. Esto empeora la Experiencia de incorporación — el usuario puede cerrar la aplicación sin esperar a que se cargue.
| Tamaño | Tiempo de descarga (3G) | Tiempo del primer inicio |
|---|---|---|
| 30 MB | ~20 seg | 3–5 seg |
| 100 MB | ~70 seg | 5–8 seg |
| 200 MB | ~140 seg | 10–15 seg |
Los recursos — imágenes, fuentes, sonidos, videos — constituyen entre el 60–80% del tamaño de una aplicación móvil típica. La optimización de recursos proporciona la mayor ganancia con el mínimo esfuerzo. Las direcciones principales son: compresión, eliminación de duplicados y activos no utilizados, elección de los formatos correctos.
WebP — un formato de imagen de Google que proporciona una compresión entre un 25–35% mejor que PNG y entre un 15–20% mejor que JPEG con la misma calidad visual. Android es compatible con WebP de forma nativa desde API 18. Para iOS, WebP es compatible a través de las librerías SDWebImage o Kingfisher, y con iOS 17 apareció el soporte nativo. AVIF — un formato más moderno que ofrece un 10–15% adicional de ahorro con respecto a WebP, pero con una decodificación más lenta.
Eliminación de recursos no utilizados — la forma más sencilla de reducir el tamaño. En Android, use la refactorización con Android Studio: Analyze → Run Inspection → Unused Resources. En iOS — Build Settings → Remove Unused Resources. A menudo, los proyectos conservan sprites de versiones anteriores, iconos antiguos, imágenes de pantalla de inicio no utilizadas que influyen el tamaño sin ninguna carga funcional.
| Formato | Compresión vs PNG | Soporte |
|---|---|---|
| PNG | — | Todas las plataformas |
| WebP | 25–35% | Android nativo, iOS mediante librerías |
| AVIF | 35–45% | Android 12+, iOS 17+ |
| JPEG XR | 30–40% | Solo Windows |
Las fuentes personalizadas pueden ocupar entre 5–15 MB, especialmente si se incluye toda la familia tipográfica (todos los estilos: Regular, Bold, Italic, BoldItalic). Use solo los estilos necesarios y subconjuntos de caracteres mediante subsetting — eliminación de glifos para idiomas no compatibles con la aplicación. Servicios como Google Fonts y Transfonter permiten crear un conjunto mínimo de caracteres. Para audio, use AAC/HE-AAC en lugar de WAV y formatos no comprimidos — ahorro de hasta el 90% sin pérdida de calidad.
El código constituye entre el 20–40% del tamaño de la aplicación, pero su optimización es más compleja que la de los recursos porque requiere análisis de dependencias, ofuscación y eliminación de código muerto sin riesgo de romper la funcionalidad.
ProGuard es una herramienta para Android que realiza ofuscación, minificación y optimización de código. R8 — su sucesor, integrado en Android Gradle Plugin, funciona más rápido y de manera más eficiente. R8 elimina clases y métodos no utilizados, acorta nombres de variables y reescribe el código para reducir la cantidad de instrucciones. La reducción típica del tamaño de los archivos DEX con R8 es del 30–50%.
// build.gradle — configuración de R8 para minificación
android {
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt')
shrinkResources true
}
}
}
Las librerías — una causa común de tamaño inflado. Una librería puede arrastrar dependencias transitivas que aumentan el tamaño entre 5–20 MB sin beneficio directo para la aplicación. Use Gradle Version Catalog para Android y Swift Package Manager para iOS con declaración explícita de dependencias. Analice el tamaño con Build Analyzer en Android Studio o Xcode Build Timeline. Reemplace librerías pesadas por alternativas más ligeras: por ejemplo, OkHttp (3 MB) en lugar de Apache HTTP (15 MB).
Dead Code Stripping — eliminación automática de métodos y clases no utilizados en la etapa de enlace en Xcode. Se activa mediante Build Settings → Dead Code Stripping = YES. Bitcode — una representación intermedia que Apple puede recompilar para diferentes arquitecturas, eliminando funciones no utilizadas. Sin embargo, desde Xcode 14, Bitcode se volvió opcional, y su contribución a la reducción de tamaño es del 5–15% para proyectos Objective-C y menor para Swift.
App Thinning — tecnología de Apple que reduce automáticamente el tamaño de la aplicación instalada al entregar solo los recursos necesarios para un dispositivo específico. Consta de tres componentes: Slicing, On-Demand Resources y Bitcode. En Android, el equivalente es Android App Bundle (AAB) con Dynamic Delivery.
AAB — un formato de publicación en Google Play donde la tienda genera APK para cada dispositivo por separado, incluyendo solo los recursos para su arquitectura (armeabi-v7a, arm64-v8a), densidad de pantalla (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi) e idiomas. La reducción típica del tamaño de instalación al pasar de un APK universal a AAB es del 20–40%. Play Feature Delivery permite cargar módulos bajo demanda, mientras que los módulos Install-time se incluyen en la instalación base.
// build.gradle — configuración de AAB y Dynamic Features
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
On-Demand Resources (ODR) — un mecanismo de iOS mediante el cual los recursos (niveles de juego, imágenes de alta resolución, videos) se descargan de los servidores de Apple solo cuando realmente los necesita el usuario. El tamaño de la instalación inicial se puede reducir entre un 50–80%. Los recursos se dividen en tres categorías: Initial Install Tags (se descargan durante la instalación), Prefetched Tag Order (se descargan en segundo plano después de la instalación) y On-Demand (se descargan solo cuando se solicitan). Apple recomienda usar ODR para contenido que no se necesita en la primera pantalla: niveles de juego, contenido adicional, tutoriales en video.
SwiftUI es compatible con ODR a través del atributo Bundle.module, mientras que UIKit usa NSBundleResourceRequest. Para juegos en Unity y Unreal Engine, ODR se integra a nivel de envoltorio nativo. La principal limitación es que los recursos ODR se eliminan por el sistema cuando falta espacio, por lo que los datos críticos deben incluirse en la compilación principal.
Preguntas frecuentes
Menos de 50 MB — tamaño ideal para la máxima conversión de instalaciones. 50–100 MB — aceptable para la mayoría de las aplicaciones. Más de 100 MB — requiere justificación por tamaño (juegos, mapas sin conexión, editores de contenido).
Los recursos brindan una mayor ganancia en menos tiempo. Comience eliminando activos no utilizados, convirtiendo PNG a WebP y comprimiendo audio. Luego pase a la optimización de código mediante R8 o Dead Code Stripping.
Google Play genera un APK solo para el dispositivo específico: código arm64-v8a, recursos xhdpi, idioma requerido. Un APK universal contiene todas las variantes a la vez, lo que aumenta el tamaño entre 1.5–2 veces. AAB resuelve este problema a nivel de tienda.
Indirectamente. Un tamaño mayor significa más código para compilación JIT/AOT, más recursos para cargar en memoria y más tiempo para analizar manifiestos. Sin embargo, el impacto directo en el rendimiento en tiempo de ejecución es mínimo — el tamaño afecta la instalación y el primer inicio.
Install-time — parte de la instalación base, disponible de inmediato. On-Demand — se carga en el primer acceso, no se incluye en la instalación inicial. Use On-Demand para funciones que necesita menos del 20% de los usuarios: diagnósticos, tutoriales, filtros AR.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.
Lea también