AAB (Android App Bundle) — este un format de publicare a aplicațiilor Android care a înlocuit APK în Google Play din 2021. Spre deosebire de APK, AAB nu este un fișier de instalare — este un container din care Google Play generează dinamic APK-uri optimizate pentru fiecare dispozitiv. Conform datelor Android Developers, 2026, formatul reduce dimensiunea aplicației descărcate în medie cu 15% prin excluderea resurselor neutilizate.
Principalele puncte
AAB (Android App Bundle) — este un format de publicare dezvoltat de Google ca înlocuitor pentru APK pentru distribuția prin Google Play. În interiorul AAB se află o arhivă ZIP cu extensia .aab, conținând cod compilat, resurse și metadate. Diferența cheie: AAB nu se instalează direct pe dispozitiv.
Dezvoltatorul încarcă AAB în Google Play Console. Când utilizatorul încearcă să instaleze aplicația, Google Play analizează configurația dispozitivului: densitatea ecranului (DPI), arhitectura CPU, limba și versiunea Android. Pe baza acestei analize se generează un APK minim, conținând doar componentele necesare.
Google a prezentat AAB în 2018 la conferința I/O. Din august 2021, formatul a devenit obligatoriu pentru toate aplicațiile noi din Google Play. Aplicațiile existente pot continua să utilizeze APK, dar cele noi trebuie publicate doar în format AAB.
Diferența dintre AAB și APK este fundamentală: APK este un fișier de instalare complet, gata de instalare. AAB este un container cu componente sursă care necesită procesare.
| Parametru | APK | AAB |
|---|---|---|
| Tip | Fișier de instalare | Container de publicare |
| Instalare | Direct pe dispozitiv | Prin Google Play |
| Dimensiune | Arhivă completă | Componente sursă |
| Module | Toate într-un fișier | Module separate |
| Semnătură | Dezvoltator | Google Play |
| Distribuție | Orice canal | Google Play |
APK este potrivit pentru distribuția în afara Google Play — prin site-uri web, e-mail sau sisteme MDM corporative. AAB este legat de infrastructura Google Play și nu se instalează direct. Pentru testarea AAB se utilizează instrumentul bundletool, care emulează generarea APK pe mașina locală.
Structura internă a AAB este similară cu APK, dar conține directoare și fișiere suplimentare pentru descrierea modulelor și a dependențelor lor.
| Fișier/director | Destinație |
|---|---|
| base/ | Modulul de bază: cod, resurse, manifest |
| BundleConfig.pb | Configurația pachetului în format protobuf |
| Bundle-metadata/ | Metadate despre versiunile modulelor |
| feature/ | Module dinamice (on-demand) |
| assets/ | Active ale aplicației |
| manifest/ | Manifestele fiecărui modul |
Modulul base — este o componentă obligatorie a AAB. Acesta conține codul principal, resursele și manifestul aplicației. Fără modulul base, aplicația nu poate fi construită. Toate celelalte module sunt opționale și se conectează prin Dynamic Delivery.
Configurația AAB utilizează Protocol Buffers (protobuf) în loc de XML. Fișierele .pb sunt mai compacte și sunt parsate mai rapid de infrastructura server Google. Instrumentul bundletool convertește protobuf într-un format lizibil pentru depanare.
Dynamic Delivery — este tehnologia cheie pe care este construit AAB. Aceasta permite livrarea către utilizator doar a acelor părți ale aplicației care corespund dispozitivului și limbii sale, precum și încărcarea modulelor suplimentare la cerere.
Modulele Install-time se încarcă împreună cu APK-ul de bază la instalare. Modulele Conditional se livrează doar la îndeplinirea condițiilor — de exemplu, un modul cu materiale pentru ecrane 4K. Modulele On-demand se încarcă la cererea utilizatorului în cadrul aplicației.
Pentru resurse mari (până la 2 GB) se utilizează Play Asset Delivery în locul fișierelor OBB. PAD suportă aceleași trei moduri de livrare: install-time, fast-follow (imediat după instalare) și on-demand.
// Încărcarea modulului on-demand prin SplitInstallManager
val manager = SplitInstallManagerFactory
.create(context)
val request = SplitInstallRequest
.newBuilder()
.addModule("level_pack_3")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("AAB", "Modul instalat")
}
Fiecare modul dinamic este descris printr-un fișier build.gradle separat cu specificarea tipului de livrare. Modulul poate conține propriile resurse, cod și manifest, independente de aplicația de bază.
Construirea AAB se realizează prin Android Gradle Plugin cu sarcina bundleRelease (sau bundleDebug). Rezultatul — un fișier .aab în directorul build/outputs/bundle/.
Pentru construirea AAB nu sunt necesare setări speciale — Android Gradle Plugin suportă pachetele implicit. Este suficient să indicați sarcina bundle în loc de assemble.
// build.gradle.kts — construirea AAB cu semnătură
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// Sarcina: ./gradlew bundleRelease
Google oferă instrumentul bundletool pentru generarea APK-urilor din AAB pe mașina locală. Comanda `bundletool build-apks --bundle=app.aab --output=app.apks` creează un set de APK-uri pentru testare pe diferite configurații de dispozitive.
bundletool poate, de asemenea, să despacheteze AAB, să afișeze configurația acestuia și să verifice integritatea semnăturii înainte de încărcarea în Google Play Console. Pentru depanare se utilizează comanda `bundletool dump manifest --bundle=app.aab`, care afișează manifestul modulului de bază.
Implicit, AAB împarte resursele după trei dimensiuni: limbă (language), densitatea ecranului (density) și arhitectura CPU (abi). Dezvoltatorul poate dezactiva orice divizare în build.gradle — de exemplu, dacă aplicația suportă doar limba engleză. Dezactivarea divizării înseamnă că resursele pentru toate variantele vor ajunge în APK-ul de bază.
Resource optimisation — AAB convertește automat PNG în WebP fără pierdere de calitate, comprimă resursele neutilizate și elimină șirurile duplicate. Aceste optimizări se aplică de partea Google Play la generarea APK-ului final. Ca rezultat, utilizatorul primește un APK cu 15–25% mai mic decât arhiva completă.
Procesul de publicare a AAB în Google Play Console diferă de APK doar prin formatul fișierului încărcat. Consola acceptă .aab, verifică structura, semnătura și configurația modulelor, după care generează APK pentru fiecare tip de dispozitiv.
La încărcarea AAB, Google Play preia gestionarea cheilor de semnătură. Dezvoltatorul încarcă pachetul semnat cu cheia upload, iar Google resemnează APK-urile generate cu propria cheie. Aceasta simplifică rotația cheilor și recuperarea accesului în cazul pierderii keystore-ului.
Google Play Console oferă un test încorporat AAB: se poate descărca APK-ul generat pentru un anumit dispozitiv sau se poate rula testarea internă prin track-urile Internal Testing, Closed Alpha și Open Beta.
Trecerea la AAB poate cauza probleme, în special în proiecte cu un număr mare de module dinamice sau configurație complexă a resurselor.
Dacă un modul dinamic face referire la resursele modulului de bază cu un nume incorect, Google Play respinge AAB în etapa de verificare. Soluția — utilizarea verificării lint înainte de construire și testarea tuturor modulelor prin bundletool local.
Divizarea pe limbi poate încetini pornirea aplicației dacă resursele pentru localizarea curentă sunt încărcate dinamic. Recomandarea Google — să nu divizați limbile dacă sunt mai puțin de 10 sau să utilizați install-time pentru cele mai populare.
Unele SDK-uri (analitică, reclame, hărți) necesită acces la manifestul complet și resurse. Verificarea compatibilității cu AAB este un pas obligatoriu înainte de migrare. Majoritatea SDK-urilor mari (Firebase, Google Ads, Crashlytics) suportă complet AAB din 2022. Pentru verificarea compatibilității se utilizează bundletool cu flagul --validate, care emulează generarea APK pe server.
AAB utilizează versionCode din manifestul modulului de bază. Spre deosebire de APK, AAB suportă, de asemenea, versionCode separat pentru fiecare modul — aceasta permite actualizarea părților individuale ale aplicației fără reinstalare completă. Dynamic Delivery urmărește modulele instalate și livrează doar componentele modificate la actualizarea prin Google Play.
Google Play Console oferă analitică detaliată pentru fiecare AAB: câte APK-uri au fost generate, care divizări au fost solicitate, care este dimensiunea medie de descărcare pe dispozitive. Android Vitals arată metricile de performanță ale APK-urilor generate. Aceste date ajută la optimizarea configurației divizărilor și la reducerea dimensiunii de descărcare pentru diferite categorii de dispozitive.
Întrebări frecvente
Nu, AAB nu este destinat instalării directe. Google Play îl transformă în APK pentru dispozitivul specific. Pentru testarea pe telefon se utilizează bundletool, care generează APK din AAB local.
Google Play generează APK doar cu resursele corespunzătoare dispozitivului utilizatorului: o densitate a ecranului, o arhitectură CPU, o limbă. Resursele pentru alte configurații nu sunt incluse, economisind 15–30% din trafic la descărcare.
Nu, aplicațiile existente pot continua să publice APK. Cerința AAB se aplică doar aplicațiilor noi. Google recomandă, dar nu impune actualizarea proiectelor existente la AAB.
Schimbați sarcina de construire de la assembleRelease la bundleRelease, verificați compatibilitatea tuturor SDK-urilor, configurați App Signing în Google Play Console și încărcați primul AAB prin track-ul existent.
Da, AAB include biblioteci native în module. Google Play livrează doar fișierele .so pentru arhitectura CPU a dispozitivului. Acest lucru este deosebit de important pentru jocurile pe Unity și Unreal Engine cu compilații native mari.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și