AAB (Android App Bundle) — 2021-ci ildən Google Play-də APK-nı əvəz etmiş Android tətbiqlərinin dərc formatıdır. APK-dan fərqli olaraq, AAB quraşdırma faylı deyil — bu, Google Play-in hər bir cihaz üçün optimallaşdırılmış APK-lar dinamik şəkildə yaratdığı konteynerdir. Android Developers, 2026 məlumatlarına görə, format istifadə olunmayan resursları çıxarmaqla yüklənən tətbiqin ölçüsünü orta hesabla 15% azaldır.
Əsas məqamlar
AAB (Android App Bundle) — Google tərəfindən Google Play vasitəsilə yayım üçün APK-nın əvəzi kimi hazırlanmış dərc formatıdır. AAB-nin daxilində .aab genişlənməsi olan ZIP arxivi — yığılmış kod, resurslar və metadata var. Əsas fərq: AAB birbaşa cihazda quraşdırılmır.
Developer AAB-ni Google Play Console-a yükləyir. İstifadəçi tətbiqi quraşdırmağa çalışdıqda Google Play cihazın konfiqurasiyasını təhlil edir: ekran sıxlığı (DPI), CPU arxitekturası, dil və Android versiyası. Bu təhlil əsasında yalnız zəruri komponentləri ehtiva edən minimal APK yaradılır.
Google AAB-ni 2018-ci ildə I/O konfransında təqdim etdi. 2021-ci ilin avqustundan format Google Play-də bütün yeni tətbiqlər üçün məcburi oldu. Mövcud tətbiqlər APK-dan istifadə etməyə davam edə bilər, lakin yeniləri yalnız AAB formatında dərc edilməlidir.
Fərq AAB və APK arasında əsaslıdır: APK — quraşdırmaya hazır olan tam quraşdırma faylıdır. AAB — emal tələb edən mənbə komponentləri olan konteynerdir.
| Parametr | APK | AAB |
|---|---|---|
| Növ | Quraşdırma faylı | Nəşr konteyneri |
| Quraşdırma | Birbaşa cihazda | Google Play vasitəsilə |
| Ölçü | Tam arxiv | Mənbə komponentləri |
| Modullar | Hamısı bir faylda | Ayrı modullar |
| İmza | Developer | Google Play |
| Yayım | İstənilən kanal | Google Play |
APK Google Play-dən kənarda yayım üçün uyğundur — veb-saytlar, e-poçt və ya korporativ MDM sistemləri vasitəsilə. AAB Google Play infrastrukturuna bağlıdır və birbaşa quraşdırılmır. AAB-ni sınamaq üçün lokal maşında APK yaradılmasını emulyasiya edən bundletool alətindən istifadə olunur.
Daxili quruluşu APK-ya bənzəyir, lakin modulları və onların asılılıqlarını təsvir etmək üçün əlavə qovluq və fayllar ehtiva edir.
| Fayl/qovluq | Təyinat |
|---|---|
| base/ | Baza modulu: kod, resurslar, manifest |
| BundleConfig.pb | Protobuf formatında paket konfiqurasiyası |
| Bundle-metadata/ | Modul versiyaları haqqında metadata |
| feature/ | Dinamik modullar (on-demand) |
| assets/ | Tətbiq aktivləri |
| manifest/ | Hər modulun manifesti |
Base modulu — AAB-nin məcburi komponentidir. O, tətbiqin əsas kodunu, resurslarını və manifestini ehtiva edir. Base modulu olmadan tətbiq yığıla bilməz. Bütün digər modullar isteğe bağlıdır və Dynamic Delivery vasitəsilə qoşulur.
AAB konfiqurasiyası XML əvəzinə Protocol Buffers (protobuf) istifadə edir. .pb faylları daha yığcamdır və Google server infrastrukturu tərəfindən daha sürətli parsellenir. Bundletool aləti protobuf-u sazlama üçün oxunaqlı formata çevirir.
Dynamic Delivery — AAB-nin qurulduğu əsas texnologiyadır. O, istifadəçiyə yalnız onun cihazına və dilinə uyğun olan tətbiq hissələrini çatdırmağa, həmçinin əlavə modulları tələb əsasında yükləməyə imkan verir.
Install-time modulları quraşdırma zamanı baza APK ilə birlikdə yüklənir. Conditional modulları yalnız şərtlər yerinə yetirildikdə çatdırılır — məsələn, 4K ekranlar üçün material modulu. On-demand modulları istifadəçinin tələbi ilə tətbiq daxilində yüklənir.
Böyük resurslar üçün (2 GB-a qədər) OBB faylları əvəzinə Play Asset Delivery istifadə olunur. PAD eyni üç çatdırılma rejimini dəstəkləyir: install-time, fast-follow (quraşdırmadan dərhal sonra) və on-demand.
// SplitInstallManager vasitəsilə on-demand modulun yüklənməsi
val manager = SplitInstallManagerFactory
.create(context)
val request = SplitInstallRequest
.newBuilder()
.addModule("level_pack_3")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("AAB", "Modul quraşdırıldı")
}
Hər bir dinamik modul çatdırılma növü göstərilməklə ayrıca build.gradle faylı ilə təsvir edilir. Modul baza tətbiqindən asılı olmayan öz resurslarına, koduna və manifestinə malik ola bilər.
Qurulma AAB Android Gradle Plugin vasitəsilə bundleRelease (və ya bundleDebug) tapşırığı ilə həyata keçirilir. Nəticə — build/outputs/bundle/ qovluğunda .aab faylı.
AAB-nin qurulması üçün xüsusi ayarlar tələb olunmur — Android Gradle Plugin paketləri standart olaraq dəstəkləyir. assemble əvəzinə bundle tapşırığını göstərmək kifayətdir.
// build.gradle.kts — imza ilə AAB qurulması
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// Tapşırıq: ./gradlew bundleRelease
Google lokal maşında AAB-dən APK yaratmaq üçün bundletool alətini təqdim edir. `bundletool build-apks --bundle=app.aab --output=app.apks` əmri müxtəlif cihaz konfiqurasiyalarında sınaq üçün APK dəsti yaradır.
bundletool həmçinin AAB-ni açmaq, onun konfiqurasiyasını göstərmək və Google Play Console-a yükləmədən əvvəl imzanın bütövlüyünü yoxlamaq qabiliyyətinə malikdir. Sazlama üçün baza modulunun manifestini göstərən `bundletool dump manifest --bundle=app.aab` əmrindən istifadə olunur.
Standart olaraq AAB resursları üç ölçü üzrə bölür: dil (language), ekran sıxlığı (density) və CPU arxitekturası (abi). Developer build.gradle faylında istənilən bölməni söndürə bilər — məsələn, tətbiq yalnız ingilis dilini dəstəkləyirsə. Bölmənin söndürülməsi bütün variantlar üçün resursların baza APK-ya daxil olacağı anlamına gəlir.
Resource optimisation — AAB avtomatik olaraq PNG-ni keyfiyyət itkisi olmadan WebP-yə çevirir, istifadə olunmayan resursları sıxışdırır və təkrarlanan sətirləri silir. Bu optimallaşdırmalar yekun APK yaradılarkən Google Play tərəfindən tətbiq edilir. Nəticədə istifadəçi tam arxivdən 15–25% kiçik APK alır.
Dərc prosesi Google Play Console-da AAB-nin APK-dan yalnız yüklənən faylın formatı ilə fərqlənir. Konsol .aab qəbul edir, onun strukturunu, imzasını və modul konfiqurasiyasını yoxlayır, sonra hər bir cihaz növü üçün APK yaradır.
AAB yüklənərkən Google Play imza açarlarının idarəsini öz üzərinə götürür. Developer paketi upload açarı ilə imzalayıb yükləyir, Google isə yaradılan APK-ları öz açarı ilə yenidən imzalayır. Bu, açarların rotasiyasını və keystore itirildikdə girişin bərpasını asanlaşdırır.
Google Play Console daxili sınaq imkanı təqdim edir: müəyyən cihaz üçün yaradılan APK-nı yükləmək və ya Internal Testing, Closed Alpha və Open Beta trekləri vasitəsilə daxili sınaq keçirmək mümkündür.
Keçid AAB-ya, xüsusilə çox sayda dinamik modulu və ya mürəkkəb resurs konfiqurasiyası olan layihələrdə problemlər yarada bilər.
Əgər dinamik modul baza modulunun resurslarına səhv adla istinad edərsə, Google Play AAB-ni yoxlama mərhələsində rədd edir. Həll yolu — qurulmadan əvvəl lint yoxlamasından istifadə etmək və bütün modulları bundletool vasitəsilə lokal olaraq sınamaqdır.
Dillər üzrə bölmə, cari lokalizasiya üçün resurslar dinamik yüklənərsə, tətbiqin işə düşməsini yavaşlada bilər. Google tövsiyəsi — dillərin sayı 10-dan azdırsa bölməmək və ya ən populyar dillər üçün install-time istifadə etmək.
Bəzi SDK-lar (analitika, reklam, xəritələr) tam manifestə və resurslara giriş tələb edir. Uyğunluğun yoxlanılması — miqrasiyadan əvvəl məcburi addımdır. Ən böyük SDK-ların əksəriyyəti (Firebase, Google Ads, Crashlytics) 2022-ci ildən AAB-ni tam dəstəkləyir. Uyğunluğu yoxlamaq üçün server APK yaradılmasını emulyasiya edən --validate flag-ı ilə bundletool istifadə olunur.
AAB baza modulunun manifestindən versionCode istifadə edir. APK-dan fərqli olaraq, AAB həmçinin hər modul üçün ayrıca versionCode dəstəkləyir — bu, tətbiqin ayrı-ayrı hissələrini tam yenidən quraşdırmadan yeniləməyə imkan verir. Dynamic Delivery quraşdırılmış modulları izləyir və Google Play vasitəsilə yeniləmə zamanı yalnız dəyişdirilmiş komponentləri çatdırır.
Google Play Console hər bir AAB üçün ətraflı analitika təqdim edir: nə qədər APK yaradıldı, hansı bölmələr tələb olundu, cihazlar üzrə orta yükləmə ölçüsü nə qədərdir. Android Vitals yaradılan APK-ların performans metrikalarını göstərir. Bu məlumatlar bölmə konfiqurasiyasını optimallaşdırmağa və müxtəlif cihaz kateqoriyaları üçün yükləmə ölçüsünü azaltmağa kömək edir.
Tez-tez verilən suallar
Xeyr, AAB birbaşa quraşdırma üçün nəzərdə tutulmayıb. Google Play onu müəyyən cihaz üçün APK-ya çevirir. Telefonda sınamaq üçün AAB-dən lokal olaraq APK yaradan bundletool istifadə olunur.
Google Play yalnız istifadəçinin cihazına uyğun resurslarla APK yaradır: bir ekran sıxlığı, bir CPU arxitekturası, bir dil. Digər konfiqurasiyalar üçün resurslar daxil edilmir, bu da yükləmə zamanı 15–30% trafikə qənaət edir.
Xeyr, mövcud tətbiqlər APK dərc etməyə davam edə bilər. AAB tələbi yalnız yeni tətbiqlərə aiddir. Google mövcud layihələri AAB-ya yeniləməyi tövsiyə edir, lakin tələb etmir.
Qurulma tapşırığını assembleRelease-dən bundleRelease-ə dəyişin, bütün SDK-ların uyğunluğunu yoxlayın, Google Play Console-da App Signing konfiqurasiya edin və ilk AAB-ni mövcud track vasitəsilə yükləyin.
Bəli, AAB modullarda native kitabxanaları ehtiva edir. Google Play yalnız cihazın CPU arxitekturasına uyğun .so fayllarını çatdırır. Bu, xüsusilə böyük native yığmaları olan Unity və Unreal Engine oyunları üçün vacibdir.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun