En agosto de 2021, Google tomó una decisión que cambió fundamentalmente la forma en que se distribuyen las aplicaciones de Android: todas las aplicaciones nuevas enviadas a Google Play Store deben utilizar el formato Paquete de aplicaciones de Android (AAB) en lugar del APK tradicional. Este cambio afectó a los desarrolladores, a los usuarios y a todo el ecosistema de distribución de aplicaciones de terceros. Pero, ¿qué es exactamente un App Bundle, cómo funciona y por qué debería importarle?
Esta guía cubre todo, desde los aspectos técnicos internos del formato AAB hasta las implicaciones prácticas para los usuarios que desean compartir aplicaciones con amigos o instalarlas en dispositivos sin acceso a Play Store.
¿Qué es un paquete de aplicaciones de Android?
Un Android App Bundle es un formato de publicación que contiene todo el código compilado y los recursos de una aplicación, pero difiere la generación del APK instalable final a Google Play. Piense en ello como una plantilla maestra a partir de la cual los servidores de Google crean sobre la marcha paquetes optimizados y específicos para cada dispositivo.
A diferencia de un APK, que es un paquete listo para instalar, un archivo AAB no se puede instalar directamente en un dispositivo. Es un artefacto de compilación que se carga en Play Store, donde la infraestructura de Google lo procesa y genera APK personalizados para cada configuración de dispositivo.
La extensión del archivo es .aab e internamente utiliza un formato de búfer de protocolo combinado con una estructura similar a ZIP. Contiene el código de bytes DEX de la aplicación, recursos, activos, bibliotecas nativas y un archivo de metadatos de paquete especial que le indica a Google Play cómo dividir el contenido.
Por qué los paquetes de aplicaciones obligatorios de Google
La principal motivación detrás de los App Bundles es reducir el tamaño de descarga de aplicaciones. Una aplicación típica de Android debe admitir múltiples densidades de pantalla (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), múltiples arquitecturas de CPU (armeabi-v7a, arm64-v8a, x86, x86_64) y múltiples idiomas. En el modelo APK tradicional, todos estos recursos están agrupados en un solo archivo, aunque cualquier dispositivo solo necesita una fracción de ellos.
Considere un juego que incluye bibliotecas nativas para cuatro arquitecturas de CPU y texturas para cinco densidades de pantalla. El APK universal puede tener 200 MB, pero una versión específica del dispositivo que contenga solo la arquitectura y la densidad relevantes podría tener 80 MB. Esa es una reducción del 60% en el tamaño de la descarga.
Google informa que las aplicaciones que utilizan App Bundles son en promedio un 15% más pequeñas que sus equivalentes APK universales. Para aplicaciones y juegos grandes, los ahorros pueden ser mucho más espectaculares. Las descargas más pequeñas significan instalaciones más rápidas, menos consumo de ancho de banda y menos instalaciones abandonadas debido a problemas de tamaño.
Cómo funcionan los paquetes de aplicaciones internamente
La estructura del paquete
Un archivo AAB está organizado en módulos, y cada módulo contiene su propio código, recursos y activos. La estructura más común incluye:
- Módulo básico: Contiene el código de la aplicación principal y los recursos que cada dispositivo necesita. Esto siempre está instalado.
- Divisiones de configuración: Secciones separadas para recursos de idiomas, recursos de densidad de pantalla y bibliotecas nativas ABI (arquitectura de CPU).
- Módulos de funciones dinámicas: Módulos opcionales que se pueden descargar a pedido después de la instalación inicial.
- Paquetes de activos: Activos de gran tamaño, como niveles de juegos o medios, que se pueden entregar en el momento de la instalación, bajo demanda o en segundo plano.
Generación de APK dividida
Cuando un usuario descarga una aplicación de Play Store, los servidores de Google examinan la configuración del dispositivo y generan un conjunto de APK divididos adaptados a ese dispositivo específico. Una instalación típica podría incluir:
- base.apk, el código de la aplicación principal y los recursos esenciales
- split_config.arm64_v8a.apk, Librerías nativas para la CPU del dispositivo
- split_config.xxhdpi.apk, Recursos para la densidad de pantalla del dispositivo
- split_config.en.apk, recursos de idioma para la configuración regional del usuario
Estos APK divididos se instalan juntos como una única aplicación lógica. El administrador de paquetes de Android los trata como una sola aplicación, pero son archivos físicamente separados en el dispositivo. Este es el mecanismo que permite el ahorro de tamaño.
Entrega dinámica
Una de las funciones más poderosas de App Bundles es la entrega dinámica. Los desarrolladores pueden marcar ciertas funciones como descargables bajo demanda. Por ejemplo, una aplicación de edición de fotografías podría incluir filtros avanzados como un módulo de funciones dinámicas. Los usuarios que nunca usan esos filtros nunca los descargan, lo que ahorra espacio de almacenamiento.
Los módulos de funciones dinámicas se descargan e instalan a través de la biblioteca Play Core en tiempo de ejecución. La aplicación puede comprobar si un módulo está instalado y solicitar su descarga cuando sea necesario, de modo que el usuario experimente la nueva funcionalidad como una pequeña descarga dentro de la aplicación en lugar de una reinstalación completa.
AAB vs APK: diferencias clave
Comprender las diferencias entre estos formatos ayuda a aclarar cuándo cada uno es apropiado:
- Los archivos APK Instalabilidad: se pueden instalar directamente en cualquier dispositivo Android. Los archivos AAB no se pueden instalar directamente y deben procesarse primero.
- Tamaño: Un APK universal contiene recursos para todas las configuraciones. Una AAB permite la entrega específica del dispositivo, lo que resulta en descargas más pequeñas.
- Firma: Con los APK, el desarrollador firma el paquete instalable final. Con los AAB, el desarrollador firma el paquete y Google vuelve a firmar los APK generados mediante Play App Signing.
- Los APK Distribución: se pueden distribuir a través de cualquier canal. Los AAB están diseñados principalmente para Play Store, aunque herramientas como bundletool pueden generar APK a partir de ellos localmente.
- Compartibilidad: Puedes compartir fácilmente un archivo APK con otra persona. Compartir una aplicación instalada desde una AAB requiere recopilar todos los APK divididos, lo cual es más complejo.
La controversia de la firma
Uno de los aspectos más debatidos del mandato de la AAB es Jugar firma de aplicaciones. Cuando un desarrollador carga un AAB, Google posee la clave de firma utilizada para firmar los APK finales entregados a los usuarios. Esto significa que Google técnicamente tiene la capacidad de modificar el contenido del APK antes de firmarlo y entregarlo.
Google sostiene que esto es necesario porque necesitan firmar los APK divididos que generan. Los desarrolladores conservan una clave de carga para autenticar sus cargas, pero la infraestructura de Google administra la clave de firma de la aplicación real.
Para la mayoría de los desarrolladores, esta es una compensación razonable. Google proporciona servicios de copia de seguridad y recuperación de claves, y se elimina el riesgo de pérdida de claves (lo que impediría permanentemente las actualizaciones de la aplicación). Sin embargo, los desarrolladores centrados en la privacidad y los defensores del código abierto han expresado su preocupación sobre esta centralización de la confianza.
Qué significa esto para los usuarios que comparten aplicaciones
El cambio a App Bundles tiene implicaciones importantes para los usuarios que desean compartir aplicaciones fuera de Play Store:
Extraer aplicaciones instaladas
Cuando extraes una aplicación instalada desde un AAB, no obtienes ni un solo archivo APK. En su lugar, obtienes una colección de APK divididos. Estas divisiones son específicas del dispositivo, lo que significa que una aplicación extraída de un teléfono con un procesador ARM64 y una pantalla xxhdpi no funcionará en un dispositivo con una configuración diferente.
Formatos XAPK y APKS
Para abordar el desafío de compartir APK divididos, se crearon formatos contenedores como XAPK y APKS. Estos formatos agrupan todos los APK divididos en un único archivo descargable. Cuando encuentra un archivo XAPK, es probable que contenga una aplicación que se distribuyó originalmente como App Bundle.
Nuestro Convertidor de XAPK a APK puede ayudarlo a extraer el APK base de estos formatos de contenedor. Sin embargo, tenga en cuenta que es posible que el APK base por sí solo no contenga todos los recursos necesarios para que la aplicación funcione correctamente en todos los dispositivos, ya que la densidad y los recursos específicos de ABI pueden estar en los APK divididos.
Usando la herramienta de paquete
Google proporciona una herramienta de código abierto llamada bundletool que puede generar archivos APK a partir de un archivo AAB localmente. Los desarrolladores pueden usarla para crear APKs universales para pruebas o distribución alternativa. El comando se parece a:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
Esto genera un APK universal que contiene todos los recursos para todas las configuraciones. Será más grande que una compilación específica de un dispositivo, pero funcionará en cualquier dispositivo. Este es el enfoque utilizado por nuestro Convertidor de AAB a APK.
Impacto en las tiendas de aplicaciones alternativas
El mandato de la AAB afecta principalmente a Google Play Store. Las tiendas de aplicaciones alternativas y los canales de distribución directos aún pueden aceptar archivos APK. Los desarrolladores que quieran distribuir fuera de Play pueden continuar creando APK universales junto con sus cargas de AAB.
Sin embargo, algunos desarrolladores solo crean AAB y dependen completamente de Play para su distribución. Esto significa que las aplicaciones de estos desarrolladores son más difíciles de obtener fuera del ecosistema de Play Store. Los repositorios de aplicaciones de terceros se han adaptado alojando las colecciones de APK divididas (como archivos XAPK o APKS) o utilizando Bundletool para generar APK universales.
Módulos de funciones dinámicas en la práctica
Los módulos de funciones dinámicas representan una de las capacidades más interesantes del formato App Bundle. A continuación se muestran algunos casos de uso del mundo real:
- Características de la cámara: Una aplicación puede incluir filtros AR como un módulo dinámico, descargado solo cuando el usuario accede por primera vez a la función de la cámara.
- Paquetes de idiomas: Los datos de traducción para idiomas menos comunes se pueden entregar bajo demanda en lugar de agruparse con cada instalación.
- Niveles de juego: Games puede ofrecer contenido adicional a medida que los jugadores progresan, manteniendo la descarga inicial pequeña.
- Herramientas profesionales: Las funciones avanzadas de las aplicaciones de productividad solo se pueden ofrecer a los usuarios que las necesitan.
Para los usuarios, esto significa que el tamaño instalado de una aplicación puede crecer con el tiempo a medida que se descargan módulos dinámicos. También significa que compartir dicha aplicación requiere incluir todos los módulos descargados, lo que complica aún más el proceso de extracción.
Mejores prácticas para desarrolladores
Si está desarrollando aplicaciones para Android, estas son recomendaciones para trabajar con App Bundles de forma eficaz:
- Pruebe siempre con BundleTool localmente antes de subir a Play. Genere APK específicos del dispositivo y verifique que funcionen correctamente.
- Usa la pista de pruebas interna de Play Console para verificar que los APK divididos se instalen y funcionen correctamente en dispositivos reales.
- Considere proporcionar un APK universal para canales de distribución alternativos si su base de usuarios se extiende más allá de Play Store.
- Tenga en cuenta los límites de los módulos de funciones dinámicas. Las funciones que se utilizan con frecuencia deben estar en el módulo base, no en los módulos dinámicos.
- Prueba en dispositivos con diferentes configuraciones para garantizar que las divisiones de configuración se generen correctamente y que no falten recursos.
- Mantenga su clave de carga segura. Mientras Google administra la clave de firma de la aplicación, su clave de carga autentica su identidad como desarrollador.
El futuro de la distribución de aplicaciones
El formato App Bundle continúa evolucionando. Google ha introducido funciones como Play Asset Delivery para activos de juegos grandes, SDK Runtime para SDK de publicidad y soporte mejorado para configuraciones de Wear OS y Android TV. La tendencia es hacia una entrega más granular y bajo demanda de componentes de aplicaciones.
Para los usuarios, esto significa que el concepto de un único archivo de aplicación autónomo es cada vez menos común en las aplicaciones de Play Store. Comprender formatos como XAPK, APKS y las herramientas disponibles para trabajar con ellos se vuelve cada vez más importante para cualquiera que administre aplicaciones fuera del flujo estándar de Play Store.
Cuándo conservar una AAB y cuándo crear una APK universal
El Android App Bundle representa un cambio fundamental en la forma en que se empaquetan y entregan las aplicaciones. Si bien aporta beneficios genuinos en términos de tamaño de descarga y eficiencia de entrega, también introduce complejidad para los usuarios que comparten aplicaciones o las instalan desde fuentes alternativas. Comprender cómo funcionan los AAB, cómo generan APK divididos y qué herramientas están disponibles para convertir entre formatos le brinda lo que necesita para elegir el formato correcto y convertir entre ellos con confianza.
Los desarrolladores recurren a AAB para optimizar la forma en que se entrega una aplicación; la mayoría de los usuarios habituales sólo lo encuentran cuando intentan instalar algo en un dispositivo sin acceso a Play Store. De cualquier manera, lo que vale la pena recordar es simple: AAB es un formato de publicación, no un formato de instalación, y existen herramientas que cierran la brecha entre los dos.