AAB (Android App Bundle) es un formato de publicación para aplicaciones Android que reemplazó a APK en Google Play desde 2021. A diferencia de APK, AAB no es un archivo de instalación, sino un contenedor a partir del cual Google Play genera dinámicamente APK optimizados para cada dispositivo. Según Android Developers, 2026, el formato reduce el tamaño de la aplicación descargada en un promedio del 15% al eliminar recursos no utilizados.
Puntos clave
AAB (Android App Bundle) es un formato de publicación desarrollado por Google como reemplazo de APK para su distribución a través de Google Play. Internamente, AAB es un archivo ZIP con extensión .aab que contiene código compilado, recursos y metadatos. La diferencia clave: AAB no se instala directamente en un dispositivo.
El desarrollador sube AAB a Google Play Console. Cuando un usuario intenta instalar la aplicación, Google Play analiza la configuración del dispositivo: densidad de pantalla (DPI), arquitectura de CPU, idioma y versión de Android. Basándose en este análisis, se genera un APK mínimo que contiene solo los componentes necesarios.
Google presentó AAB en 2018 en la conferencia I/O. Desde agosto de 2021, el formato se ha vuelto obligatorio para todas las aplicaciones nuevas en Google Play. Las aplicaciones existentes pueden seguir usando APK, pero las nuevas deben publicarse solo en AAB.
La diferencia entre AAB y APK es fundamental: APK es un archivo de instalación completo listo para instalar. AAB es un contenedor con componentes fuente que requiere procesamiento.
| Parámetro | APK | AAB |
|---|---|---|
| Tipo | Archivo de instalación | Contenedor de publicación |
| Instalación | Directamente en el dispositivo | A través de Google Play |
| Tamaño | Archivo completo | Componentes fuente |
| Módulos | Todo en un archivo | Módulos separados |
| Firma | Desarrollador | Google Play |
| Distribución | Cualquier canal | Google Play |
APK es adecuado para su distribución fuera de Google Play, a través de sitios web, correo electrónico o sistemas MDM corporativos. AAB está vinculado a la infraestructura de Google Play y no se puede instalar directamente. Para probar AAB se utiliza la herramienta bundletool, que emula la generación de APK en una máquina local.
La estructura interna de AAB es similar a APK pero contiene directorios y archivos adicionales para describir los módulos y sus dependencias.
| Archivo/directorio | Propósito |
|---|---|
| base/ | Módulo base: código, recursos, manifiesto |
| BundleConfig.pb | Configuración del bundle en formato protobuf |
| Bundle-metadata/ | Metadatos sobre versiones de módulos |
| feature/ | Módulos dinámicos (on-demand) |
| assets/ | Activos de la aplicación |
| manifest/ | Manifiestos de cada módulo |
El módulo base es un componente obligatorio de AAB. Contiene el código principal, los recursos y el manifiesto de la aplicación. Sin el módulo base, la aplicación no se puede compilar. Todos los demás módulos son opcionales y se conectan a través de Dynamic Delivery.
La configuración de AAB utiliza Protocol Buffers (protobuf) en lugar de XML. Los archivos .pb son más compactos y se analizan más rápido en la infraestructura del servidor de Google. La herramienta bundletool convierte protobuf a un formato legible para la depuración.
Dynamic Delivery es la tecnología clave sobre la que se basa AAB. Permite entregar al usuario solo aquellas partes de la aplicación que corresponden a su dispositivo e idioma, así como cargar módulos adicionales bajo demanda.
Los módulos Install-time se cargan junto con el APK base durante la instalación. Los módulos Conditional se entregan solo cuando se cumplen ciertas condiciones — por ejemplo, un módulo con materiales para pantallas 4K. Los módulos On-demand se cargan a solicitud del usuario dentro de la aplicación.
Para recursos grandes (hasta 2 GB), se utiliza Play Asset Delivery en lugar de archivos OBB. PAD admite los mismos tres modos de entrega: install-time, fast-follow (inmediatamente después de la instalación) y on-demand.
// Carga de módulo on-demand mediante SplitInstallManager
val manager = SplitInstallManagerFactory
.create(context)
val request = SplitInstallRequest
.newBuilder()
.addModule("level_pack_3")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("AAB", "Module installed")
}
Cada módulo dinámico se describe en un archivo build.gradle independiente con el tipo de entrega especificado. Un módulo puede contener sus propios recursos, código y manifiesto, independientes de la aplicación base.
La compilación de AAB se realiza a través de Android Gradle Plugin con la tarea bundleRelease (o bundleDebug). El resultado es un archivo .aab en el directorio build/outputs/bundle/.
No se requiere ninguna configuración especial para compilar AAB: Android Gradle Plugin admite bundles de forma predeterminada. Simplemente especifique la tarea bundle en lugar de assemble.
// build.gradle.kts — compilación de AAB con firma
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// Tarea: ./gradlew bundleRelease
Google proporciona la herramienta bundletool para generar APK a partir de AAB en una máquina local. El comando `bundletool build-apks --bundle=app.aab --output=app.apks` crea un conjunto de APK para pruebas en diferentes configuraciones de dispositivos.
bundletool también puede desempaquetar AAB, mostrar su configuración y verificar la integridad de la firma antes de subirlo a Google Play Console. Para la depuración, se utiliza el comando `bundletool dump manifest --bundle=app.aab` que muestra el manifiesto del módulo base.
De forma predeterminada, AAB divide los recursos en tres dimensiones: idioma, densidad de pantalla (density) y arquitectura de CPU (abi). El desarrollador puede deshabilitar cualquier división en build.gradle — por ejemplo, si la aplicación solo admite inglés. Deshabilitar una división significa que los recursos para todas las variantes se incluirán en el APK base.
Optimización de recursos — AAB convierte automáticamente PNG a WebP sin pérdida de calidad, comprime recursos no utilizados y elimina cadenas duplicadas. Estas optimizaciones se aplican en el lado de Google Play al generar el APK final. Como resultado, el usuario recibe un APK entre un 15 y un 25 % más pequeño que el archivo completo.
El proceso de publicación de AAB en Google Play Console difiere del APK solo en el formato del archivo subido. La consola acepta .aab, verifica su estructura, firma y configuración de módulos, y luego genera APK para cada tipo de dispositivo.
Al subir AAB, Google Play asume la gestión de las claves de firma. El desarrollador sube un paquete firmado con una clave upload y Google vuelve a firmar los APK generados con su propia clave. Esto simplifica la rotación de claves y la recuperación del acceso en caso de pérdida del keystore.
Google Play Console proporciona una prueba de AAB integrada: puede descargar el APK generado para un dispositivo específico o ejecutar pruebas internas a través de los tracks Internal Testing, Closed Alpha y Open Beta.
La migración a AAB puede causar problemas, especialmente en proyectos con muchos módulos dinámicos o configuración compleja de recursos.
Si un módulo dinámico hace referencia a recursos del módulo base con un nombre incorrecto, Google Play rechaza el AAB durante la verificación. Solución: use la comprobación lint antes de compilar y pruebe todos los módulos mediante bundletool localmente.
La división por idiomas puede ralentizar el inicio de la aplicación si los recursos para la configuración regional actual se cargan dinámicamente. La recomendación de Google es no dividir los idiomas si hay menos de 10, o usar install-time para los más populares.
Algunos SDK (análisis, publicidad, mapas) requieren acceso al manifiesto y los recursos completos. La verificación de compatibilidad con AAB es un paso obligatorio antes de la migración. La mayoría de los SDK importantes (Firebase, Google Ads, Crashlytics) son totalmente compatibles con AAB desde 2022. Para verificar la compatibilidad, se utiliza bundletool con el indicador --validate, que emula la generación de APK del lado del servidor.
AAB utiliza el versionCode del manifiesto del módulo base. A diferencia de APK, AAB también admite versionCode para cada módulo por separado — esto permite actualizar partes individuales de la aplicación sin una reinstalación completa. Dynamic Delivery realiza un seguimiento de los módulos instalados y entrega solo los componentes modificados durante las actualizaciones a través de Google Play.
Google Play Console proporciona análisis detallados para cada AAB: cuántos APK se generaron, qué splits tuvieron demanda, cuál es el tamaño promedio de descarga por dispositivo. Android Vitals muestra métricas de rendimiento de los APK generados. Estos datos ayudan a optimizar la configuración de splits y reducir el tamaño de descarga para diferentes categorías de dispositivos.
Preguntas frecuentes
No, AAB no está diseñado para instalación directa. Google Play lo convierte en un APK para un dispositivo específico. Para pruebas en un teléfono se utiliza bundletool, que genera APK a partir de AAB localmente.
Google Play genera APK solo con los recursos que coinciden con el dispositivo del usuario: una densidad de pantalla, una arquitectura de CPU, un idioma. Los recursos para otras configuraciones no se incluyen, lo que ahorra entre un 15 y un 30 % del tráfico de descarga.
No, las aplicaciones existentes pueden seguir publicando APK. El requisito de AAB aplica solo para aplicaciones nuevas. Google recomienda, pero no exige, actualizar los proyectos existentes a AAB.
Cambie la tarea de compilación de assembleRelease a bundleRelease, verifique la compatibilidad de todos los SDK, configure App Signing en Google Play Console y cargue el primer AAB a través de un track existente.
Sí, AAB incluye bibliotecas nativas en los módulos. Google Play entrega solo los archivos .so para la arquitectura de CPU del dispositivo. Esto es especialmente importante para juegos en Unity y Unreal Engine con grandes compilaciones nativas.
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