Pesquisa de site

APK vs App Bundle: Por que o Google está mudando o formato de aplicativo do Android?


Aplicativos Android historicamente foram distribuídos como APKs (Pacotes Android). Um APK contém uma versão compilada de um aplicativo, juntamente com recursos de mídia críticos, como ícones e sons. Eles também incluem um arquivo de manifesto, fornecendo informações do aplicativo para o sistema Android e um conjunto de certificados e chaves de assinatura que verificam a identidade do editor.

Em maio de 2018, o Google lançou um novo formato de empacotamento de aplicativos destinado a solucionar algumas das deficiências dos APKs. Os Android App Bundles (AABs) cumprem a mesma função que os APKs, mas com diferenças significativas de implementação.

No Google I/O 2021, o Google anunciou que o AAB se tornará o formato de aplicativo Android padrão. A partir do final de agosto, a Play Store exigirá que novas publicações de aplicativos sejam enviadas como um AAB. Os usuários finais que usam apenas a Play Store não precisam fazer nada. Para os desenvolvedores, a história é um pouco mais complicada.

Benefícios do pacote de aplicativos

O AAB foi originalmente introduzido como uma forma de resolver alguns dos desafios de empacotamento comuns no ecossistema Android. O Android é executado em milhares de dispositivos, abrangendo uma grande variedade de tamanhos de tela, linhas de base de desempenho e arquiteturas de CPU. O formato do APK não é dimensionado para atender a essa diversidade, pois cada pacote contém todos os recursos do aplicativo.

Se você instalar um aplicativo em seu telefone, não precisará realmente baixar as variantes de tablet de alta resolução de seus gráficos. No entanto, com o APK, você normalmente obtém todas as variações, causando downloads maiores e maior uso de armazenamento. Se um desenvolvedor quiser oferecer compilações mais simplificadas, ele precisará compilar e assinar manualmente vários APKs diferentes.

Os App Bundles adotam uma abordagem diferente. Por design, eles “agrupam” várias versões diferentes de um aplicativo em um pacote lógico. A Play Store envia apenas os bits relevantes para cada dispositivo que solicita uma instalação. Ele produzirá o pacote certo sob demanda para cada usuário, portanto, um usuário americano com um dispositivo Intel de 10 polegadas obterá um download diferente de um indivíduo alemão com um telefone ARM de 5 polegadas. Crucialmente, os dispositivos ainda recebem APKs – os usuários nunca irão interagir diretamente com um App Bundle. A diferença é que os APKs são gerados dinamicamente, na nuvem.

Os App Bundles também se beneficiam do carregamento mais simples do módulo complementar e do suporte aprimorado para grandes ativos, como conteúdo de jogos. Segundo o Google, tudo isso normalmente resulta em uma redução de 15% no tamanho do download, em comparação com o mesmo aplicativo distribuído como um APK.

O que está mudando para APKs?

O Google eliminará gradualmente o suporte para APKs a partir de agosto de 2021. Novos aplicativos enviados à Play Store precisarão ser emitidos como um pacote de aplicativos. Os aplicativos existentes baseados em APK ainda serão suportados e os desenvolvedores poderão continuar lançando atualizações. Esses aplicativos são descritos como “atualmente isentos”, sugerindo que atualizações podem precisar ser lançadas como AABs no futuro.

Segundo o Google, a mudança está sendo feita para que mais usuários possam se beneficiar das vantagens do App Bundle. Do ponto de vista de um usuário final típico, é difícil argumentar contra a promessa dos App Bundles: downloads menores e espaço de armazenamento reduzido serão bem-vindos por muitos, especialmente aqueles em dispositivos de baixo custo e conexões de internet lentas.

Os usuários de versões mais antigas do Android não verão os benefícios, pois seus dispositivos não poderão reunir pacotes divididos em um aplicativo funcional. As versões desatualizadas do sistema operacional ainda poderão instalar aplicativos do App Bundle da Play Store - o sistema de agrupamento perceberá que está lidando com um dispositivo mais antigo e servirá como um APK all-in-one regular.

E quanto às desvantagens?

Embora os benefícios principais sejam inquestionáveis, os App Bundles têm uma desvantagem significativa para desenvolvedores e usuários avançados. Como o sistema App Bundle se concentra na geração dinâmica de APKs assinados na nuvem, os desenvolvedores precisam entregar suas chaves de assinatura de aplicativos ao Google. Em vez de os desenvolvedores assinarem atualizações de aplicativos em sua própria infraestrutura de compilação, o Google pegará um App Bundle e o converterá em APKs assinados.

O processo de assinatura permite que os dispositivos Android verifiquem se as atualizações vêm do mesmo editor do aplicativo instalado no momento. É uma parte crítica do ecossistema que impede que agentes mal-intencionados produzam aplicativos maliciosos que sobrescrevem silenciosamente downloads genuínos. O Google promete que os desenvolvedores poderão fornecer suas próprias chaves, mas elas ainda precisarão ser mantidas na Play Store.

Confiar no Google para armazenar chaves de assinatura dá à empresa ainda mais controle da distribuição de aplicativos Android. Qualquer pessoa que tenha comprometido a Play Store com sucesso pode começar a publicar atualizações de aplicativos para contas de desenvolvedor, pois todas as chaves de assinatura serão centralizadas na infraestrutura do Google.

Além disso, o Google agora poderia publicar atualizações de aplicativos por conta própria, talvez se um governo o obrigasse. Ele já tem a capacidade de instalar aplicativos silenciosamente em dispositivos Android. Agora que possui as chaves para os reinos dos desenvolvedores, pode atender às solicitações para instalar secretamente atualizações não aprovadas de aplicativos existentes.

Uma agência governamental poderia fazer com que o Google instalasse um aplicativo de mensagens criptografadas modificado no dispositivo de um usuário-alvo? Tal solicitação poderia permitir que a agência interceptasse mensagens, sem que o alvo soubesse. App Bundles e assinatura hospedada tornam o cenário teoricamente possível.

O risco é supostamente mitigado por um sistema de “transparência de código”. Isso visa fornecer aos desenvolvedores e usuários finais uma maneira de verificar se os APKs baixados correspondem ao pacote enviado à Play Store, eliminando a possibilidade de invasão.

O Android, na verdade, não verifica assinaturas de transparência de código, portanto, cabe à comunidade criar ferramentas em torno dele. Além disso, a transparência do código é totalmente opcional e só é ativada quando o APK inclui um arquivo de transparência. Como o Google já possui as chaves necessárias para gerar novos APKs, ele poderia remover o arquivo de transparência do código sempre que quisesse.

Pacotes de aplicativos e lojas de aplicativos de terceiros

Os App Bundles também são uma ameaça à natureza aberta do ecossistema Android. Nos últimos anos, o Google tem afirmado um papel de administração mais forte. Os pacotes de aplicativos são outro golpe contra as lojas de aplicativos de terceiros que oferecem downloads diretos de APK.

Como os desenvolvedores agora precisarão compilar App Bundles, as compilações de APK estão sendo deixadas de lado. Pode ser apenas uma questão de tempo até que o Google desative completamente a instalação direta do APK ou remova os recursos de compilação do APK dos lançamentos oficiais do Android Studio.

Por enquanto, os desenvolvedores poderão baixar APKs autônomos assinados da Play Store, depois de enviarem os App Bundles. Esses APKs estarão prontos para serem carregados em lojas de aplicativos de terceiros, portanto, não há risco imediato para esse modelo de implantação. No entanto, ainda é um inconveniente para o desenvolvedor - você precisa baixar manualmente seus APKs assinados ou criá-los separadamente em sua máquina local.

O Google anunciou a mudança obrigatória para App Bundles poucos dias depois que a Microsoft lançou o Windows 11 com suporte para aplicativos Android da Amazon App Store. Embora a mudança para App Bundles esteja em andamento há alguns anos, a decisão do Google de fazer a mudança agora pode ter como objetivo limitar o impacto da parceria Microsoft/Amazon, que oferecerá suporte apenas a APKs regulares.

Conclusão

Os Android App Bundles são um novo formato de compilação de aplicativos com muito mais eficiência do que um APK normal. Embora os dispositivos ainda recebam um APK, cada um será adaptado especificamente para a versão do sistema operacional, fator de forma do dispositivo e localidade ativa.

Embora os pacotes de aplicativos devam ser bem-vindos pela maioria dos usuários do Android, eles não são uma solução perfeita para desenvolvedores e para o ecossistema Android mais amplo. O modelo App Bundle dá ao Google mais controle sobre a distribuição de aplicativos, exigindo a divulgação de chaves de assinatura que podem tornar as atualizações forçadas de aplicativos uma realidade enquanto ameaçam vitrines de terceiros.

Artigos relacionados: