AAB — Android applicationni store orqali publish qilish uchun ishlatiladigan bundle formati. To‘liq nomi Android App Bundle. AAB qurilmaga bevosita o‘rnatiladigan yakuniy package emas; distribution platformasi undan ma’lum qurilma uchun optimized APKlar yaratadi.
AAB developerga bitta artifact yuborib, architecture, til, screen density va optional feature bo‘yicha kichikroq download tarqatish imkonini beradi.
Bundle tuzilishi
AAB ZIPga o‘xshash container bo‘lib, modulelar va metadata saqlaydi.
Asosiy qismlar:
- base module;
- dynamic feature module;
- manifest;
- DEX;
- resource;
- asset;
- native library;
- bundle configuration;
- protobuf metadata.
Tuzilishi oddiy APKdan farq qiladi.
Base module
Har applicationda base module mavjud.
U:
- initial code;
- asosiy resource;
- manifest;
- common dependency;
- entry component
ni saqlaydi.
Boshqa feature modulelar base’ga bog‘lanishi mumkin.
Dynamic feature
Applicationning optional qismi alohida module sifatida yaratiladi.
U:
- install-time;
- on-demand;
- conditional
tarqatilishi mumkin.
Masalan, kam ishlatiladigan 3D editor yoki alohida til contenti userga kerak bo‘lganda yuklanadi.
Configuration split
Store qurilma configurationiga mos split APKlar yaratadi:
- ABI;
- screen density;
- language.
Arm64 qurilmaga x86 native library yuborilmaydi.
User tanlamagan tillar ham boshlang‘ich downloadga kirmasligi mumkin.
APK set
AAB processing natijasida base va split APKlar to‘plami yaratiladi.
Ular bitta device configuration uchun birgalikda o‘rnatiladi.
Store yoki bundletool qaysi splitlar kerakligini aniqlaydi.
Bitta faylni ajratib o‘rnatish applicationni to‘liq ishga tushirmasligi mumkin.
Bundletool
Bundletool AAB bilan ishlash uchun command-line vosita.
U:
- APK set yaratish;
- device-specific APK chiqarish;
- local install;
- bundle validation;
- manifest ko‘rish
uchun ishlatilishi mumkin.
Store build pipeline ham o‘xshash format qoidalaridan foydalanadi.
Device specification
Device spec:
haqida ma’lumot beradi.
Bundletool shu spec asosida mos APKlarni tanlaydi.
Testingda turli device configurationlar simulyatsiya qilinadi.
App signing
Store AABdan APK yaratgani sabab final APK signing jarayoni store infrastructure bilan bog‘liq.
App signing service production signing keyni boshqarishi mumkin.
Developer upload key bilan bundle yuboradi.
Upload key compromise bo‘lsa production keydan alohida almashtirish imkoniyati bo‘lishi mumkin.
Upload key
Developer AABni upload key bilan imzolaydi.
Store uploader identity’sini tekshiradi.
Bu key final user APK signing keyi bilan aynan bir xil bo‘lishi shart emas.
Keystore, parol va CI secret xavfsiz saqlanadi.
Version code
Bundle version code va version name saqlaydi.
Har release yuqoriroq version code bilan yuboriladi.
Splitlar bir release identity’siga mos bo‘ladi.
Dynamic feature compatibility base version bilan tekshiriladi.
Asset delivery
Katta game va media assetlari alohida asset pack orqali tarqatilishi mumkin.
Delivery:
- install-time;
- fast-follow;
- on-demand
bo‘lishi mumkin.
Bu eski expansion file yondashuviga alternativa beradi.
Install-time feature
Application o‘rnatilganda base bilan birga tushadi.
Critical feature yoki initial navigation uchun ishlatiladi.
Juda ko‘p install-time module boshlang‘ich hajmni yana kattalashtiradi.
On-demand feature
User ma’lum funksiyani ochganda yuklanadi.
Application download progress, offline va failure holatini boshqaradi.
Feature hali yo‘q bo‘lsa unga tegishli class va resource bevosita ishlatilmaydi.
Conditional delivery
Module device feature, country yoki boshqa supported conditionga qarab tarqatilishi mumkin.
Masalan, AR capability mavjud device.
Condition noto‘g‘ri bo‘lsa kerakli user feature olmasligi mumkin.
Fallback va analytics muhim.
Testing
AABni oddiy file manager bilan o‘rnatib bo‘lmaydi.
Testing:
orqali bajariladi.
Faqat developer qurilmasi emas, turli ABI, til va density tekshiriladi.
AAB va APK
AAB — publish va generation inputi.
APK — o‘rnatiladigan package.
AAB optimization imkonini beradi.
Sideload va store’dan tashqari tarqatishda APK hanuz zarur bo‘lishi mumkin.
Hajm
Bundle barcha variantlarni saqlagani sabab AAB faylining o‘zi universal APKdan kichik bo‘lishi shart emas.
Foyda user download qiladigan device-specific APK hajmida.
Store download size, install size va update delta’ni alohida hisoblaydi.
Security
AAB ichidagi client code va resource tahlil qilinishi mumkin.
Bundle secret saqlash joyi emas.
Dynamic module ham application permissionlari va sandbox ichida ishlaydi.
Module download source va integrity store tomonidan boshqariladi.
Build tizimi
Gradle Android plugin modulelarni bundle formatga compile qiladi.
Manifest merge, resource processing, DEX, native library va signing pipeline birga ishlaydi.
Plugin va bundletool versionlari compatibilityga ta’sir qilishi mumkin.
Play Feature Deliveryga oid holat
Dynamic module yuklanganda code darhol mavjud bo‘lmasligi mumkin. Application install session statusini kuzatadi, user confirmation talab qilinishi va download bekor bo‘lishi ehtimolini boshqaradi. Module olib tashlangan yoki yangilangan base bilan incompatible bo‘lmasligi kerak.
Resource shrinking
Store split yaratishdan oldin build tizimi unused code va resource’ni olib tashlashi mumkin. Reflection yoki dynamic resource name sabab kerakli element tasodifan o‘chirilmasligi uchun keep qoidalari yoziladi.
Universal test APK
Testing uchun barcha configurationlarni bitta universal APKga birlashtirish mumkin. U store useriga beriladigan real download hajmini ifodalamaydi.
Bog‘liq tushunchalar
Android App Bundle, AAB, APK, Split APK, Dynamic feature module, Bundletool, App signing, Asset delivery, Android publishing, Configuration split