AAB (Android App Bundle) é um formato de publicação para aplicativos Android que substituiu o APK no Google Play em 2021. Ao contrário do APK, o AAB não é um arquivo de instalação — é um contêiner a partir do qual o Google Play gera dinamicamente APKs otimizados para cada dispositivo. De acordo com Android Developers, 2026, o formato reduz o tamanho do aplicativo baixado em média 15% ao eliminar recursos não utilizados.
Principais pontos
AAB (Android App Bundle) é um formato de publicação desenvolvido pelo Google como substituto do APK para distribuição através do Google Play. Internamente, o AAB é um arquivo ZIP com extensão .aab contendo código compilado, recursos e metadados. A diferença principal: o AAB não é instalado diretamente em um dispositivo.
O desenvolvedor envia o AAB para o Google Play Console. Quando um usuário tenta instalar o aplicativo, o Google Play analisa a configuração do dispositivo: densidade da tela (DPI), arquitetura da CPU, idioma e versão do Android. Com base nesta análise, é gerado um APK mínimo contendo apenas os componentes necessários.
O Google apresentou o AAB em 2018 na conferência I/O. Desde agosto de 2021, o formato tornou-se obrigatório para todos os novos aplicativos no Google Play. Os aplicativos existentes podem continuar usando APK, mas os novos devem ser publicados apenas em AAB.
A diferença entre AAB e APK é fundamental: APK é um arquivo de instalação completo pronto para instalação. AAB é um contêiner com componentes fonte que requer processamento.
| Parâmetro | APK | AAB |
|---|---|---|
| Tipo | Arquivo de instalação | Contêiner de publicação |
| Instalação | Diretamente no dispositivo | Através do Google Play |
| Tamanho | Arquivo completo | Componentes fonte |
| Módulos | Tudo em um arquivo | Módulos separados |
| Assinatura | Desenvolvedor | Google Play |
| Distribuição | Qualquer canal | Google Play |
APK é adequado para distribuição fora do Google Play — através de sites, e-mail ou sistemas MDM corporativos. O AAB está vinculado à infraestrutura do Google Play e não pode ser instalado diretamente. Para testar o AAB, é utilizada a ferramenta bundletool, que emula a geração de APK em uma máquina local.
A estrutura interna do AAB é semelhante ao APK, mas contém diretórios e arquivos adicionais para descrever os módulos e suas dependências.
| Arquivo/diretório | Finalidade |
|---|---|
| base/ | Módulo base: código, recursos, manifesto |
| BundleConfig.pb | Configuração do bundle em formato protobuf |
| Bundle-metadata/ | Metadados sobre versões dos módulos |
| feature/ | Módulos dinâmicos (on-demand) |
| assets/ | Ativos do aplicativo |
| manifest/ | Manifestos de cada módulo |
O módulo base é um componente obrigatório do AAB. Ele contém o código principal, os recursos e o manifesto do aplicativo. Sem o módulo base, o aplicativo não pode ser compilado. Todos os outros módulos são opcionais e são conectados através do Dynamic Delivery.
A configuração do AAB utiliza Protocol Buffers (protobuf) em vez de XML. Os arquivos .pb são mais compactos e são analisados mais rapidamente pela infraestrutura de servidores do Google. A ferramenta bundletool converte protobuf para um formato legível para depuração.
Dynamic Delivery é a tecnologia principal sobre a qual o AAB é construído. Ela permite entregar ao usuário apenas as partes do aplicativo que correspondem ao seu dispositivo e idioma, bem como carregar módulos adicionais sob demanda.
Os módulos Install-time são carregados junto com o APK base durante a instalação. Os módulos Conditional são entregues apenas quando as condições são atendidas — por exemplo, um módulo com materiais para telas 4K. Os módulos On-demand são carregados a pedido do usuário dentro do aplicativo.
Para recursos grandes (até 2 GB), o Play Asset Delivery é usado em vez de arquivos OBB. O PAD suporta os mesmos três modos de entrega: install-time, fast-follow (imediatamente após a instalação) e on-demand.
// Carregamento de módulo on-demand via 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 é descrito em um arquivo build.gradle separado com o tipo de entrega especificado. Um módulo pode conter seus próprios recursos, código e manifesto, independentes do aplicativo base.
A compilação do AAB é feita através do Android Gradle Plugin com a tarefa bundleRelease (ou bundleDebug). O resultado é um arquivo .aab no diretório build/outputs/bundle/.
Nenhuma configuração especial é necessária para compilar o AAB — o Android Gradle Plugin suporta bundles por padrão. Basta especificar a tarefa bundle em vez de assemble.
// build.gradle.kts — compilação do AAB com assinatura
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// Tarefa: ./gradlew bundleRelease
O Google fornece a ferramenta bundletool para gerar APKs a partir do AAB em uma máquina local. O comando `bundletool build-apks --bundle=app.aab --output=app.apks` cria um conjunto de APKs para teste em diferentes configurações de dispositivos.
bundletool também pode descompactar o AAB, exibir sua configuração e verificar a integridade da assinatura antes do envio para o Google Play Console. Para depuração, o comando `bundletool dump manifest --bundle=app.aab` é usado para mostrar o manifesto do módulo base.
Por padrão, o AAB divide os recursos em três dimensões: idioma, densidade da tela (density) e arquitetura da CPU (abi). O desenvolvedor pode desabilitar qualquer divisão no build.gradle — por exemplo, se o aplicativo suporta apenas inglês. Desabilitar uma divisão significa que os recursos para todas as variantes serão incluídos no APK base.
Otimização de recursos — o AAB converte automaticamente PNG para WebP sem perda de qualidade, comprime recursos não utilizados e remove strings duplicadas. Essas otimizações são aplicadas no lado do Google Play ao gerar o APK final. Como resultado, o usuário recebe um APK 15–25% menor que o arquivo completo.
O processo de publicação do AAB no Google Play Console difere do APK apenas no formato do arquivo enviado. O console aceita .aab, verifica sua estrutura, assinatura e configuração de módulos, e então gera APKs para cada tipo de dispositivo.
Ao enviar o AAB, o Google Play assume o gerenciamento das chaves de assinatura. O desenvolvedor envia um pacote assinado com uma chave upload, e o Google re-assina os APKs gerados com sua própria chave. Isso simplifica a rotação de chaves e a recuperação de acesso em caso de perda do keystore.
O Google Play Console fornece um teste de AAB integrado: você pode baixar o APK gerado para um dispositivo específico ou executar testes internos através dos tracks Internal Testing, Closed Alpha e Open Beta.
A migração para o AAB pode causar problemas, especialmente em projetos com muitos módulos dinâmicos ou configuração complexa de recursos.
Se um módulo dinâmico referencia recursos do módulo base com um nome incorreto, o Google Play rejeita o AAB durante a verificação. Solução — use a verificação lint antes de compilar e teste todos os módulos via bundletool localmente.
A divisão por idiomas pode retardar a inicialização do aplicativo se os recursos para a localidade atual forem carregados dinamicamente. A recomendação do Google é não dividir idiomas se houver menos de 10, ou usar install-time para os mais populares.
Alguns SDKs (análise, publicidade, mapas) requerem acesso ao manifesto completo e aos recursos. A verificação de compatibilidade com AAB é uma etapa obrigatória antes da migração. A maioria dos principais SDKs (Firebase, Google Ads, Crashlytics) são totalmente compatíveis com AAB desde 2022. Para verificar a compatibilidade, utiliza-se o bundletool com a flag --validate, que emula a geração de APK do lado do servidor.
O AAB usa o versionCode do manifesto do módulo base. Ao contrário do APK, o AAB também suporta versionCode para cada módulo separadamente — isso permite atualizar partes individuais do aplicativo sem uma reinstalação completa. O Dynamic Delivery rastreia os módulos instalados e entrega apenas os componentes modificados durante as atualizações através do Google Play.
O Google Play Console fornece análises detalhadas para cada AAB: quantos APKs foram gerados, quais splits tiveram demanda, qual o tamanho médio de download por dispositivo. O Android Vitals mostra métricas de desempenho dos APKs gerados. Esses dados ajudam a otimizar a configuração de splits e reduzir o tamanho de download para diferentes categorias de dispositivos.
Perguntas frequentes
Não, o AAB não foi projetado para instalação direta. O Google Play o converte em um APK para um dispositivo específico. Para testes em um telefone, utiliza-se bundletool, que gera APKs a partir do AAB localmente.
O Google Play gera APK apenas com os recursos correspondentes ao dispositivo do usuário: uma densidade de tela, uma arquitetura de CPU, um idioma. Recursos para outras configurações não são incluídos, economizando 15–30% do tráfego de download.
Não, os aplicativos existentes podem continuar publicando APK. O requisito do AAB aplica-se apenas a novos aplicativos. O Google recomenda, mas não exige, a atualização de projetos existentes para o AAB.
Altere a tarefa de compilação de assembleRelease para bundleRelease, verifique a compatibilidade de todos os SDKs, configure o App Signing no Google Play Console e envie o primeiro AAB através de um track existente.
Sim, o AAB inclui bibliotecas nativas nos módulos. O Google Play entrega apenas os arquivos .so para a arquitetura de CPU do dispositivo. Isso é especialmente importante para jogos em Unity e Unreal Engine com grandes compilações nativas.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também