APKs divididos e Android App Bundles, explicados para usuários
Advertisement
De um APK para vários
Antes um app era um APK contendo código e recursos para todo tamanho de tela, idioma e CPU. Desde agosto de 2021, o Google Play exige que novos apps sejam enviados como Android App Bundle (.aab). O Play guarda o bundle e, a cada download, gera o conjunto de APKs que compõem o app naquele aparelho específico.
As partes
- base.apk: o código e os recursos comuns a todo aparelho. Instalável sozinho apenas se o app foi construído assim; a maioria dos apps modernos não é.
- Partes de configuração:
split_config.arm64_v8a.apk(código nativo da CPU),split_config.xxhdpi.apk(imagens para a densidade de tela),split_config.en.apk,split_config.pt.apk(textos de idioma). O aparelho recebe uma de cada tipo. - Partes de recursos: módulos opcionais que o app baixa quando precisa, como um editor ou um recurso de câmera.
Todas as partes de um app compartilham nome do pacote, código de versão e assinatura. O Android as instala em uma única sessão e as trata como um app.
Por que instalar só base.apk falha
O app inicia, procura um recurso ou biblioteca nativa que está em uma parte e trava com Resources$NotFoundException ou UnsatisfiedLinkError, ou o instalador recusa com INSTALL_FAILED_MISSING_SPLIT. É por isso que um XAPK precisa ser instalado inteiro; veja instalar APKs divididos com o SAI.
Como os espelhos lidam com bundles
Como o Play gera conjuntos por aparelho, um espelho guarda ou um APK universal (a build de arquivo único do desenvolvedor, que contém todas as configurações, maior mas instalável em qualquer lugar) ou um XAPK com a base mais as partes da configuração mais comum (arm64, xxhdpi, vários idiomas). As páginas de versão daqui indicam o formato de cada arquivo, para você escolher o APK universal em um aparelho incomum e o XAPK em um celular atual.
Verificar o que um aparelho tem
O App Manager ou o SAI listam as partes de um app instalado nos detalhes dele. adb shell pm path <pacote> imprime cada arquivo APK do app, um por linha. Um app com uma única linha foi instalado como pacote universal ou de arquivo único.
Este guia descreve o comportamento geral do Android; os nomes dos menus variam por fabricante e versão. Os downloads deste site vêm de espelhos de terceiros consolidados e nunca são modificados por nós.