Le format de fichier d’application d’Android, l’APK (Android PacKage), nous accompagne depuis le lancement d’Android en 2008. Il est portable, facile à créer car il ne s’agit que d’un fichier .zip structuré et largement pris en charge par une variété d’outils. Windows 11 va même prendre en charge le format dans le cadre de son prochain Compatibilité Android. Google, cependant, ne veut plus que les APK soient le moyen de publier une application Android. de Google Blog des développeurs Android récapitule comment, à partir d’août, les nouvelles applications téléchargées sur le Play Store devront utiliser le nouveau format Android App Bundles (AAB) pour distribuer les applications. Cela ressemble à un début, et Google dit que les App Bundles » remplaceront l’APK en tant que format de publication standard « .
Les bundles d’applications Android ont été introduits dans l’écosystème Android en 2018, et j’ai écrit une grande section à leur sujet dans le Test d’Android 9. L’argumentaire de vente de base est que les appareils Android ont de nombreuses combinaisons de matériel et de langues différentes que les applications doivent prendre en charge, et l’envoi de tout ce code à chaque appareil individuel est une perte d’espace. Android prend en charge plus de 150 langues, quatre différents Architectures CPU (ARMv7, ARMv8, x86 et x86_64) et plusieurs compartiments de résolution d’écran. Il est courant d’empiler tout cela dans un seul APK (bien qu’ils soient parfois divisés par architecture de processeur), mais cela signifie que chaque appareil reçoit beaucoup de code et de ressources qui ne sont pas pertinents pour sa combinaison spécifique de processeur, de paramètres régionaux et d’écran. Taille. Bien que ce gaspillage d’espace de stockage n’ait pas beaucoup d’importance sur les téléphones haut de gamme avec de bonnes connexions Internet, cela peut être un gros problème pour les appareils moins chers, à stockage limité et dans les endroits où Internet rapide est difficile à trouver.
La solution de Google est l’Android App Bundle, qui transforme la distribution d’applications Android d’un APK monolithique et universel en une collection de « APK divisés » qui peuvent être spécifiquement distribués par le Google Play Store pour chaque appareil individuel. Comme son nom l’indique, ces « APK divisés » ne sont pas des applications entières. Ils font partie d’une application, chacun ciblant un domaine de changement spécifique, qui se combinent pour former l’application finale. Avec App Bundles, si vous avez un appareil ARMv8 haute résolution avec un paramètre régional défini sur l’anglais avec App Bundles, le Play Store crache un ensemble d’APK divisés qui ne prend en charge que ce type d’appareil. Si votre ami a un téléphone ARM v7 basse résolution pour l’anglais et l’hindi, il obtiendra un autre ensemble d’APK qui prend en charge exactement cela. Google Play peut générer des APK sur mesure pour chaque utilisateur, en leur donnant uniquement le code dont ils ont besoin et rien de plus. Google dit que le résultat est des applications qui sont 15 % plus petites qu’un APK universel.
Les développeurs utilisant des App Bundles peuvent même modulariser fonctionnalités d’une application. Cela permet aux fonctionnalités d’être uniquement fournies aux appareils qui les prennent en charge, ou elles ne sont tout simplement pas incluses dans le téléchargement initial et ne sont disponibles pour les utilisateurs que sous forme de téléchargement à la demande. La même fonctionnalité à la demande entre en jeu si un utilisateur modifie les paramètres régionaux.
Bien que le système App Bundle préfère envoyer les nouveaux APK sophistiqués, il n’est pas obligé de le faire. Puisqu’il peut formater les applications comme il le souhaite, un APK monolithique rétrocompatible peut toujours être généré. Cela rend l’approche universellement compatible avec tous les téléphones Android, peu importe à quel point votre appareil actuel est négligé.
Offres groupées d’applications par rapport à l’écosystème autre que Google Play
Comme de nombreuses nouvelles fonctionnalités Android, le passage des APK aux Android App Bundles se traduit par un ensemble de fonctionnalités plus complexes et sophistiquées pour le déploiement d’applications. Mais cela donne également à Google beaucoup plus de contrôle sur l’écosystème Android. Ensembles d’applications Android besoin à traiter par l’ordinateur cloud d’une boutique d’applications afin d’être utile. Alors que les App Bundles sont un format open source et que Google a un open source « bundletool » qui peut les compiler, une autre entreprise aurait besoin de créer sa propre infrastructure, de payer les coûts du serveur pour l’héberger dans le cloud et de gérer les exigences effrayantes de signature d’applications (nous en parlerons plus tard).
Les App Bundles étant open source, les outils de développement peuvent les prendre en charge plus facilement. Mais un magasin d’applications alternatif devrait assumer tellement de travail et de responsabilités qu’il est peu probable que le format devienne autre chose que le package d’applications Google Play.
L’un des principaux composants de sécurité des APK est la signature d’applications. Il s’agit d’un certificat numérique appartenant au développeur de l’application qui certifie qu’il a créé l’application. La signature de l’application n’est pas vraiment pertinente lors de la première installation, mais pour chaque point suivant, les signatures doivent correspondre. Cela signifie que seul le propriétaire du certificat (le développeur d’application d’origine) est en mesure de mettre à jour cette application. Aucun tiers aléatoire ne peut créer un APK appelé « Google-Pay.apk » qui écrase la véritable application Google Pay et vole toutes vos informations bancaires.
Les App Bundles crachent des APK. Cela signifie qu’un système complet de création d’applications doit être hébergé dans le cloud. Cela signifie également héberger chaque clé de signature d’application de développeur dans le cloud, transférant efficacement la responsabilité d’une application du développeur à Google. Google appelle cela « Google Play App Signing », et la société promet sérieusement que vous possédez toujours l’application et que vous y aurez toujours accès. Mais cet arrangement ressemble un peu au transfert de l’acte de votre maison à un tiers.
Le contrôle de Google sur le Play Store signifie qu’il possédait déjà la rue et l’allée, mais il a maintenant encore plus de contrôle sur votre application. Si les groupes itinérants de Google Play robots de terminaison automatisés ciblez votre compte développeur pour certains infraction perçue, vous aurez encore moins de recours.
Les bundles d’applications Android placent une énorme quantité de pouvoir et de responsabilité entre les mains du propriétaire de l’App Store. Si l’infrastructure de la boutique d’applications est compromise, un tiers pourrait avoir accès aux clés du développeur et commencer à diffuser des mises à jour malveillantes. Si vous ne faites pas confiance au propriétaire de l’App Store, tant pis. Ils possèdent désormais la clé de signature et peuvent modifier votre application à votre insu, s’ils le souhaitent. Un gouvernement pourrait également obliger le propriétaire de la boutique d’applications à modifier votre application. Dans le cas de Google, la société fait probablement un meilleur travail de sécurité du stockage que la plupart des développeurs d’applications. Mais encore une fois, il est difficile d’imaginer des magasins autres que Google l’adopter.
Google a fait quelques concessions pour apaiser les inquiétudes à ce sujet. Les développeurs peuvent conserver une copie locale de la clé de signature qu’ils téléchargent sur Google, ce qui leur permet de générer des mises à jour valides pouvant être installées par-dessus les versions de Google Play. Les développeurs peuvent également télécharger des « APK de distribution » signés à partir de la console développeur de Google Play, qui sont des APK universels à l’ancienne qui peuvent être téléchargés vers d’autres magasins d’applications. Si vous craignez que Google modifie votre application sans votre consentement, Google indique un nouveau « transparence du code » permettra aux développeurs de vérifier que les hachages du code de l’application téléchargée correspondent à ce qu’ils ont téléchargé.
À partir du mois d’août, les bundles d’applications seront obligatoires pour les nouvelles applications. Google dit que, pour l’instant, « les applications existantes sont actuellement exemptées » de l’exigence de regroupement d’applications. Nous allons considérer la présence du mot « actuellement » comme un grand indicateur des projets futurs.
Pour Google, les bundles d’applications Android sont un gros problème. Lors de Google I/O 2018, la société a déclaré que, si chaque application passait aux offres groupées, Google économiserait 10 pétaoctets de bande passante par jour, qui est un nombre incroyable indiquant l’échelle à laquelle le Play Store fonctionne. Pour ceux d’entre nous qui ne se soucient pas des factures de bande passante de Google, cependant, une économie d’espace potentielle de 15 % vaut-elle vraiment la peine de bouleverser l’ensemble de l’écosystème APK et de transférer encore plus de puissance au Play Store et aux serveurs de Google ?
Image de la liste par Google