Android App Bundle (AAB): Kompletní průvodce pro vývojáře a uživatele

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

V srpnu 2021 učinil Google rozhodnutí, které zásadně změnilo způsob distribuce aplikací pro Android: všechny nové aplikace odeslané do obchodu Google Play musí používat formát Android App Bundle (AAB) namísto tradičního APK. Tento posun ovlivnil vývojáře, uživatele a celý ekosystém distribuce aplikací třetích stran. Ale co přesně je App Bundle, jak funguje a proč by vás to mělo zajímat?

Tato příručka pokrývá vše od technických vnitřností formátu AAB až po praktické důsledky pro uživatele, kteří chtějí sdílet aplikace s přáteli nebo je instalovat na zařízení bez přístupu do Obchodu Play.

Co je to Android App Bundle?

Android App Bundle je formát publikování, který obsahuje veškerý zkompilovaný kód a zdroje aplikace, ale odkládá vygenerování konečného instalovatelného souboru APK na Google Play. Představte si to jako hlavní šablonu, ze které servery Google za běhu vytvářejí optimalizované balíčky pro konkrétní zařízení.

Na rozdíl od souboru APK, což je balíček připravený k instalaci, nelze soubor AAB nainstalovat přímo do zařízení. Jedná se o artefakt sestavení, který se nahraje do Obchodu Play, kde jej infrastruktura Google zpracuje a vygeneruje přizpůsobené soubory APK pro každou konfiguraci zařízení.

Přípona souboru je .aab a interně používá formát vyrovnávací paměti protokolu kombinovaný se strukturou podobnou ZIP. Obsahuje bajtový kód DEX aplikace, zdroje, aktiva, nativní knihovny a speciální soubor metadat balíčku, který službě Google Play říká, jak obsah rozdělit.

Proč balíčky Google Mandated App Bundle

Primární motivací balíků App Bundle je snížení velikosti stahování aplikací. Typická aplikace pro Android musí podporovat různé hustoty obrazovky (mdpi, hdpi, xhdpi, xxhdpi, xxxhdpi), více architektur CPU (armeabi-v7a, arm64-v8a, x86, x86_64) a více jazyků. V tradičním modelu APK jsou všechny tyto prostředky sdruženy do jednoho souboru, i když dané zařízení potřebuje pouze zlomek z nich.

Představte si hru, která obsahuje nativní knihovny pro čtyři architektury CPU a textury pro pět hustot obrazovky. Univerzální soubor APK může mít 200 MB, ale verze pro konkrétní zařízení obsahující pouze příslušnou architekturu a hustotu může mít 80 MB. To je 60% snížení velikosti stahování.

Google uvádí, že aplikace využívající balíčky App Bundle jsou v průměru o 15 % menší než jejich univerzální ekvivalenty APK. U velkých aplikací a her mohou být úspory mnohem dramatičtější. Menší počet stahování znamená rychlejší instalace, menší spotřebu šířky pásma a méně opuštěných instalací kvůli obavám o velikost.

Jak balíčky aplikací interně fungují

Struktura svazku

Soubor AAB je organizován do modulů, přičemž každý modul obsahuje svůj vlastní kód, zdroje a prostředky. Nejběžnější struktura zahrnuje:

  • Základní modul: Obsahuje základní kód aplikace a prostředky, které potřebuje každé zařízení. Toto je vždy nainstalováno.
  • Rozdělení konfigurace: Samostatné sekce pro jazykové prostředky, zdroje hustoty obrazovky a nativní knihovny ABI (architektura CPU).
  • Moduly dynamických funkcí: Volitelné moduly, které lze stáhnout na vyžádání po počáteční instalaci.
  • Balíčky aktiv: Rozsáhlá aktiva, jako jsou herní úrovně nebo média, která lze dodat v době instalace, na vyžádání nebo na pozadí.

Rozdělit generování APK

Když si uživatel stáhne aplikaci z Obchodu Play, servery Google prozkoumají konfiguraci zařízení a vygenerují sadu rozdělených souborů APK přizpůsobených danému konkrétnímu zařízení. Typická instalace může zahrnovat:

  • base.apk, Základní kód aplikace a základní zdroje
  • split_config.arm64_v8a.apk, Nativní knihovny pro CPU zařízení
  • split_config.xxhdpi.apk, Zdroje pro hustotu obrazovky zařízení
  • split_config.en.apk, Jazykové prostředky pro národní prostředí uživatele

Tyto rozdělené soubory APK se instalují společně jako jedna logická aplikace. Správce balíčků Android s nimi zachází jako s jednou aplikací, ale jsou to fyzicky samostatné soubory v zařízení. Toto je mechanismus, který umožňuje úsporu velikosti.

Dynamické doručení

Jednou z nejvýkonnějších funkcí balíčků aplikací je dynamické doručování. Vývojáři mohou označit určité funkce jako ke stažení na vyžádání. Například aplikace pro úpravu fotografií může obsahovat pokročilé filtry jako modul dynamických funkcí. Uživatelé, kteří tyto filtry nikdy nepoužívají, je nikdy nestahují, čímž šetří úložný prostor.

Moduly dynamických funkcí se stahují a instalují prostřednictvím knihovny Play Core za běhu. Aplikace může zkontrolovat, zda je modul nainstalován, a v případě potřeby požádat o jeho stažení, takže uživatel zažije novou funkci jako malé stažení v aplikaci, nikoli úplnou přeinstalaci.

AAB vs APK: Klíčové rozdíly

Pochopení rozdílů mezi těmito formáty pomůže objasnit, kdy je každý vhodný:

  • Soubory Instalovatelnost: APK lze přímo nainstalovat na jakékoli zařízení Android. Soubory AAB nelze nainstalovat přímo a musí být nejprve zpracovány.
  • Velikost: Univerzální soubor APK obsahuje prostředky pro všechny konfigurace. AAB umožňuje doručování pro konkrétní zařízení, což má za následek menší stahování.
  • Podepisování: S APK podepisuje vývojář finální instalovatelný balíček. V případě AAB podepíše vývojář balíček a Google znovu podepíše vygenerované soubory APK pomocí programu Play App Signing.
  • Soubory APK Distribuce: lze distribuovat prostřednictvím jakéhokoli kanálu. Soubory AAB jsou primárně určeny pro Obchod Play, i když nástroje jako bundletool z nich mohou generovat soubory APK lokálně.
  • Sdílitelnost: Soubor APK můžete snadno sdílet s jinou osobou. Sdílení aplikace nainstalované z AAB vyžaduje shromažďování všech rozdělených souborů APK, což je složitější.

Kontroverze o podpisu

Jedním z nejdiskutovanějších aspektů mandátu AAB je Play App Signing. Když vývojář nahraje soubor AAB, Google drží podpisový klíč používaný k podepisování konečných souborů APK doručených uživatelům. To znamená, že Google má technicky možnost upravit obsah souboru APK před jeho podpisem a doručením.

Google tvrdí, že je to nutné, protože potřebují podepsat rozdělené soubory APK, které generují. Vývojáři si uchovávají klíč pro nahrávání, aby mohli svá nahraná videa ověřit, ale skutečný podpisový klíč aplikace spravuje infrastruktura Google.

Pro většinu vývojářů je to rozumný kompromis. Google poskytuje služby zálohování a obnovy klíčů a riziko ztráty klíčů (které by trvale bránilo aktualizacím aplikací) je eliminováno. Vývojáři zaměření na soukromí a zastánci open-source však vyjádřili obavy z této centralizace důvěry.

Co to znamená pro uživatele, kteří sdílejí aplikace

Přechod na App Bundles má významné důsledky pro uživatele, kteří chtějí sdílet aplikace mimo Obchod Play:

Extrahování nainstalovaných aplikací

Když extrahujete aplikaci nainstalovanou z AAB, nezískáte jediný soubor APK. Místo toho získáte kolekci rozdělených souborů APK. Tato rozdělení jsou specifická pro zařízení, což znamená, že aplikace extrahovaná z telefonu s procesorem ARM64 a obrazovkou xxhdpi nebude fungovat na zařízení s jinou konfigurací.

Formáty XAPK a APKS

K vyřešení problému sdílení rozdělených souborů APK byly vytvořeny formáty kontejnerů jako XAPK a APKS. Tyto formáty spojují všechny rozdělené soubory APK do jednoho souboru ke stažení. Když narazíte na soubor XAPK, pravděpodobně obsahuje aplikaci, která byla původně distribuována jako App Bundle.

Náš Převodník XAPK na APK vám může pomoci extrahovat základní soubor APK z těchto formátů kontejnerů. Mějte však na paměti, že samotný základní soubor APK nemusí obsahovat všechny zdroje potřebné pro správné fungování aplikace na každém zařízení, protože v rozdělených souborech APK mohou být zdroje pro hustotu a specifické pro ABI.

Pomocí nástroje bundletool

Google poskytuje open-source nástroj s názvem bundletool, který dokáže lokálně generovat soubory APK ze souboru AAB. Vývojáři to mohou využít k vytvoření univerzálních souborů APK pro testování nebo alternativní distribuci. Příkaz vypadá takto:

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

Tím se vygeneruje univerzální soubor APK, který obsahuje všechny prostředky pro všechny konfigurace. Bude větší než sestavení pro konkrétní zařízení, ale funguje na jakémkoli zařízení. Toto je přístup používaný naším Převodník AAB na APK.

Dopad na alternativní obchody s aplikacemi

Mandát AAB se týká především obchodu Google Play. Alternativní obchody s aplikacemi a přímé distribuční kanály mohou stále přijímat soubory APK. Vývojáři, kteří chtějí distribuovat mimo službu Play, mohou pokračovat ve vytváření univerzálních souborů APK vedle svých nahraných souborů AAB.

Někteří vývojáři však staví pouze AAB a při distribuci spoléhají výhradně na Play. To znamená, že aplikace od těchto vývojářů je obtížnější získat mimo ekosystém Obchodu Play. Repozitáře aplikací třetích stran se přizpůsobily buď hostováním rozdělených kolekcí APK (jako soubory XAPK nebo APKS), nebo použitím nástroje bundletool ke generování univerzálních souborů APK.

Moduly dynamických funkcí v praxi

Moduly dynamických funkcí představují jednu z nejzajímavějších možností formátu App Bundle. Zde je několik případů použití v reálném světě:

  • Vlastnosti fotoaparátu: Aplikace může obsahovat filtry AR jako dynamický modul, který se stáhne pouze tehdy, když uživatel poprvé přistoupí k funkci fotoaparátu.
  • Jazykové balíčky: Překladová data pro méně běžné jazyky mohou být dodána na vyžádání, spíše než svázána s každou instalací.
  • Hry Herní úrovně: mohou dodávat další obsah, jak hráči postupují, přičemž počáteční stahování je malé.
  • Profesionální nástroje: Pokročilé funkce v produktivních aplikacích mohou být poskytovány pouze uživatelům, kteří je potřebují.

Pro uživatele to znamená, že instalovaná velikost aplikace se může časem zvětšit, jak se stahují dynamické moduly. Znamená to také, že sdílení takové aplikace vyžaduje zahrnutí všech stažených modulů, což dále komplikuje proces extrakce.

Doporučené postupy pro vývojáře

Pokud vyvíjíte aplikace pro Android, zde jsou doporučení pro efektivní práci s App Bundle:

  1. Vždy lokálně testujte pomocí bundletool před nahráním do Play. Vygenerujte soubory APK pro konkrétní zařízení a ověřte, zda fungují správně.
  2. Použijte kanál interního testování Play Console, abyste ověřili, že se rozdělené soubory APK nainstalují a fungují správně na skutečných zařízeních.
  3. Zvažte poskytnutí univerzálního souboru APK pro alternativní distribuční kanály, pokud vaše uživatelská základna přesahuje Obchod Play.
  4. Mějte na paměti hranice modulů dynamických funkcí. Funkce, které se často používají, by měly být v základním modulu, nikoli v dynamických modulech.
  5. Testujte na zařízeních s různými konfiguracemi, abyste zajistili, že rozdělení konfigurace bude generováno správně a nebudou chybět žádné prostředky.
  6. Udržujte svůj klíč pro nahrávání v bezpečí. Zatímco Google spravuje podpisový klíč aplikace, váš klíč pro nahrávání ověřuje vaši identitu vývojáře.

Budoucnost distribuce aplikací

Formát App Bundle se neustále vyvíjí. Google představil funkce jako Play Asset Delivery pro velké herní prostředky, SDK Runtime pro reklamní sady SDK a vylepšenou podporu pro konfigurace Wear OS a Android TV. Trend směřuje k podrobnějšímu doručování komponent aplikací na vyžádání.

Pro uživatele to znamená, že koncept jediného samostatného souboru aplikace je u aplikací Obchodu Play méně obvyklý. Pochopení formátů jako XAPK, APKS a dostupných nástrojů pro práci s nimi je pro každého, kdo spravuje aplikace mimo standardní tok Obchodu Play, stále důležitější.

Kdy si ponechat AAB vs. kdy vytvořit univerzální APK

Android App Bundle představuje zásadní posun ve způsobu balení a doručování aplikací. I když přináší skutečné výhody, pokud jde o velikost stahování a efektivitu doručování, přináší také složitost pro uživatele, kteří sdílejí aplikace nebo je instalují z alternativních zdrojů. Pochopení toho, jak AAB fungují, jak generují rozdělené soubory APK a jaké nástroje jsou k dispozici pro převod mezi formáty, vám poskytne to, co potřebujete, abyste si vybrali správný formát a s jistotou mezi nimi převáděli.

Vývojáři sahají po AAB, aby optimalizovali způsob, jakým je aplikace dodávána; většina běžných uživatelů se s tím setká pouze tehdy, když se pokusí něco nainstalovat na zařízení bez přístupu do Obchodu Play. Ať tak či onak, věc, kterou stojí za to si zapamatovat, je jednoduchá: AAB je formát publikování, nikoli instalační formát, a existují nástroje, které překlenují mezeru mezi těmito dvěma.

Navrhl a zdokumentoval Mst Shaefale Vedoucí vývojář a architekt balíčku Android • Ověřeno na Androidu 12–15

Mst Shaefale spravuje nástroje pro slučování XAPK/APKS na straně klienta, analyzátor binárních manifestů a nástroje pro podepisování APK v1+v2 na xapktoapk.com. Zaznamenali jste zastaralý příkaz nebo změnu operačního systému? Pošlete redakční poznámku.