Android App Bundle (AAB) : un guide complet pour les développeurs et les utilisateurs

A sealed parcel labeled AAB on a developer desk, illustrating the Android App Bundle format

En août 2021, Google a pris une décision qui a fondamentalement modifié la façon dont les applications Android sont distribuées : toutes les nouvelles applications soumises au Google Play Store doivent utiliser le format Offre groupée d'applications Android (AAB) au lieu du traditionnel APK. Ce changement a affecté les développeurs, les utilisateurs et l’ensemble de l’écosystème de distribution d’applications tierces. Mais qu’est-ce qu’un App Bundle exactement, comment ça marche et pourquoi devriez-vous vous en soucier?

Ce guide couvre tout, depuis les aspects techniques internes du format AAB jusqu'aux implications pratiques pour les utilisateurs qui souhaitent partager des applications avec des amis ou les installer sur des appareils sans accès au Play Store.

Qu'est-ce qu'un pack d'applications Android?

Un Android App Bundle est un format de publication qui contient tout le code et les ressources compilés d'une application, mais qui reporte la génération de l'APK final installable sur Google Play. Considérez-le comme un modèle principal à partir duquel les serveurs de Google créent à la volée des packages optimisés et spécifiques à l'appareil.

Contrairement à un APK, qui est un package prêt à installer, un fichier AAB ne peut pas être installé directement sur un appareil. Il s'agit d'un artefact de construction qui est téléchargé sur le Play Store, où l'infrastructure de Google le traite et génère des APK personnalisés pour chaque configuration d'appareil.

L'extension du fichier est .aab et utilise en interne un format de tampon de protocole combiné à une structure de type ZIP. Il contient le bytecode DEX de l'application, les ressources, les actifs, les bibliothèques natives et un fichier de métadonnées spécial qui indique à Google Play comment diviser le contenu.

Pourquoi les offres groupées d'applications obligatoires par Google

La principale motivation derrière les App Bundles est réduire la taille des téléchargements d'applications. Une application Android typique doit prendre en charge plusieurs densités d'écran (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), plusieurs architectures de processeur (armeabi-v7a, arm64-v8a, x86, x86_64) et plusieurs langues. Dans le modèle APK traditionnel, toutes ces ressources sont regroupées dans un seul fichier, même si un appareil donné n’en a besoin que d’une fraction.

Prenons un jeu qui inclut des bibliothèques natives pour quatre architectures de processeur et des textures pour cinq densités d'écran. L'APK universel peut faire 200 Mo, mais une version spécifique à un appareil contenant uniquement l'architecture et la densité pertinentes peut faire 80 Mo. Cela représente une réduction de 60 % de la taille du téléchargement.

Google rapporte que les applications utilisant les App Bundles sont en moyenne 15 % plus petites que leurs équivalents APK universels. Pour les applications et les jeux volumineux, les économies peuvent être bien plus spectaculaires. Des téléchargements plus petits signifient des installations plus rapides, moins de consommation de bande passante et moins d'installations abandonnées en raison de problèmes de taille.

Comment fonctionnent les bundles d'applications en interne

La structure du paquet

Un fichier AAB est organisé en modules, chaque module contenant son propre code, ses ressources et ses actifs. La structure la plus courante comprend :

  • Module de base : Contient le code d’application principal et les ressources dont chaque appareil a besoin. Ceci est toujours installé.
  • Divisions de configuration : Sections séparées pour les ressources de langage, les ressources de densité d'écran et les bibliothèques natives ABI (architecture CPU).
  • Modules de fonctionnalités dynamiques : Modules optionnels téléchargeables sur demande après l'installation initiale.
  • Packs d'actifs : Des ressources volumineuses telles que des niveaux de jeu ou des médias qui peuvent être fournies au moment de l'installation, à la demande ou en arrière-plan.

Diviser la génération APK

Lorsqu'un utilisateur télécharge une application depuis le Play Store, les serveurs de Google examinent la configuration de l'appareil et génèrent un ensemble d'APK fractionnés adaptés à cet appareil spécifique. Une installation typique peut inclure :

  • base.apk, Le code d'application de base et les ressources essentielles
  • split_config.arm64_v8a.apk, Bibliothèques natives pour le CPU de l'appareil
  • split_config.xxhdpi.apk, Ressources pour la densité d'écran de l'appareil
  • split_config.en.apk, ressources linguistiques pour les paramètres régionaux de l'utilisateur

Ces APK divisés sont installés ensemble comme une seule application logique. Le gestionnaire de packages Android les traite comme une seule application, mais ce sont des fichiers physiquement distincts sur l'appareil. C'est le mécanisme qui permet de réaliser des économies de taille.

Livraison dynamique

L’une des fonctionnalités les plus puissantes des App Bundles est la livraison dynamique. Les développeurs peuvent marquer certaines fonctionnalités comme téléchargeables à la demande. Par exemple, une application de retouche photo peut inclure des filtres avancés en tant que module de fonctionnalités dynamiques. Les utilisateurs qui n'utilisent jamais ces filtres ne les téléchargent jamais, économisant ainsi de l'espace de stockage.

Les modules de fonctionnalités dynamiques sont téléchargés et installés via la bibliothèque Play Core au moment de l'exécution. L'application peut vérifier si un module est installé et demander son téléchargement si nécessaire, de sorte que l'utilisateur découvre la nouvelle fonctionnalité sous la forme d'un petit téléchargement intégré à l'application plutôt que d'une réinstallation complète.

AAB vs APK : principales différences

Comprendre les différences entre ces formats permet de clarifier quand chacun est approprié :

  • Les fichiers APK Installabilité : peuvent être directement installés sur n’importe quel appareil Android. Les fichiers AAB ne peuvent pas être installés directement et doivent être traités en premier.
  • Taille: Un APK universel contient des ressources pour toutes les configurations. Un AAB permet une livraison spécifique à l'appareil, ce qui entraîne des téléchargements plus petits.
  • Signature : Avec les APK, le développeur signe le package installable final. Avec les AAB, le développeur signe le bundle et Google re-signe les APK générés à l'aide de Play App Signing.
  • Les APK Distribution: peuvent être distribués via n’importe quel canal. Les AAB sont principalement conçus pour le Play Store, bien que des outils tels que bundletool puissent générer des APK à partir d'eux localement.
  • Partageabilité : Vous pouvez facilement partager un fichier APK avec une autre personne. Le partage d'une application installée à partir d'un AAB nécessite de collecter tous les APK fractionnés, ce qui est plus complexe.

La controverse sur la signature

L’un des aspects les plus controversés du mandat de l’AAB est Jouer à la signature d'application. Lorsqu'un développeur télécharge un AAB, Google détient la clé de signature utilisée pour signer les APK finaux livrés aux utilisateurs. Cela signifie que Google a techniquement la possibilité de modifier le contenu de l'APK avant de le signer et de le livrer.

Google affirme que cela est nécessaire car ils doivent signer les APK fractionnés qu'ils génèrent. Les développeurs conservent une clé de téléchargement pour authentifier leurs téléchargements, mais la clé de signature d'application réelle est gérée par l'infrastructure de Google.

Pour la plupart des développeurs, il s’agit d’un compromis raisonnable. Google fournit des services de sauvegarde et de récupération de clés, et le risque de perte de clé (qui empêcherait définitivement les mises à jour des applications) est éliminé. Cependant, les développeurs soucieux de la confidentialité et les défenseurs de l’open source ont exprimé leurs inquiétudes quant à cette centralisation de la confiance.

Ce que cela signifie pour les utilisateurs qui partagent des applications

Le passage aux App Bundles a des implications significatives pour les utilisateurs qui souhaitent partager des applications en dehors du Play Store :

Extraction des applications installées

Lorsque vous extrayez une application installée à partir d’un AAB, vous n’obtenez pas un seul fichier APK. Au lieu de cela, vous obtenez une collection d’APK divisés. Ces divisions sont spécifiques à l'appareil, ce qui signifie qu'une application extraite d'un téléphone doté d'un processeur ARM64 et d'un écran xxhdpi ne fonctionnera pas sur un appareil avec une configuration différente.

Formats XAPK et APKS

Pour relever le défi du partage d'APK fractionnés, des formats de conteneurs tels que XAPK et APKS ont été créés. Ces formats regroupent tous les APK divisés dans un seul fichier téléchargeable. Lorsque vous rencontrez un fichier XAPK, il contient probablement une application initialement distribuée sous forme d'App Bundle.

Notre Convertisseur XAPK en APK peut vous aider à extraire l'APK de base de ces formats de conteneurs. Cependant, gardez à l’esprit que l’APK de base à lui seul peut ne pas contenir toutes les ressources nécessaires au bon fonctionnement de l’application sur chaque appareil, car la densité et les ressources spécifiques à l’ABI peuvent se trouver dans les APK divisés.

Utilisation de l'outil bundle

Google fournit un outil open source appelé bundletool qui peut générer localement des APK à partir d'un fichier AAB. Les développeurs peuvent l'utiliser pour créer des APK universels à des fins de test ou de distribution alternative. La commande ressemble à :

bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal

Cela génère un APK universel contenant toutes les ressources pour toutes les configurations. Il sera plus grand qu'une version spécifique à un appareil, mais fonctionnera sur n'importe quel appareil. C'est l'approche utilisée par notre Convertisseur AAB en APK.

Impact sur les magasins d'applications alternatifs

Le mandat AAB affecte principalement le Google Play Store. Les magasins d'applications alternatifs et les canaux de distribution directe peuvent toujours accepter les fichiers APK. Les développeurs qui souhaitent distribuer en dehors de Play peuvent continuer à créer des APK universels parallèlement à leurs téléchargements AAB.

Cependant, certains développeurs ne créent que des AAB et s'appuient entièrement sur Play pour la distribution. Cela signifie que les applications de ces développeurs sont plus difficiles à obtenir en dehors de l'écosystème Play Store. Les référentiels d'applications tierces se sont adaptés soit en hébergeant les collections APK divisées (sous forme de fichiers XAPK ou APKS), soit en utilisant bundletool pour générer des APK universels.

Modules de fonctionnalités dynamiques en pratique

Les modules de fonctionnalités dynamiques représentent l’une des fonctionnalités les plus intéressantes du format App Bundle. Voici quelques cas d’utilisation réels :

  • Caractéristiques de la caméra : Une application peut inclure des filtres AR en tant que module dynamique, téléchargés uniquement lorsque l'utilisateur accède pour la première fois à la fonction caméra.
  • Packs de langue : Les données de traduction pour des langues moins courantes peuvent être fournies à la demande plutôt que regroupées avec chaque installation.
  • Niveaux de jeu : Games peut fournir du contenu supplémentaire à mesure que les joueurs progressent, réduisant ainsi le téléchargement initial.
  • Outils professionnels : Les fonctionnalités avancées des applications de productivité peuvent être fournies uniquement aux utilisateurs qui en ont besoin.

Pour les utilisateurs, cela signifie que la taille installée d'une application peut augmenter avec le temps à mesure que les modules dynamiques sont téléchargés. Cela signifie également que le partage d'une telle application nécessite d'inclure tous les modules téléchargés, ce qui complique encore davantage le processus d'extraction.

Meilleures pratiques pour les développeurs

Si vous développez des applications Android, voici des recommandations pour utiliser efficacement les App Bundle :

  1. Testez toujours avec bundletool localement avant de le télécharger sur Play. Générez des APK spécifiques à l'appareil et vérifiez qu'ils fonctionnent correctement.
  2. Utiliser la piste de test interne de la Play Console pour vérifier que les APK fractionnés s’installent et fonctionnent correctement sur des appareils réels.
  3. Pensez à fournir un APK universel pour des canaux de distribution alternatifs si votre base d'utilisateurs s'étend au-delà du Play Store.
  4. Soyez conscient des limites des modules de fonctionnalités dynamiques. Les fonctionnalités fréquemment utilisées doivent se trouver dans le module de base et non dans les modules dynamiques.
  5. Test sur des appareils avec différentes configurations pour garantir que les fractionnements de configuration sont générés correctement et qu'aucune ressource ne manque.
  6. Gardez votre clé de téléchargement en sécurité. Pendant que Google gère la clé de signature d'application, votre clé de téléchargement authentifie votre identité en tant que développeur.

L'avenir de la distribution d'applications

Le format App Bundle continue d’évoluer. Google a introduit des fonctionnalités telles que Play Asset Delivery pour les ressources de jeux volumineuses, SDK Runtime pour les SDK publicitaires et une prise en charge améliorée des configurations Wear OS et Android TV. La tendance est à une livraison plus granulaire et à la demande des composants d’application.

Pour les utilisateurs, cela signifie que le concept d'un fichier d'application unique et autonome devient de moins en moins courant pour les applications du Play Store. Comprendre les formats tels que XAPK, APKS et les outils disponibles pour les utiliser devient de plus en plus important pour quiconque gère des applications en dehors du flux standard du Play Store.

Quand conserver un AAB et quand créer un APK universel

L'Android App Bundle représente un changement fondamental dans la façon dont les applications sont emballées et livrées. Bien que cela apporte de réels avantages en termes de taille de téléchargement et d’efficacité de livraison, cela introduit également de la complexité pour les utilisateurs qui partagent des applications ou les installent à partir de sources alternatives. Comprendre comment fonctionnent les AAB, comment ils génèrent des APK fractionnés et quels outils sont disponibles pour convertir entre les formats vous donne ce dont vous avez besoin pour choisir le bon format et convertir entre eux en toute confiance.

Les développeurs font appel à AAB pour optimiser la manière dont une application est livrée ; la plupart des utilisateurs quotidiens ne le rencontrent que lorsqu'ils essaient d'installer quelque chose sur un appareil sans accès au Play Store. Quoi qu’il en soit, ce qu’il faut retenir est simple : AAB est un format de publication, pas un format d’installation, et il existe des outils qui comblent le fossé entre les deux.

Conçu et documenté par Mst Shaefale Développeur principal et architecte de packages Android • Vérifié sur Android 12-15

Mst Shaefale gère la fusion XAPK/APKS côté client, l'analyseur de manifeste binaire et les outils de signature APK v1+v2 chez xapktoapk.com. Vous repérez une commande obsolète ou un changement de système d'exploitation? Envoyez une note éditoriale.