AAB (Android App Bundle) — 2021 yildan boshlab Google Play da APK ni almashtirgan Android ilovalarini nashr qilish formatidir. APK dan farqli o'laroq, AAB o'rnatish fayli emas — bu Google Play har bir qurilma uchun optimallashtirilgan APK larni dinamik ravishda yaratadigan konteynerdir. Android Developers, 2026 ma'lumotlariga ko'ra, format foydalanilmayotgan resurslarni chiqarib tashlash orqali yuklab olinadigan ilova hajmini o'rtacha 15% ga kamaytiradi.
Asosiy ma'lumotlar
AAB (Android App Bundle) — Google tomonidan Google Play orqali tarqatish uchun APK ning o'rniga ishlab chiqilgan nashr formatidir. AAB ichida .aab kengaytmali ZIP arxivi — kompilyatsiya qilingan kod, resurslar va metama'lumotlar mavjud. Asosiy farq: AAB to'g'ridan-to'g'ri qurilmaga o'rnatilmaydi.
Dasturchi AAB ni Google Play Console ga yuklaydi. Foydalanuvchi ilovani o'rnatmoqchi bo'lganda, Google Play qurilma konfiguratsiyasini tahlil qiladi: ekran zichligi (DPI), CPU arxitekturasi, til va Android versiyasi. Ushbu tahlil asosida faqat kerakli komponentlarni o'z ichiga olgan minimal APK yaratiladi.
Google AAB ni 2018 yilda I/O konferensiyasida taqdim etdi. 2021 yil avgustidan format Google Play dagi barcha yangi ilovalar uchun majburiy bo'ldi. Mavjud ilovalar APK dan foydalanishda davom etishi mumkin, ammo yangilari faqat AAB formatida nashr qilinishi kerak.
Farq AAB va APK o'rtasida tubdan farq qiladi: APK — o'rnatishga tayyor to'liq o'rnatish fayli. AAB — qayta ishlashni talab qiladigan manba komponentlari bo'lgan konteyner.
| Parametr | APK | AAB |
|---|---|---|
| Tur | O'rnatish fayli | Nashr konteyneri |
| O'rnatish | To'g'ridan-to'g'ri qurilmada | Google Play orqali |
| Hajm | To'liq arxiv | Manba komponentlari |
| Modullar | Hammasi bitta faylda | Alohida modullar |
| Imzo | Dasturchi | Google Play |
| Tarqatish | Har qanday kanal | Google Play |
APK Google Play dan tashqarida tarqatish uchun mos keladi — veb-saytlar, elektron pochta yoki korporativ MDM tizimlari orqali. AAB Google Play infratuzilmasiga bog'langan va to'g'ridan-to'g'ri o'rnatilmaydi. AAB ni sinash uchun lokal mashinada APK yaratilishini emulyatsiya qiluvchi bundletool vositasidan foydalaniladi.
Ichki tuzilishi APK ga o'xshaydi, lekin modullar va ularning bog'liqliklarini tavsiflash uchun qo'shimcha papka va fayllarni o'z ichiga oladi.
| Fayl/papka | Vazifasi |
|---|---|
| base/ | Asosiy modul: kod, resurslar, manifest |
| BundleConfig.pb | Protobuf formatidagi paket konfiguratsiyasi |
| Bundle-metadata/ | Modul versiyalari haqida metama'lumotlar |
| feature/ | Dinamik modullar (on-demand) |
| assets/ | Ilova aktivlari |
| manifest/ | Har bir modulning manifesti |
Base moduli — AAB ning majburiy komponenti. U ilovaning asosiy kodini, resurslarini va manifestini o'z ichiga oladi. Base modulisiz ilova qurilmaydi. Boshqa barcha modullar ixtiyoriy va Dynamic Delivery orqali ulanadi.
AAB konfiguratsiyasi XML o'rniga Protocol Buffers (protobuf) dan foydalanadi. .pb fayllari ixchamroq va Google server infratuzilmasi tomonidan tezroq tahlil qilinadi. Bundletool vositasi protobuf ni tuzatish uchun o'qiladigan formatga o'zgartiradi.
Dynamic Delivery — AAB qurilgan asosiy texnologiya. U foydalanuvchiga faqat uning qurilmasi va tiliga mos keladigan ilova qismlarini yetkazib berishga, shuningdek qo'shimcha modullarni so'rov bo'yicha yuklashga imkon beradi.
Install-time modullari o'rnatish vaqtida asosiy APK bilan birga yuklanadi. Conditional modullari faqat shartlar bajarilganda yetkazib beriladi — masalan, 4K ekranlar uchun materiallar moduli. On-demand modullari foydalanuvchining so'roviga binoan ilova ichida yuklanadi.
Katta resurslar uchun (2 GB gacha) OBB fayllari o'rniga Play Asset Delivery ishlatiladi. PAD bir xil uchta yetkazib berish rejimini qo'llab-quvvatlaydi: install-time, fast-follow (o'rnatishdan so'ng darhol) va on-demand.
// SplitInstallManager orqali on-demand modulini yuklash
val manager = SplitInstallManagerFactory
.create(context)
val request = SplitInstallRequest
.newBuilder()
.addModule("level_pack_3")
.build()
manager.startInstall(request)
.addOnSuccessListener {
Log.d("AAB", "Modul o'rnatildi")
}
Har bir dinamik modul yetkazib berish turi ko'rsatilgan holda alohida build.gradle fayli bilan tavsiflanadi. Modul asosiy ilovadan mustaqil bo'lgan o'z resurslari, kodi va manifestiga ega bo'lishi mumkin.
Qurish AAB Android Gradle Plugin orqali bundleRelease (yoki bundleDebug) vazifasi bilan amalga oshiriladi. Natija — build/outputs/bundle/ papkasida .aab fayli.
AAB qurish uchun maxsus sozlamalar talab qilinmaydi — Android Gradle Plugin paketlarni standart sifatida qo'llab-quvvatlaydi. Assemble o'rniga bundle vazifasini ko'rsatish kifoya.
// build.gradle.kts — imzo bilan AAB qurish
android {
bundle {
language {
enableSplit = true
}
density {
enableSplit = true
}
abi {
enableSplit = true
}
}
}
// Vazifa: ./gradlew bundleRelease
Google lokal mashinada AAB dan APK yaratish uchun bundletool vositasini taqdim etadi. `bundletool build-apks --bundle=app.aab --output=app.apks` buyrug'i turli qurilma konfiguratsiyalarida sinash uchun APKlar to'plamini yaratadi.
bundletool shuningdek AAB ni ochish, uning konfiguratsiyasini ko'rsatish va Google Play Console ga yuklashdan oldin imzo yaxlitligini tekshirish imkoniyatiga ega. Tuzatish uchun asosiy modul manifestini ko'rsatadigan `bundletool dump manifest --bundle=app.aab` buyrug'idan foydalaniladi.
Standart sifatida AAB resurslarni uch o'lchov bo'yicha ajratadi: til (language), ekran zichligi (density) va CPU arxitekturasi (abi). Dasturchi build.gradle da istalgan bo'limni o'chirib qo'yishi mumkin — masalan, ilova faqat ingliz tilini qo'llab-quvvatlasa. Bo'limni o'chirish barcha variantlar uchun resurslar asosiy APK ga kiritilishini anglatadi.
Resource optimisation — AAB avtomatik ravishda PNG ni sifat yo'qotmasdan WebP ga o'zgartiradi, foydalanilmayotgan resurslarni siqadi va takrorlanuvchi qatorlarni olib tashlaydi. Ushbu optimallashtirishlar yakuniy APK yaratilayotganda Google Play tomonidan qo'llaniladi. Natijada foydalanuvchi to'liq arxivdan 15–25% kichikroq APK oladi.
Nashr jarayoni Google Play Console da AAB ning APK dan faqat yuklanadigan fayl formati bilan farqlanadi. Konsol .aab ni qabul qiladi, uning tuzilishini, imzosini va modul konfiguratsiyasini tekshiradi, so'ngra har bir qurilma turi uchun APK yaratadi.
AAB yuklanayotganda Google Play imzo kalitlarini boshqarishni o'z zimmasiga oladi. Dasturchi paketni upload kaliti bilan imzolab yuklaydi, Google esa yaratilgan APK larni o'z kaliti bilan qayta imzolaydi. Bu kalitlarni almashtirishni va keystore yo'qolganida kirishni tiklashni osonlashtiradi.
Google Play Console o'rnatilgan sinov imkoniyatini taqdim etadi: ma'lum bir qurilma uchun yaratilgan APK ni yuklab olish yoki Internal Testing, Closed Alpha va Open Beta treklari orqali ichki sinovni o'tkazish mumkin.
O'tish AAB ga, ayniqsa ko'p sonli dinamik modullari yoki murakkab resurs konfiguratsiyasi bo'lgan loyihalarda muammolarni keltirib chiqarishi mumkin.
Agar dinamik modul asosiy modulning resurslariga noto'g'ri nom bilan murojaat qilsa, Google Play AAB ni tekshirish bosqichida rad etadi. Yechim — qurishdan oldin lint tekshiruvidan foydalanish va barcha modullarni bundletool orqali lokal sinovdan o'tkazish.
Tillar bo'yicha ajratish, joriy lokalizatsiya uchun resurslar dinamik yuklansa, ilovaning ishga tushishini sekinlashtirishi mumkin. Google tavsiyasi — tillar soni 10 dan kam bo'lsa ajratmaslik yoki eng mashhur tillar uchun install-time dan foydalanish.
Ba'zi SDK lar (analitika, reklamalar, xaritalar) to'liq manifest va resurslarga kirishni talab qiladi. Moslikni tekshirish — migratsiyadan oldin majburiy qadam. Eng yirik SDK larning aksariyati (Firebase, Google Ads, Crashlytics) 2022 yildan AAB ni to'liq qo'llab-quvvatlaydi. Moslikni tekshirish uchun server APK yaratilishini emulyatsiya qiluvchi --validate flagi bilan bundletool ishlatiladi.
AAB asosiy modul manifestidan versionCode dan foydalanadi. APK dan farqli o'laroq, AAB har bir modul uchun alohida versionCode ni ham qo'llab-quvvatlaydi — bu ilovaning alohida qismlarini to'liq qayta o'rnatmasdan yangilash imkonini beradi. Dynamic Delivery o'rnatilgan modullarni kuzatadi va Google Play orqali yangilashda faqat o'zgartirilgan komponentlarni yetkazib beradi.
Google Play Console har bir AAB uchun batafsil analitikani taqdim etadi: qancha APK yaratilgan, qaysi bo'limlar talab qilingan, qurilmalar bo'yicha o'rtacha yuklab olish hajmi qancha. Android Vitals yaratilgan APK larning ishlash ko'rsatkichlarini ko'rsatadi. Ushbu ma'lumotlar bo'lim konfiguratsiyasini optimallashtirish va turli qurilma toifalari uchun yuklab olish hajmini kamaytirishga yordam beradi.
Tez-tez beriladigan savollar
Yo'q, AAB to'g'ridan-to'g'ri o'rnatish uchun mo'ljallanmagan. Google Play uni ma'lum bir qurilma uchun APK ga aylantiradi. Telefonda sinash uchun AAB dan lokal APK yaratadigan bundletool ishlatiladi.
Google Play faqat foydalanuvchi qurilmasiga mos keladigan resurslar bilan APK yaratadi: bitta ekran zichligi, bitta CPU arxitekturasi, bitta til. Boshqa konfiguratsiyalar uchun resurslar kiritilmaydi, bu yuklab olishda 15–30% trafikni tejaydi.
Yo'q, mavjud ilovalar APK nashr qilishda davom etishi mumkin. AAB talabi faqat yangi ilovalarga tegishli. Google mavjud loyihalarni AAB ga yangilashni tavsiya qiladi, lekin talab qilmaydi.
Qurish vazifasini assembleRelease dan bundleRelease ga o'zgartiring, barcha SDK larning mosligini tekshiring, Google Play Console da App Signing ni sozlang va birinchi AAB ni mavjud track orqali yuklang.
Ha, AAB modullarda native kutubxonalarni o'z ichiga oladi. Google Play faqat qurilma CPU arxitekturasiga mos .so fayllarini yetkazib beradi. Bu, ayniqsa, katta native kompilyatsiyalari bo'lgan Unity va Unreal Engine o'yinlari uchun muhimdir.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.