APK versus app-bundel: waarom verandert Google het app-formaat van Android?

0
175
quietbits/Shutterstock.com

Android-apps werden in het verleden gedistribueerd als APK's (Android-pakketten). Een APK bevat een gecompileerde versie van een app, samen met kritieke mediabronnen zoals pictogrammen en geluiden. Ze bevatten ook een manifestbestand dat app-informatie levert aan het Android-systeem, en een set certificaten en ondertekeningssleutels die de identiteit van de uitgever verifiëren.

In mei 2018 lanceerde Google een nieuwe app-verpakking formaat bedoeld om enkele van de tekortkomingen met APK's te verhelpen. Android App Bundles (AAB's) vervullen dezelfde rol als APK's, maar met aanzienlijke implementatieverschillen.

Op Google I/O 2021 heeft Google aangekondigd dat AAB het standaard Android-app-formaat wordt. Vanaf eind augustus vereist de Play Store dat nieuwe app-publicaties als AAB worden ingediend. Eindgebruikers die alleen de Play Store gebruiken, hoeven niets te doen. Voor ontwikkelaars is het verhaal iets ingewikkelder.

Voordelen van app-bundel

AAB werd oorspronkelijk geïntroduceerd als een manier om een ​​aantal veelvoorkomende verpakkingsuitdagingen in het Android-ecosysteem op te lossen. Android draait op duizenden apparaten met een enorm scala aan schermformaten, prestatiebaselines en CPU-architecturen. Het APK-formaat schaalt niet om aan deze diversiteit te voldoen, aangezien elk pakket alle bronnen van de app bevat.

Als je een app op je telefoon installeert, heb je die niet echt nodig om de high-res tabletvarianten van de graphics te downloaden. Maar met APK krijg je normaal gesproken elke variatie, wat leidt tot grotere downloads en meer opslagruimte. Als een ontwikkelaar meer gestroomlijnde builds wil aanbieden, moet hij meerdere verschillende APK's handmatig compileren en ondertekenen.

Advertentie

App Bundles hebben een andere benadering. Door hun ontwerp “bundelen” verschillende versies van een app in één logisch pakket. De Play Store stuurt vervolgens alleen de relevante bits naar elk apparaat dat een installatie aanvraagt. Het zal voor elke gebruiker de juiste bundel on-demand produceren, dus een Amerikaanse gebruiker met een 10-inch Intel-apparaat krijgt een andere download dan een Duitser met een 5-inch ARM-telefoon. Cruciaal is dat apparaten nog steeds APK's ontvangen – gebruikers zullen nooit rechtstreeks communiceren met een App Bundle. Het verschil is dat de APK's dynamisch worden gegenereerd, in de cloud.

App-bundels profiteren ook van eenvoudiger laden van add-onmodules en verbeterde ondersteuning voor grote activa zoals gamecontent. Volgens Google resulteert dit alles doorgaans in een vermindering van 15% in de downloadgrootte, vergeleken met dezelfde app die wordt gedistribueerd als een APK.

What’ s Wijzigen voor APK's?

Google zal vanaf augustus 2021 de ondersteuning voor APK's geleidelijk afbouwen. Nieuwe apps die bij de Play Store worden ingediend, moeten als app-bundel worden uitgegeven. Bestaande op APK gebaseerde apps worden nog steeds ondersteund en ontwikkelaars kunnen updates blijven uitgeven. Deze apps worden beschreven als “momenteel vrijgesteld,” suggereert dat updates in de toekomst mogelijk als AAB's moeten worden uitgebracht.

Volgens Google wordt de wijziging doorgevoerd zodat meer gebruikers kunnen profiteren van de App Bundle-voordelen. Vanuit het perspectief van een typische eindgebruiker is het moeilijk om de belofte van app-bundels te betwisten: kleinere downloads en verminderde opslagruimte zullen door velen worden verwelkomd, vooral die op low-end apparaten en trage internetverbindingen.

Gebruikers van oudere Android-versies zullen de voordelen niet zien omdat hun apparaat niet in staat zal zijn om “split” bundelt in een functionerende app. Verouderde OS-versies kunnen nog steeds App Bundle-apps installeren vanuit de Play Store, hoewel – het bundelsysteem zal zich realiseren dat het een ouder apparaat gebruikt en in plaats daarvan een gewone alles-in-één APK aanbieden.

Hoe zit het met de nadelen?

Hoewel de belangrijkste voordelen onbetwistbaar zijn, hebben app-bundels één belangrijk nadeel voor zowel ontwikkelaars als ervaren gebruikers. Aangezien het App Bundle-systeem draait om het dynamisch genereren van ondertekende APK's in de cloud, moeten ontwikkelaars hun app-ondertekeningssleutels aan Google overhandigen. In plaats van dat ontwikkelaars app-updates ondertekenen in hun eigen build-infrastructuur, zal Google een App Bundle nemen en deze zelf converteren naar ondertekende APK's.

Advertentie

Met het ondertekeningsproces kunnen Android-apparaten verifiëren dat updates afkomstig zijn van dezelfde uitgever als de momenteel geïnstalleerde app. Het is een cruciaal onderdeel van het ecosysteem dat voorkomt dat kwaadwillenden kwaadaardige apps produceren die in stilte echte downloads overschrijven. Google belooft dat ontwikkelaars hun eigen sleutels kunnen leveren, maar ze moeten nog steeds in de Play Store worden bewaard.

Door Google te vertrouwen om ondertekeningssleutels op te slaan, krijgt het bedrijf nog meer controle over de distributie van Android-apps. Iedereen die met succes de Play Store heeft gehackt, kan app-updates gaan publiceren naar ontwikkelaarsaccounts, aangezien alle ondertekeningssleutels worden gecentraliseerd in de infrastructuur van Google.

Bovendien zou Google nu misschien zelf app-updates kunnen publiceren als een overheid het zou verplichten. Het heeft al de mogelijkheid om stilletjes apps op Android-apparaten te installeren. Nu het de sleutels heeft tot ontwikkelaarskoninkrijken, zou het kunnen voldoen aan verzoeken om heimelijk niet-goedgekeurde updates van bestaande apps te installeren.

Kan een overheidsinstantie Google ertoe brengen een aangepaste versleutelde berichten-app op het apparaat van een doelgebruiker te installeren? Zo'n verzoek zou het agentschap berichten kunnen laten onderscheppen, zonder dat het doelwit er wijzer van wordt. App-bundels en gehoste ondertekening maken het scenario theoretisch mogelijk.

Het risico wordt zogenaamd beperkt door een “codetransparantie” systeem. Dit is bedoeld om ontwikkelaars en eindgebruikers een manier te geven om te controleren of gedownloade APK's overeenkomen met de bundel die is ingediend bij de Play Store, waardoor de mogelijkheid van inbraak wordt geëlimineerd.

Android controleert de codetransparantie niet echt handtekeningen, dus het is aan de gemeenschap om er tooling omheen te bouwen. Bovendien is codetransparantie volledig optioneel en alleen ingeschakeld als de APK een transparantiebestand bevat. Omdat Google al over de sleutels beschikt die nodig zijn om nieuwe APK's te genereren, kan het het codetransparantiebestand verwijderen wanneer het maar wil.

App Bundles en App Stores van derden

App-bundels vormen ook een bedreiging voor het open karakter van het Android-ecosysteem. In de afgelopen jaren heeft Google een sterkere rol als rentmeester verdedigd. App-bundels zijn een nieuwe aanslag op app-winkels van derden die directe APK-downloads aanbieden.

Advertentie

Omdat ontwikkelaars nu app-bundels moeten samenstellen, worden APK-builds buitenspel gezet. Het kan slechts een kwestie van tijd zijn voordat Google de directe APK-installatie helemaal uitschakelt of de APK-buildmogelijkheden verwijdert uit officiële Android Studio-releases.

Voorlopig kunnen ontwikkelaars ondertekende zelfstandige APK's downloaden van de Play Store, nadat ze app-bundels hebben ingediend. Deze APK's zijn klaar om te uploaden naar app-stores van derden, dus er is geen direct risico voor dit implementatiemodel. Het is echter nog steeds een ongemak voor de ontwikkelaar – u moet uw ondertekende APK's handmatig downloaden of ze afzonderlijk bouwen op uw lokale computer.

Google kondigde de verplichte overstap naar App Bundles aan enkele dagen nadat Microsoft Windows 11 had onthuld met ondersteuning voor Android-apps uit de Amazon App Store. Hoewel de verschuiving naar App Bundles al een paar jaar in de maak is, kan de beslissing van Google om nu over te stappen bedoeld zijn om de impact van het Microsoft/Amazon-partnerschap, dat alleen reguliere APK's ondersteunt, te beperken.

Conclusie

Android App Bundles zijn een nieuwe app-compilatie-indeling die veel efficiënter is dan een gewone APK. Hoewel apparaten uiteindelijk nog steeds een APK ontvangen, worden ze allemaal specifiek afgestemd op de versie van het besturingssysteem, de vormfactor van het apparaat en de actieve landinstelling.

Hoewel App Bundles door de meeste Android-gebruikers zouden moeten worden verwelkomd, zijn ze geen perfecte oplossing voor ontwikkelaars en het bredere Android-ecosysteem. Het App Bundle-model geeft Google meer controle over de app-distributie, waardoor ondertekeningssleutels openbaar moeten worden gemaakt, waardoor gedwongen app-updates mogelijk worden en storefronts van derden worden bedreigd.