V auguste 2021 spoločnosť Google prijala rozhodnutie, ktoré zásadne zmenilo spôsob distribúcie aplikácií pre Android: všetky nové aplikácie odoslané do obchodu Google Play musia namiesto tradičného súboru APK používať formát Android App Bundle (AAB). Tento posun ovplyvnil vývojárov, používateľov a celý ekosystém distribúcie aplikácií tretích strán. Ale čo to vlastne App Bundle je, ako funguje a prečo by vás to malo zaujímať?
Táto príručka pokrýva všetko od technických vnútorných prvkov formátu AAB až po praktické dôsledky pre používateľov, ktorí chcú zdieľať aplikácie s priateľmi alebo ich inštalovať na zariadenia bez prístupu do Obchodu Play.
Čo je to balík Android App Bundle?
Android App Bundle je formát publikovania, ktorý obsahuje všetok skompilovaný kód a zdroje aplikácie, no vygenerovanie konečného inštalovateľného súboru APK sa odkladá na Google Play. Predstavte si to ako hlavnú šablónu, z ktorej servery Google za behu vytvárajú optimalizované balíčky pre konkrétne zariadenia.
Na rozdiel od súboru APK, ktorý je balíkom pripraveným na inštaláciu, súbor AAB nemožno nainštalovať priamo do zariadenia. Ide o artefakt zostavy, ktorý sa nahrá do Obchodu Play, kde ho infraštruktúra Google spracuje a vygeneruje prispôsobené súbory APK pre každú konfiguráciu zariadenia.
Prípona súboru je .aab a interne používa formát vyrovnávacej pamäte protokolu kombinovaný so štruktúrou podobnou ZIP. Obsahuje bajtový kód DEX aplikácie, zdroje, aktíva, natívne knižnice a špeciálny súbor metadát balíka, ktorý službe Google Play povie, ako rozdeliť obsah.
Prečo balíky aplikácií nariadených spoločnosťou Google
Primárnou motiváciou balíkov aplikácií je zníženie veľkosti sťahovania aplikácií. Typická aplikácia pre Android musí podporovať viaceré hustoty obrazovky (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), viaceré architektúry CPU (armeabi-v7a, arm64-v8a, x86, x86_64) a viacero jazykov. V tradičnom modeli APK sú všetky tieto zdroje združené do jedného súboru, aj keď každé dané zariadenie potrebuje len zlomok z nich.
Predstavte si hru, ktorá obsahuje natívne knižnice pre štyri architektúry CPU a textúry pre päť hustôt obrazovky. Univerzálny súbor APK môže mať 200 MB, ale verzia pre konkrétne zariadenie obsahujúca iba príslušnú architektúru a hustotu môže mať 80 MB. To je 60% zníženie veľkosti sťahovania.
Google uvádza, že aplikácie využívajúce balíky aplikácií sú v priemere o 15 % menšie ako ich univerzálne ekvivalenty APK. V prípade veľkých aplikácií a hier môžu byť úspory oveľa dramatickejšie. Menšie sťahovanie znamená rýchlejšie inštalácie, menšiu spotrebu šírky pásma a menej opustených inštalácií z dôvodu obáv o veľkosť.
Ako interne fungujú balíky aplikácií
Štruktúra zväzku
Súbor AAB je usporiadaný do modulov, pričom každý modul obsahuje svoj vlastný kód, zdroje a aktíva. Najbežnejšia štruktúra zahŕňa:
- Základný modul: Obsahuje hlavný kód aplikácie a zdroje, ktoré potrebuje každé zariadenie. Toto je vždy nainštalované.
- Rozdelenie konfigurácie: Samostatné sekcie pre jazykové prostriedky, zdroje hustoty obrazovky a natívne knižnice ABI (architektúra CPU).
- Moduly dynamických funkcií: Voliteľné moduly, ktoré je možné stiahnuť na požiadanie po úvodnej inštalácii.
- Balíky aktív: Veľké aktíva, ako sú úrovne hier alebo médiá, ktoré možno dodať v čase inštalácie, na požiadanie alebo na pozadí.
Rozdelená generácia APK
Keď si používateľ stiahne aplikáciu z Obchodu Play, servery Google preskúmajú konfiguráciu zariadenia a vygenerujú súbor rozdelených súborov APK prispôsobených konkrétnemu zariadeniu. Typická inštalácia môže zahŕňať:
- base.apk, kód základnej aplikácie a základné zdroje
- split_config.arm64_v8a.apk, Natívne knižnice pre CPU zariadenia
- split_config.xxhdpi.apk, Zdroje pre hustotu obrazovky zariadenia
- split_config.en.apk, Jazykové prostriedky pre miestne nastavenie používateľa
Tieto rozdelené súbory APK sú nainštalované spoločne ako jedna logická aplikácia. Správca balíkov Android s nimi zaobchádza ako s jednou aplikáciou, ale fyzicky ide o samostatné súbory v zariadení. Toto je mechanizmus, ktorý umožňuje úsporu veľkosti.
Dynamické doručenie
Jednou z najvýkonnejších funkcií balíkov aplikácií je dynamické doručovanie. Vývojári môžu označiť určité funkcie ako stiahnuté na požiadanie. Napríklad aplikácia na úpravu fotografií môže obsahovať pokročilé filtre ako modul dynamických funkcií. Používatelia, ktorí tieto filtre nikdy nepoužívajú, si ich nikdy nestiahnu, čím šetria úložný priestor.
Moduly dynamických funkcií sa sťahujú a inštalujú prostredníctvom knižnice Play Core za behu. Aplikácia môže skontrolovať, či je modul nainštalovaný, a v prípade potreby požiadať o jeho stiahnutie, takže používateľ zažije novú funkcionalitu ako malé stiahnutie v aplikácii, a nie úplnú preinštalovanie.
AAB vs APK: Kľúčové rozdiely
Pochopenie rozdielov medzi týmito formátmi pomáha objasniť, kedy je každý vhodný:
- Súbory APK Možnosť inštalácie: je možné priamo nainštalovať na akékoľvek zariadenie so systémom Android. Súbory AAB nie je možné nainštalovať priamo a musia sa najskôr spracovať.
- Veľkosť: Univerzálny súbor APK obsahuje prostriedky pre všetky konfigurácie. AAB umožňuje doručovanie pre konkrétne zariadenie, čo má za následok menšie sťahovanie.
- podpisovanie: Pomocou súborov APK vývojár podpisuje konečný inštalovateľný balík. V prípade AAB vývojár podpíše balík a Google znova podpíše vygenerované súbory APK pomocou podpisovania aplikácií v službe Play.
- Súbory APK Distribúcia: je možné distribuovať prostredníctvom akéhokoľvek kanála. Súbory AAB sú primárne navrhnuté pre Obchod Play, hoci nástroje ako bundletool z nich môžu generovať súbory APK lokálne.
- zdieľateľnosť: Súbor APK môžete jednoducho zdieľať s inou osobou. Zdieľanie aplikácie nainštalovanej z AAB vyžaduje zhromaždenie všetkých rozdelených súborov APK, čo je zložitejšie.
Podpisová kontroverzia
Jedným z najdiskutovanejších aspektov mandátu AAB je Play App Signing. Keď vývojár nahrá súbor AAB, Google vlastní podpisový kľúč používaný na podpísanie finálnych súborov APK doručených používateľom. To znamená, že Google má technicky možnosť upraviť obsah súboru APK pred jeho podpísaním a doručením.
Google tvrdí, že je to potrebné, pretože potrebujú podpísať rozdelené súbory APK, ktoré vygenerujú. Vývojári si uchovávajú kľúč nahrávania na overenie svojich nahraných súborov, ale skutočný podpisový kľúč aplikácie spravuje infraštruktúra spoločnosti Google.
Pre väčšinu vývojárov je to rozumný kompromis. Google poskytuje služby zálohovania a obnovy kľúčov a riziko straty kľúča (ktoré by trvalo bránilo aktualizáciám aplikácií) je eliminované. Vývojári zameraní na súkromie a zástancovia otvorených zdrojov však vyjadrili obavy z tejto centralizácie dôvery.
Čo to znamená pre používateľov, ktorí zdieľajú aplikácie
Prechod na balíky aplikácií má významné dôsledky pre používateľov, ktorí chcú zdieľať aplikácie mimo Obchodu Play:
Extrahovanie nainštalovaných aplikácií
Keď extrahujete aplikáciu nainštalovanú z AAB, nezískate jediný súbor APK. Namiesto toho získate kolekciu rozdelených súborov APK. Tieto rozdelenia sú špecifické pre zariadenie, čo znamená, že aplikácia extrahovaná z telefónu s procesorom ARM64 a obrazovkou xxhdpi nebude fungovať na zariadení s inou konfiguráciou.
Formáty XAPK a APKS
Na riešenie problému zdieľania rozdelených súborov APK boli vytvorené formáty kontajnerov ako XAPK a APKS. Tieto formáty spájajú všetky rozdelené súbory APK do jedného súboru na stiahnutie. Keď narazíte na súbor XAPK, pravdepodobne obsahuje aplikáciu, ktorá bola pôvodne distribuovaná ako balík aplikácií.
Náš Prevodník XAPK na APK vám môže pomôcť extrahovať základný súbor APK z týchto formátov kontajnerov. Majte však na pamäti, že samotný základný súbor APK nemusí obsahovať všetky zdroje potrebné na správne fungovanie aplikácie na každom zariadení, pretože v rozdelených súboroch APK môžu byť zdroje špecifické pre hustotu a ABI.
Pomocou nástroja bundletool
Google poskytuje nástroj s otvoreným zdrojom s názvom bundletool, ktorý dokáže lokálne generovať súbory APK zo súboru AAB. Vývojári to môžu použiť na vytvorenie univerzálnych súborov APK na testovanie alebo alternatívnu distribúciu. Príkaz vyzerá takto:
bundletool build-apks --bundle=app.aab --output=app.apks --mode=universal
Tým sa vygeneruje univerzálny súbor APK, ktorý obsahuje všetky zdroje pre všetky konfigurácie. Bude väčšia ako zostava pre konkrétne zariadenie, ale funguje na akomkoľvek zariadení. Toto je prístup, ktorý používa náš Konvertor AAB na APK.
Vplyv na alternatívne obchody s aplikáciami
Mandát AAB ovplyvňuje predovšetkým Obchod Google Play. Alternatívne obchody s aplikáciami a priame distribučné kanály môžu stále prijímať súbory APK. Vývojári, ktorí chcú distribuovať mimo služby Play, môžu pokračovať vo vytváraní univerzálnych súborov APK popri svojich nahrávaniach AAB.
Niektorí vývojári však vytvárajú iba AAB a pri distribúcii sa spoliehajú výlučne na službu Play. To znamená, že aplikácie od týchto vývojárov je ťažšie získať mimo ekosystému Obchodu Play. Repozitáre aplikácií tretích strán sa prispôsobili buď hosťovaním rozdelených kolekcií APK (ako súbory XAPK alebo APKS), alebo použitím nástroja bundletool na generovanie univerzálnych súborov APK.
Moduly dynamických funkcií v praxi
Moduly dynamických funkcií predstavujú jednu z najzaujímavejších možností formátu App Bundle. Tu je niekoľko prípadov použitia v reálnom svete:
- Vlastnosti fotoaparátu: Aplikácia môže obsahovať filtre AR ako dynamický modul, ktorý sa stiahne iba vtedy, keď používateľ prvýkrát pristúpi k funkcii fotoaparátu.
- Jazykové balíčky: Prekladové údaje pre menej bežné jazyky môžu byť dodané na požiadanie, a nie pribalené pri každej inštalácii.
- Hry Úrovne hry: môžu poskytovať dodatočný obsah, keď hráči postupujú, pričom počiatočné sťahovanie je malé.
- Profesionálne nástroje: Pokročilé funkcie v aplikáciách na zvýšenie produktivity možno poskytnúť iba používateľom, ktorí ich potrebujú.
Pre používateľov to znamená, že veľkosť nainštalovanej aplikácie sa môže časom zväčšiť pri sťahovaní dynamických modulov. Znamená to tiež, že zdieľanie takejto aplikácie vyžaduje zahrnutie všetkých stiahnutých modulov, čo ešte viac komplikuje proces extrakcie.
Osvedčené postupy pre vývojárov
Ak vyvíjate aplikácie pre Android, tu sú odporúčania na efektívnu prácu s balíkmi aplikácií:
- Vždy testujte pomocou bundletool lokálne pred odovzdaním do služby Play. Vygenerujte súbory APK pre konkrétne zariadenie a overte, či fungujú správne.
- Použite interný testovací kanál služby Play Console na overenie, či sa rozdelené súbory APK nainštalujú a fungujú správne na skutočných zariadeniach.
- Zvážte poskytnutie univerzálneho súboru APK pre alternatívne distribučné kanály, ak vaša používateľská základňa presahuje Obchod Play.
- Dávajte pozor na hranice modulov dynamických funkcií. Funkcie, ktoré sa často používajú, by mali byť v základnom module, nie v dynamických moduloch.
- Testujte na zariadeniach s rôznymi konfiguráciami, aby sa zabezpečilo, že konfiguračné rozdelenia sa vygenerujú správne a nebudú chýbať žiadne zdroje.
- Udržujte svoj kľúč nahrávania v bezpečí. Kým Google spravuje podpisový kľúč aplikácie, váš kľúč nahrávania overuje vašu identitu ako vývojára.
Budúcnosť distribúcie aplikácií
Formát App Bundle sa neustále vyvíja. Spoločnosť Google zaviedla funkcie, ako sú Play Asset Delivery pre veľké herné prostriedky, SDK Runtime pre reklamné súpravy SDK a vylepšenú podporu pre konfigurácie Wear OS a Android TV. Trend smeruje k podrobnejšiemu doručovaniu komponentov aplikácií na požiadanie.
Pre používateľov to znamená, že koncept jedného samostatného súboru aplikácie je pre aplikácie Obchodu Play čoraz menej bežný. Pochopenie formátov ako XAPK, APKS a dostupných nástrojov na prácu s nimi sa stáva čoraz dôležitejším pre každého, kto spravuje aplikácie mimo štandardného toku Obchodu Play.
Kedy si ponechať súbor AAB a kedy vytvoriť univerzálny súbor APK
Android App Bundle predstavuje zásadný posun v spôsobe balenia a doručovania aplikácií. Aj keď prináša skutočné výhody, pokiaľ ide o veľkosť sťahovania a efektivitu doručovania, prináša aj zložitosť pre používateľov, ktorí zdieľajú aplikácie alebo si ich inštalujú z alternatívnych zdrojov. Pochopenie toho, ako AAB fungujú, ako generujú rozdelené súbory APK a aké nástroje sú k dispozícii na konverziu medzi formátmi, vám poskytne to, čo potrebujete na výber správneho formátu a na konverziu medzi nimi s istotou.
Vývojári siahajú po AAB, aby optimalizovali spôsob poskytovania aplikácie; väčšina bežných používateľov sa s tým stretne iba vtedy, keď sa pokúsia niečo nainštalovať na zariadenie bez prístupu do Obchodu Play. Či tak alebo onak, to, čo stojí za zapamätanie, je jednoduché: AAB je formát publikovania, nie inštalačný formát, a existujú nástroje, ktoré premosťujú priepasť medzi nimi.