Em agosto de 2021, o Google tomou uma decisão que mudou fundamentalmente a forma como os aplicativos Android são distribuídos: todos os novos aplicativos enviados à Google Play Store devem usar o formato Pacote de aplicativos Android (AAB) em vez do APK tradicional. Essa mudança afetou desenvolvedores, usuários e todo o ecossistema de distribuição de aplicativos de terceiros. Mas o que exatamente é um App Bundle, como funciona e por que você deveria se importar?
Este guia cobre tudo, desde os aspectos técnicos do formato AAB até as implicações práticas para usuários que desejam compartilhar aplicativos com amigos ou instalá-los em dispositivos sem acesso à Play Store.
O que é um pacote de aplicativos Android?
Um Android App Bundle é um formato de publicação que contém todos os códigos e recursos compilados de um aplicativo, mas adia a geração do APK instalável final para o Google Play. Pense nisso como um modelo mestre a partir do qual os servidores do Google criam pacotes otimizados e específicos para dispositivos dinamicamente.
Ao contrário de um APK, que é um pacote pronto para instalação, um arquivo AAB não pode ser instalado diretamente em um dispositivo. É um artefato de construção que é carregado na Play Store, onde a infraestrutura do Google o processa e gera APKs personalizados para cada configuração de dispositivo.
A extensão do arquivo é .aab e internamente usa um formato de buffer de protocolo combinado com uma estrutura semelhante a ZIP. Ele contém o bytecode DEX do aplicativo, recursos, ativos, bibliotecas nativas e um arquivo de metadados de pacote especial que informa ao Google Play como dividir o conteúdo.
Por que os pacotes de aplicativos obrigatórios do Google
A principal motivação por trás dos App Bundles é reduzindo tamanhos de download de aplicativos. Um aplicativo Android típico precisa suportar múltiplas densidades de tela (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), múltiplas arquiteturas de CPU (armeabi-v7a, arm64-v8a, x86, x86_64) e vários idiomas. No modelo APK tradicional, todos esses recursos são agrupados em um único arquivo, mesmo que qualquer dispositivo precise apenas de uma fração deles.
Considere um jogo que inclui bibliotecas nativas para quatro arquiteturas de CPU e texturas para cinco densidades de tela. O APK universal pode ter 200 MB, mas uma versão específica do dispositivo contendo apenas a arquitetura e densidade relevantes pode ter 80 MB. Isso representa uma redução de 60% no tamanho do download.
O Google relata que os aplicativos que usam App Bundles são, em média, 15% menores do que seus equivalentes APK universais. Para aplicativos e jogos grandes, a economia pode ser muito mais dramática. Downloads menores significam instalações mais rápidas, menos consumo de largura de banda e menos instalações abandonadas devido a questões de tamanho.
Como funcionam os pacotes de aplicativos internamente
A estrutura do pacote
Um arquivo AAB é organizado em módulos, com cada módulo contendo seu próprio código, recursos e ativos. A estrutura mais comum inclui:
- Módulo básico: Contém o código principal do aplicativo e os recursos de que todo dispositivo precisa. Isso está sempre instalado.
- Divisões de configuração: Seções separadas para recursos de linguagem, recursos de densidade de tela e bibliotecas nativas ABI (arquitetura de CPU).
- Módulos de recursos dinâmicos: Módulos opcionais que podem ser baixados sob demanda após a instalação inicial.
- Pacotes de ativos: Grandes ativos, como níveis de jogos ou mídia, que podem ser entregues no momento da instalação, sob demanda ou em segundo plano.
Geração de APK dividido
Quando um usuário baixa um aplicativo da Play Store, os servidores do Google examinam a configuração do dispositivo e geram um conjunto de APKs divididos sob medida para aquele dispositivo específico. Uma instalação típica pode incluir:
- base.apk, o código principal do aplicativo e recursos essenciais
- split_config.arm64_v8a.apk, bibliotecas nativas para CPU do dispositivo
- split_config.xxhdpi.apk, Recursos para densidade de tela do aparelho
- split_config.en.apk, recursos de idioma para a localidade do usuário
Esses APKs divididos são instalados juntos como um único aplicativo lógico. O gerenciador de pacotes do Android os trata como um único aplicativo, mas são arquivos fisicamente separados no dispositivo. Este é o mecanismo que permite a economia de tamanho.
Entrega Dinâmica
Um dos recursos mais poderosos dos App Bundles é a entrega dinâmica. Os desenvolvedores podem marcar determinados recursos como baixáveis sob demanda. Por exemplo, um aplicativo de edição de fotos pode incluir filtros avançados como um módulo de recurso dinâmico. Os usuários que nunca usam esses filtros nunca os baixam, economizando espaço de armazenamento.
Os módulos de recursos dinâmicos são baixados e instalados por meio da biblioteca Play Core em tempo de execução. O aplicativo pode verificar se um módulo está instalado e solicitar seu download quando necessário, para que o usuário experimente a nova funcionalidade como um pequeno download no aplicativo, em vez de uma reinstalação completa.
AAB vs APK: principais diferenças
Compreender as diferenças entre esses formatos ajuda a esclarecer quando cada um é apropriado:
- Os arquivos APK Instabilidade: podem ser instalados diretamente em qualquer dispositivo Android. Os arquivos AAB não podem ser instalados diretamente e devem ser processados primeiro.
- Tamanho: A universal APK contains resources for all configurations. Um AAB permite a entrega específica do dispositivo, resultando em downloads menores.
- Assinatura: Com APKs, o desenvolvedor assina o pacote instalável final. Com AABs, o desenvolvedor assina o pacote e o Google assina novamente os APKs gerados usando o Play App Signing.
- Os APKs Distribuição: podem ser distribuídos por meio de qualquer canal. Os arquivos AAB são projetados principalmente para a Play Store, embora ferramentas como o bundletool possam gerar APKs a partir deles localmente.
- Compartilhamento: Você pode compartilhar facilmente um arquivo APK com outra pessoa. Compartilhar um aplicativo instalado de um AAB requer a coleta de todos os APKs divididos, o que é mais complexo.
A controvérsia da assinatura
Um dos aspectos mais debatidos do mandato AAB é Assinatura de aplicativos do Google Play. Quando um desenvolvedor faz upload de um AAB, o Google mantém a chave de assinatura usada para assinar os APKs finais entregues aos usuários. Isso significa que o Google tem tecnicamente a capacidade de modificar o conteúdo do APK antes de assiná-lo e entregá-lo.
O Google argumenta que isso é necessário porque eles precisam assinar os APKs divididos que geram. Os desenvolvedores mantêm uma chave de upload para autenticar seus uploads, mas a chave de assinatura do aplicativo real é gerenciada pela infraestrutura do Google.
Para a maioria dos desenvolvedores, esta é uma compensação razoável. O Google fornece serviços de backup e recuperação de chaves, e o risco de perda de chaves (o que impediria permanentemente as atualizações de aplicativos) é eliminado. No entanto, os desenvolvedores focados na privacidade e os defensores do código aberto levantaram preocupações sobre esta centralização da confiança.
O que isso significa para usuários que compartilham aplicativos
A mudança para App Bundles tem implicações significativas para usuários que desejam compartilhar aplicativos fora da Play Store:
Extraindo aplicativos instalados
Ao extrair um aplicativo instalado de um AAB, você não obtém um único arquivo APK. Em vez disso, você obtém uma coleção de APKs divididos. Essas divisões são específicas do dispositivo, o que significa que um aplicativo extraído de um telefone com processador ARM64 e tela xxhdpi não funcionará em um dispositivo com configuração diferente.
Formatos XAPK e APKS
Para enfrentar o desafio de compartilhar APKs divididos, foram criados formatos de contêiner como XAPK e APKS. Esses formatos agrupam todos os APKs divididos em um único arquivo para download. Quando você encontra um arquivo XAPK, ele provavelmente contém um aplicativo que foi originalmente distribuído como um App Bundle.
Nosso Conversor de XAPK para APK pode ajudá-lo a extrair o APK base desses formatos de contêiner. No entanto, lembre-se de que o APK base por si só pode não conter todos os recursos necessários para que o aplicativo funcione corretamente em todos os dispositivos, já que a densidade e os recursos específicos da ABI podem estar nos APKs divididos.
Usando bundletool
O Google fornece uma ferramenta de código aberto chamada bundletool que pode gerar APKs a partir de um arquivo AAB localmente. Os desenvolvedores podem usar isso para criar APKs universais para teste ou distribuição alternativa. O comando se parece com:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
Isso gera um APK universal que contém todos os recursos para todas as configurações. Será maior do que uma versão específica do dispositivo, mas funciona em qualquer dispositivo. Esta é a abordagem usada pelo nosso Conversor AAB para APK.
Impacto nas lojas de aplicativos alternativas
O mandato AAB afeta principalmente a Google Play Store. Lojas de aplicativos alternativas e canais de distribuição direta ainda podem aceitar arquivos APK. Os desenvolvedores que desejam distribuir fora do Google Play podem continuar criando APKs universais junto com seus uploads AAB.
No entanto, alguns desenvolvedores criam apenas AABs e dependem inteiramente do Play para distribuição. Isso significa que os aplicativos desses desenvolvedores são mais difíceis de obter fora do ecossistema da Play Store. Repositórios de aplicativos de terceiros foram adaptados hospedando as coleções APK divididas (como arquivos XAPK ou APKS) ou usando bundletool para gerar APKs universais.
Módulos de recursos dinâmicos na prática
Módulos de recursos dinâmicos representam um dos recursos mais interessantes do formato App Bundle. Aqui estão alguns casos de uso do mundo real:
- Recursos da câmera: Um aplicativo pode incluir filtros AR como um módulo dinâmico, baixado apenas quando o usuário acessa o recurso de câmera pela primeira vez.
- Pacotes de idiomas: Os dados de tradução para idiomas menos comuns podem ser entregues sob demanda, em vez de serem fornecidos em pacote com cada instalação.
- Os jogos Níveis de jogo: podem fornecer conteúdo adicional à medida que os jogadores progridem, mantendo o download inicial pequeno.
- Ferramentas profissionais: Recursos avançados em aplicativos de produtividade podem ser fornecidos apenas aos usuários que precisam deles.
Para os usuários, isso significa que o tamanho instalado de um aplicativo pode aumentar com o tempo à medida que os módulos dinâmicos são baixados. Isso também significa que o compartilhamento de tal aplicativo requer a inclusão de todos os módulos baixados, complicando ainda mais o processo de extração.
Melhores práticas para desenvolvedores
Se você estiver desenvolvendo aplicativos Android, aqui estão algumas recomendações para trabalhar com App Bundles de maneira eficaz:
- Sempre teste com bundletool localmente antes de enviar para o Play. Gere APKs específicos para o dispositivo e verifique se eles funcionam corretamente.
- Use a faixa de testes internos do Play Console para verificar se os APKs divididos são instalados e funcionam corretamente em dispositivos reais.
- Considere fornecer um APK universal para canais de distribuição alternativos se sua base de usuários for além da Play Store.
- Esteja atento aos limites do módulo de recursos dinâmicos. Os recursos usados com frequência devem estar no módulo base, não em módulos dinâmicos.
- Teste em dispositivos com configurações diferentes para garantir que as divisões de configuração sejam geradas corretamente e que nenhum recurso esteja faltando.
- Mantenha sua chave de upload segura. Embora o Google gerencie a chave de assinatura do aplicativo, sua chave de upload autentica sua identidade como desenvolvedor.
O futuro da distribuição de aplicativos
O formato App Bundle continua a evoluir. O Google introduziu recursos como Play Asset Delivery para grandes ativos de jogos, SDK Runtime para SDKs de publicidade e suporte aprimorado para configurações de Wear OS e Android TV. A tendência é uma entrega mais granular e sob demanda de componentes de aplicativos.
Para os usuários, isso significa que o conceito de um arquivo de aplicativo único e independente está se tornando menos comum nos aplicativos da Play Store. Compreender formatos como XAPK, APKS e as ferramentas disponíveis para trabalhar com eles torna-se cada vez mais importante para quem gerencia aplicativos fora do fluxo padrão da Play Store.
Quando manter um AAB versus quando construir um APK universal
O Android App Bundle representa uma mudança fundamental na forma como os aplicativos são empacotados e entregues. Embora traga benefícios genuínos em termos de tamanho de download e eficiência de entrega, também introduz complexidade para usuários que compartilham aplicativos ou os instalam de fontes alternativas. Entender como os AABs funcionam, como eles geram APKs divididos e quais ferramentas estão disponíveis para conversão entre formatos fornece o que você precisa para escolher o formato certo e converter entre eles com confiança.
Os desenvolvedores recorrem à AAB para otimizar a forma como um aplicativo é entregue; a maioria dos usuários comuns só encontra isso quando tenta instalar algo em um dispositivo sem acesso à Play Store. De qualquer forma, vale a pena lembrar que é simples: AAB é um formato de publicação, não um formato de instalação, e existem ferramentas que preenchem a lacuna entre os dois.