AAB (Android App Bundle) — je formát publikace aplikací pro Android, který od roku 2021 nahradil APK v Google Play. Na rozdíl od APK není AAB instalační soubor — je to kontejner, ze kterého Google Play dynamicky generuje optimalizované APK pro každé zařízení. Podle údajů Android Developers, 2026 formát snižuje velikost stahované aplikace v průměru o 15% vyloučením nepoužívaných zdrojů.
Hlavní body
AAB (Android App Bundle) — je formát publikace vyvinutý společností Google jako náhrada APK pro distribuci prostřednictvím Google Play. Uvnitř AAB je ZIP archiv s příponou .aab obsahující zkompilovaný kód, zdroje a metadata. Klíčový rozdíl: AAB se neinstaluje přímo na zařízení.
Vývojář nahraje AAB do Google Play Console. Když se uživatel pokusí nainstalovat aplikaci, Google Play analyzuje konfiguraci zařízení: hustotu obrazovky (DPI), architekturu CPU, jazyk a verzi Androidu. Na základě této analýzy je vygenerováno minimální APK obsahující pouze nezbytné komponenty.
Google představil AAB v roce 2018 na konferenci I/O. Od srpna 2021 se formát stal povinným pro všechny nové aplikace v Google Play. Stávající aplikace mohou nadále používat APK, ale nové musí být publikovány pouze ve formátu AAB.
Rozdíl mezi AAB a APK je zásadní: APK je hotový instalační soubor připravený k instalaci. AAB je kontejner se zdrojovými komponentami, který vyžaduje zpracování.
| Parametr | APK | AAB |
|---|---|---|
| Typ | Instalační soubor | Publikační kontejner |
| Instalace | Přímo na zařízení | Přes Google Play |
| Velikost | Plný archiv | Zdrojové komponenty |
| Moduly | Vše v jednom souboru | Samostatné moduly |
| Podpis | Vývojář | Google Play |
| Distribuce | Libovolný kanál | Google Play |
APK je vhodný pro distribuci mimo Google Play — prostřednictvím webových stránek, e-mailu nebo podnikových MDM systémů. AAB je vázán na infrastrukturu Google Play a neinstaluje se přímo. Pro testování AAB se používá nástroj bundletool, který emuluje generování APK na lokálním počítači.
Vnitřní struktura AAB je podobná APK, ale obsahuje další adresáře a soubory pro popis modulů a jejich závislostí.
| Soubor/adresář | Účel |
|---|---|
| base/ | Základní modul: kód, zdroje, manifest |
| BundleConfig.pb | Konfigurace balíčku ve formátu protobuf |
| Bundle-metadata/ | Metadata o verzích modulů |
| feature/ | Dynamické moduly (on-demand) |
| assets/ | Aktiva aplikace |
| manifest/ | Manifesty každého modulu |
Modul base — je povinná součást AAB. Obsahuje hlavní kód, zdroje a manifest aplikace. Bez modulu base nelze aplikaci sestavit. Všechny ostatní moduly jsou volitelné a připojují se prostřednictvím Dynamic Delivery.
Konfigurace AAB používá Protocol Buffers (protobuf) místo XML. Soubory .pb jsou kompaktnější a rychleji se parsují serverovou infrastrukturou Google. Nástroj bundletool převádí protobuf do čitelného formátu pro ladění.
Dynamic Delivery — klíčová technologie, na které je AAB postaven. Umožňuje doručit uživateli pouze ty části aplikace, které odpovídají jeho zařízení a jazyku, a také načítat další moduly na vyžádání.
Install-time moduly se načítají spolu se základním APK při instalaci. Conditional moduly se doručují pouze při splnění podmínek — například modul s materiály pro 4K obrazovky. On-demand moduly se načítají na vyžádání uživatele v rámci aplikace.
Pro velké zdroje (až 2 GB) se používá Play Asset Delivery místo OBB souborů. PAD podporuje stejné tři režimy doručení: install-time, fast-follow (ihned po instalaci) a on-demand.
// Načtení on-demand modulu přes SplitInstallManager
val manager = SplitInstallManagerFactory
.create(context)
val request = SplitInstallRequest
.newBuilder()
.addModule("level_pack_3")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("AAB", "Modul nainstalován")
}
Každý dynamický modul je popsán samostatným build.gradle souborem s uvedením typu doručení. Modul může mít vlastní zdroje, kód a manifest, nezávislé na základní aplikaci.
Sestavení AAB se provádí pomocí Android Gradle Plugin s úkolem bundleRelease (nebo bundleDebug). Výsledkem je soubor .aab v adresáři build/outputs/bundle/.
Pro sestavení AAB nejsou potřeba žádná speciální nastavení — Android Gradle Plugin podporuje balíčky ve výchozím nastavení. Stačí zadat úkol bundle místo assemble.
// build.gradle.kts — sestavení AAB s podpisem
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// Úkol: ./gradlew bundleRelease
Google poskytuje nástroj bundletool pro generování APK z AAB na lokálním počítači. Příkaz `bundletool build-apks --bundle=app.aab --output=app.apks` vytvoří sadu APK pro testování na různých konfiguracích zařízení.
bundletool také umí rozbalit AAB, zobrazit jeho konfiguraci a zkontrolovat integritu podpisu před nahráním do Google Play Console. Pro ladění se používá příkaz `bundletool dump manifest --bundle=app.aab`, který zobrazuje manifest základního modulu.
Ve výchozím nastavení AAB rozděluje zdroje podle tří dimenzí: jazyk (language), hustota obrazovky (density) a architektura CPU (abi). Vývojář může v build.gradle zakázat libovolné rozdělení — například pokud aplikace podporuje pouze angličtinu. Zakázání rozdělení znamená, že zdroje pro všechny varianty půjdou do základního APK.
Resource optimisation — AAB automaticky převádí PNG na WebP bez ztráty kvality, komprimuje nepoužívané zdroje a odstraňuje duplicitní řetězce. Tyto optimalizace jsou aplikovány na straně Google Play při generování finálního APK. Výsledkem je, že uživatel obdrží APK o 15–25% menší než plný archiv.
Proces publikace AAB v Google Play Console se liší od APK pouze formátem nahrávaného souboru. Konzole přijímá .aab, kontroluje jeho strukturu, podpis a konfiguraci modulů, poté generuje APK pro každý typ zařízení.
Při nahrávání AAB přebírá Google Play správu podpisových klíčů. Vývojář nahraje balíček podepsaný klíčem upload a Google přepodepíše vygenerovaná APK svým klíčem. To zjednodušuje rotaci klíčů a obnovení přístupu v případě ztráty keystore.
Google Play Console poskytuje vestavěný test AAB: lze stáhnout vygenerované APK pro konkrétní zařízení nebo spustit interní testování přes tracky Internal Testing, Closed Alpha a Open Beta.
Přechod na AAB může způsobit problémy, zejména v projektech s velkým počtem dynamických modulů nebo složitou konfigurací zdrojů.
Pokud dynamický modul odkazuje na zdroje základního modulu s nesprávným názvem, Google Play odmítne AAB ve fázi ověřování. Řešení — použít lint kontrolu před sestavením a testovat všechny moduly lokálně přes bundletool.
Rozdělení podle jazyků může zpomalit spuštění aplikace, pokud se zdroje pro aktuální lokalizaci načítají dynamicky. Doporučení Google — nerozdělovat jazyky, pokud je jich méně než 10, nebo použít install-time pro nejpopulárnější.
Některá SDK (analytika, reklamy, mapy) vyžadují přístup k úplnému manifestu a zdrojům. Kontrola kompatibility s AAB je povinným krokem před migrací. Většina velkých SDK (Firebase, Google Ads, Crashlytics) plně podporuje AAB od roku 2022. Pro kontrolu kompatibility se používá bundletool s příznakem --validate, který emuluje serverové generování APK.
AAB používá versionCode z manifestu základního modulu. Na rozdíl od APK AAB také podporuje samostatné versionCode pro každý modul — to umožňuje aktualizovat jednotlivé části aplikace bez úplné přeinstalace. Dynamic Delivery sleduje nainstalované moduly a při aktualizaci prostřednictvím Google Play doručuje pouze změněné komponenty.
Google Play Console poskytuje podrobnou analytiku pro každý AAB: kolik APK bylo vygenerováno, která rozdělení byla vyžádána, jaká je průměrná velikost stahování podle zařízení. Android Vitals zobrazuje metriky výkonu vygenerovaných APK. Tato data pomáhají optimalizovat konfiguraci rozdělení a snižovat velikost stahování pro různé kategorie zařízení.
Často kladené otázky
Ne, AAB není určen k přímé instalaci. Google Play jej převede na APK pro konkrétní zařízení. Pro testování v telefonu se používá bundletool, který generuje APK z AAB lokálně.
Google Play generuje APK pouze se zdroji odpovídajícími zařízení uživatele: jedna hustota obrazovky, jedna architektura CPU, jeden jazyk. Zdroje pro jiné konfigurace nejsou zahrnuty, což šetří 15–30% provozu při stahování.
Ne, stávající aplikace mohou nadále publikovat APK. Požadavek na AAB platí pouze pro nové aplikace. Google doporučuje, ale nevyžaduje aktualizaci stávajících projektů na AAB.
Změňte úkol sestavení z assembleRelease na bundleRelease, zkontrolujte kompatibilitu všech SDK, nakonfigurujte App Signing v Google Play Console a nahrajte první AAB přes stávající track.
Ano, AAB zahrnuje nativní knihovny v modulech. Google Play doručuje pouze .so soubory pro architekturu CPU zařízení. To je důležité zejména pro hry na Unity a Unreal Engine s velkými nativními kompilacemi.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také