AAB (Android App Bundle) — är ett publiceringsformat för Android-applikationer som ersatte APK i Google Play från 2021. Till skillnad från APK är AAB inte en installationsfil — det är en behållare från vilken Google Play dynamiskt genererar optimerade APK:er för varje enhet. Enligt uppgifter från Android Developers, 2026 minskar formatet storleken på den nedladdade applikationen i genomsnitt med 15% genom att utesluta oanvända resurser.
Huvudpunkter
AAB (Android App Bundle) — är ett publiceringsformat utvecklat av Google som ersättning för APK för distribution via Google Play. Inuti AAB finns ett ZIP-arkiv med tillägget .aab som innehåller kompilerad kod, resurser och metadata. Den viktigaste skillnaden: AAB installeras inte direkt på enheten.
Utvecklaren laddar upp AAB till Google Play Console. När en användare försöker installera applikationen analyserar Google Play enhetens konfiguration: skärmdensitet (DPI), CPU-arkitektur, språk och Android-version. Baserat på denna analys genereras en minimal APK som endast innehåller nödvändiga komponenter.
Google introducerade AAB 2018 vid I/O-konferensen. Från augusti 2021 blev formatet obligatoriskt för alla nya applikationer i Google Play. Befintliga applikationer kan fortsätta använda APK, men nya måste publiceras endast i AAB-format.
Skillnaden mellan AAB och APK är fundamental: APK är en komplett installationsfil, redo för installation. AAB är en behållare med källkomponenter som kräver bearbetning.
| Parameter | APK | AAB |
|---|---|---|
| Typ | Installationsfil | Publiceringsbehållare |
| Installation | Direkt på enheten | Via Google Play |
| Storlek | Fullständigt arkiv | Källkomponenter |
| Moduler | Allt i en fil | Separata moduler |
| Signatur | Utvecklare | Google Play |
| Distribution | Valfri kanal | Google Play |
APK är lämplig för distribution utanför Google Play — via webbplatser, e-post eller företags-MDM-system. AAB är bunden till Google Plays infrastruktur och installeras inte direkt. För testning av AAB används verktyget bundletool, som emulerar APK-generering på den lokala maskinen.
Den interna strukturen av AAB liknar APK, men innehåller ytterligare kataloger och filer för att beskriva moduler och deras beroenden.
| Fil/katalog | Syfte |
|---|---|
| base/ | Basmodul: kod, resurser, manifest |
| BundleConfig.pb | Paketkonfiguration i protobuf-format |
| Bundle-metadata/ | Metadata om modulversioner |
| feature/ | Dynamiska moduler (on-demand) |
| assets/ | Applikationstillgångar |
| manifest/ | Manifest för varje modul |
Basmodulen base — är en obligatorisk komponent i AAB. Den innehåller huvudkoden, resurserna och manifestet för applikationen. Utan basmodulen kan applikationen inte byggas. Alla andra moduler är valfria och ansluts via Dynamic Delivery.
AAB-konfiguration använder Protocol Buffers (protobuf) istället för XML. .pb-filer är mer kompakta och parsas snabbare av Googles serverinfrastruktur. Verktyget bundletool konverterar protobuf till ett läsbart format för felsökning.
Dynamic Delivery — den viktigaste tekniken som AAB är byggd på. Den gör det möjligt att leverera till användaren endast de delar av applikationen som matchar dennes enhet och språk, samt att ladda ytterligare moduler på begäran.
Install-time moduler laddas tillsammans med bas-APK:n vid installation. Conditional moduler levereras endast när villkor uppfylls — till exempel en modul med material för 4K-skärmar. On-demand moduler laddas på användarens begäran inuti applikationen.
För stora resurser (upp till 2 GB) används Play Asset Delivery istället för OBB-filer. PAD stöder samma tre leveranslägen: install-time, fast-follow (direkt efter installation) och on-demand.
// Ladda on-demand-modul via SplitInstallManager
val manager = SplitInstallManagerFactory
.create(context)
val request = SplitInstallRequest
.newBuilder()
.addModule("level_pack_3")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("AAB", "Modul installerad")
}
Varje dynamisk modul beskrivs av en separat build.gradle-fil med angivelse av leveranstyp. Modulen kan ha egna resurser, kod och manifest, oberoende av basapplikationen.
Att bygga AAB görs via Android Gradle Plugin med uppgiften bundleRelease (eller bundleDebug). Resultatet — en .aab-fil i katalogen build/outputs/bundle/.
För att bygga AAB krävs inga speciella inställningar — Android Gradle Plugin stöder paket som standard. Det räcker med att ange uppgiften bundle istället för assemble.
// build.gradle.kts — bygga AAB med signatur
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// Uppgift: ./gradlew bundleRelease
Google tillhandahåller verktyget bundletool för att generera APK:er från AAB på den lokala maskinen. Kommandot `bundletool build-apks --bundle=app.aab --output=app.apks` skapar en uppsättning APK:er för testning på olika enhetskonfigurationer.
bundletool kan också packa upp AAB, visa dess konfiguration och kontrollera signaturintegriteten före uppladdning till Google Play Console. För felsökning används kommandot `bundletool dump manifest --bundle=app.aab`, som visar manifestet för basmodulen.
Som standard delar AAB upp resurser efter tre dimensioner: språk (language), skärmdensitet (density) och CPU-arkitektur (abi). Utvecklaren kan inaktivera valfri uppdelning i build.gradle — till exempel om applikationen endast stöder engelska. Att inaktivera en uppdelning innebär att resurser för alla varianter hamnar i bas-APK:n.
Resource optimisation — AAB konverterar automatiskt PNG till WebP utan kvalitetsförlust, komprimerar oanvända resurser och tar bort dubbletter av strängar. Dessa optimeringar tillämpas på Google Plays sida vid generering av den slutliga APK:n. Som ett resultat får användaren en APK som är 15–25% mindre än det fullständiga arkivet.
Processen att publicera AAB i Google Play Console skiljer sig från APK endast i formatet på den uppladdade filen. Konsolen accepterar .aab, kontrollerar dess struktur, signatur och modulkonfiguration, varefter den genererar APK:er för varje enhetstyp.
Vid uppladdning av AAB tar Google Play över hanteringen av signeringsnycklar. Utvecklaren laddar upp paketet signerat med upload-nyckeln, och Google signerar om de genererade APK:erna med sin egen nyckel. Detta förenklar nyckelrotation och återställning av åtkomst vid förlust av keystore.
Google Play Console erbjuder ett inbyggt test av AAB: man kan ladda ner den genererade APK:n för en specifik enhet eller köra intern testning via trackarna Internal Testing, Closed Alpha och Open Beta.
Övergången till AAB kan orsaka problem, särskilt i projekt med många dynamiska moduler eller komplex resurskonfiguration.
Om en dynamisk modul refererar till basmodulens resurser med ett felaktigt namn, avvisar Google Play AAB:n i verifieringssteget. Lösning — använd lint-kontroll före byggning och testa alla moduler lokalt via bundletool.
Uppdelning efter språk kan sakta ner applikationens start om resurser för den aktuella lokaliseringen laddas dynamiskt. Googles rekommendation — dela inte upp språk om det är färre än 10, eller använd install-time för de mest populära.
Vissa SDK:er (analys, annonser, kartor) kräver åtkomst till hela manifestet och resurser. Kontroll av kompatibilitet med AAB är ett obligatoriskt steg före migrering. De flesta stora SDK:er (Firebase, Google Ads, Crashlytics) stöder fullt AAB från 2022. För kompatibilitetskontroll används bundletool med flaggan --validate, som emulerar servergenerering av APK.
AAB använder versionCode från basmodulens manifest. Till skillnad från APK stöder AAB också separat versionCode för varje modul — detta gör det möjligt att uppdatera enskilda delar av applikationen utan fullständig ominstallation. Dynamic Delivery håller reda på installerade moduler och levererar endast ändrade komponenter vid uppdatering via Google Play.
Google Play Console tillhandahåller detaljerad analys för varje AAB: hur många APK:er som genererats, vilka uppdelningar som använts, vad den genomsnittliga nedladdningsstorleken per enhet är. Android Vitals visar prestandamått för genererade APK:er. Dessa data hjälper till att optimera uppdelningskonfigurationen och minska nedladdningsstorleken för olika enhetskategorier.
Vanliga frågor
Nej, AAB är inte avsett för direkt installation. Google Play omvandlar det till APK för den specifika enheten. För testning på telefonen används bundletool, som genererar APK från AAB lokalt.
Google Play genererar APK endast med resurser som matchar användarens enhet: en skärmdensitet, en CPU-arkitektur, ett språk. Resurser för andra konfigurationer inkluderas inte, vilket sparar 15–30% trafik vid nedladdning.
Nej, befintliga applikationer kan fortsätta att publicera APK. AAB-kravet gäller endast nya applikationer. Google rekommenderar men kräver inte att befintliga projekt uppdateras till AAB.
Ändra bygguppgiften från assembleRelease till bundleRelease, kontrollera kompatibiliteten för alla SDK:er, konfigurera App Signing i Google Play Console och ladda upp den första AAB:n via den befintliga tracken.
Ja, AAB innehåller inbyggda bibliotek i moduler. Google Play levererar endast .so-filer för enhetens CPU-arkitektur. Detta är särskilt viktigt för spel på Unity och Unreal Engine med stora inbyggda kompileringar.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också