APK (Android Package Kit) — bu Android-da ilovalarni tarqatish va o'rnatish uchun ishlatiladigan arxiv fayl formatidir. Foydalanuvchi Google Play-dan yuklab olgan yoki qo'lda o'rnatgan har bir ilova APK faylidir. Android Open Source Project, 2026 ma'lumotlariga ko'ra, format ZIP standartiga asoslangan va kompilyatsiya qilingan kod, resurslar, manifest va raqamli imzoni o'z ichiga oladi.
Asosiy ma'lumotlar
APK (Android Package Kit) — bu Android ilovasini tarqatish uchun paketlanadigan arxiv formatidir. Texnik jihatdan, APK — bu qurilmada ilovaning ishlashi uchun zarur bo'lgan barcha komponentlarni o'z ichiga olgan ma'lum tuzilmali ZIP arxivdir.
APK formati 2008-yilda Android-ning birinchi versiyasi bilan birga paydo bo'ldi. Asos sifatida JAR (Java Archive) standarti olindi, u o'z navbatida ZIP-ga asoslangan. Bunday meros arxivlar bilan ishlash uchun mavjud vositalar bilan moslikni ta'minladi — har qanday arxivlovchi APK ni oddiy ZIP kabi ochadi.
Google Play — APK tarqatishning asosiy kanali, ammo format boshqa stsenariylarda ham qo'llaniladi: brauzer orqali to'g'ridan-to'g'ri o'rnatish (sideloading), korporativ ilova do'konlari, ishlab chiqaruvchi qurilmalarida sinov va emulyatorlarda o'rnatish. Statista ma'lumotlariga ko'ra, 2025-yilda Android ilovalarini o'rnatishning taxminan 15% Google Play dan tashqarida amalga oshiriladi.
Ichki tuzilma qat'iy belgilangan: har bir ilova ma'lum fayllar va kataloglarni o'z ichiga olishi kerak. Tuzilmaning buzilishi o'rnatish xatosiga olib keladi.
| Fayl/katalog | Vazifasi |
|---|---|
| AndroidManifest.xml | Ilova manifesti: ruxsatlar, komponentlar, SDK versiyasi |
| classes.dex | Kompilyatsiya qilingan DEX bayt-kodi (bir nechta fayl bo'lishi mumkin) |
| resources.arsc | Kompilyatsiya qilingan resurslar: satrlar, uslublar, maketlar |
| res/ | Kompilyatsiya qilinmagan resurslar: tasvirlar, shriftlar, XML |
| lib/ | Turli CPU arxitekturalari uchun mahalliy kutubxonalar (.so) |
| META-INF/ | Metama'lumotlar: sertifikatlar, fayl ro'yxatlari, hash'lar |
Manifest — ilovaning markaziy konfiguratsiya fayli. Ikkilik kompilyatsiya qilingan shaklda (o'qiladigan XML emas) paket nomi, versiya, faoliyatlar ro'yxati, xizmatlar, ruxsatlar va SDK talablarini o'z ichiga oladi. Manifestsiz tizim ilovani qanday ishga tushirishni bilmaydi.
Java yoki Kotlin-dagi manba kodi DEX (Dalvik Executable) fayllariga kompilyatsiya qilinadi. Asosiy fayl classes.dex deb nomlanadi. Bayt-kod 64K metod chegarasidan oshsa, classes2.dex, classes3.dex va hokazo yaratiladi — multidex mexanizmi.
lib/ katalogi turli arxitekturalar uchun kompilyatsiya qilingan C/C++ kutubxonalarini o'z ichiga oladi: armeabi-v7a, arm64-v8a, x86, x86_64. Har bir kutubxona .so (Shared Object) kengaytmasiga ega. Zamonaviy ilovalar odatda faqat arm64-v8a ni taqdim etadi.
APK yig'ish — bu Gradle va Android Gradle Plugin tomonidan avtomatlashtirilgan ko'p bosqichli jarayon. Har bir bosqich manba fayllarini yakuniy arxiv komponentlariga aylantiradi.
Manba kodi Java bayt-kodiga (.class) kompilyatsiya qilinadi, so'ngra d8 vositasi (ilgari dx) orqali DEX ga aylantiriladi. Resurslar AAPT2 orqali ikkilik formatga kompilyatsiya qilinadi. Barcha komponentlar ZIP arxiviga yig'iladi va raqamli imzo bilan imzolanadi.
// build.gradle.kts — APK yig'ishning asosiy konfiguratsiyasi
android {
defaultConfig {
applicationId = "com.example.app"
minSdk = 24
targetSdk = 34
versionCode = 1
versionName = "1.0.0"
}
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt")
)
}
}
}
ProGuard yoki R8 kodni xiralashtiradi, foydalanilmaydigan sinflar va metodlarni olib tashlab, APK hajmini kamaytiradi. Xiralashtirishsiz APK sinflarning to'liq nomlarini o'z ichiga oladi, bu dekompilyatsiyani osonlashtiradi. R8 shuningdek DEX darajasida bayt-kod optimallashtirishni amalga oshiradi.
Raqamli imzo APK ning majburiy elementidir. Android imzolanmagan paketlarni o'rnatmaydi. Imzo ilova nashrdan keyin o'zgartirilmaganligini kafolatlaydi va paket kimga tegishli ekanligini aniqlaydi.
v1 (JAR signing) — arxivdagi har bir faylni imzolashga asoslangan original sxema. Zaiflik: META-INF dan fayllarni aniqlanmasdan olib tashlash mumkin. v2 (APK Signature Scheme v2) Android 7.0 da paydo bo'ldi — butun arxiv imzolanadi, bu o'zgartirishning oldini oladi. v3 kalit rotatsiyasini qo'llab-quvvatlaydi, v4 esa inkremental o'rnatishni qo'llab-quvvatlaydi.
Google Play 2021-yil avgustidan boshlab barcha yangi ilovalar uchun v2 yoki undan yuqorisini talab qiladi. Turli Android versiyalari bilan maksimal moslik uchun APK ni uchala sxema bilan imzolash tavsiya etiladi.
build.gradle da keystore, parol va alias ko'rsatiladi. Shaxsiy kalit shifrlangan omborda saqlanadi. Google Play da nashr qilish uchun App Signing ishlatiladi — Google shaxsiy kalitni saqlaydi, ishlab chiqaruvchi esa imzolangan APK ni yuklaydi.
APK ni o'rnatish tizim paket menejeri PackageManager orqali amalga oshiriladi. Jarayon imzoni tekshirish, manifestni tahlil qilish, fayllarni nusxalash va dex2oat orqali DEX optimallashtirishni o'z ichiga oladi.
ADB (Android Debug Bridge) vositasi ishlab chiqaruvchi kompyuteridan to'g'ridan-to'g'ri APK o'rnatish imkonini beradi. `adb install app.apk` buyrug'i faylni qurilmaga nusxalaydi va o'rnatishni boshlaydi. -r bayrog'i ilovani ma'lumotlarni saqlab qayta o'rnatadi, -d bayrog'i pastroq versionCode bilan versiyani o'rnatishga ruxsat beradi.
Android 8.0 dan boshlab tizim har bir ilova uchun alohida noma'lum manbalardan o'rnatishni tasdiqlashni talab qiladi. Android 14 nazoratni kuchaytirdi: uchinchi tomon do'konlari orqali APK o'rnatish faqat sozlamalarda aniq ruxsatdan so'ng mumkin. Google Play Protect o'rnatish vaqtida har bir APK ni zararli kod uchun skanerlaydi.
150 MB dan katta ilovalar uchun Google Play Expansion Files — har biri 2 GB gacha bo'lgan qo'shimcha OBB paketlarini qo'llab-quvvatlaydi. OBB fayllari APK tarkibiga kirmaydi, balki o'rnatishdan keyin alohida yuklab olinadi. Format ikki turni qo'llab-quvvatlaydi: main (asosiy resurslar) va patch (yangilanishlar).
// PackageManager orqali APK versiyasini tekshirish
val pm = packageManager
val info = pm.getPackageInfo(
"com.example.app",
PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Versiya: ${info.versionName}")
ART (Android Runtime) bo'lgan qurilmalarda o'rnatishdan so'ng dex2oat orqali DEX ni mahalliy kodga kompilyatsiya qilish ishga tushiriladi. Jarayon bir necha soniya davom etishi mumkin va o'rnatilgan ilova hajmini oshiradi, lekin uning ishga tushishini tezlashtiradi.
AAB (Android App Bundle) — Google tomonidan Google Play da nashr qilish uchun APK ga muqobil sifatida taklif qilinadigan format. Farq tubdan farq qiladi: AAB to'g'ridan-to'g'ri o'rnatilmaydi, balki Google Play optimallashtirilgan APK yaratadigan konteyner vazifasini bajaradi.
| Parametr | APK | AAB |
|---|---|---|
| Yuklab olish hajmi | To'liq arxiv | Faqat kerakli komponentlar |
| To'g'ridan-to'g'ri o'rnatish | Ha | Yo'q (APK yaratish) |
| Tarqatish | Har qanday kanal | Google Play |
| Versiya nazorati | Manifestdagi versiya | Dynamic Delivery |
| Nashr qilish | Google Play + uchinchi tomonlar | Google Play |
Google Play 2021-yil avgustidan boshlab yangi ilovalar uchun AAB ni talab qiladi. Biroq APK Google Play dan tashqarida tarqatish uchun asosiy format bo'lib qolmoqda — veb-saytlar, korporativ do'konlar va sinov orqali.
Ishlab chiqaruvchilar APK ni yig'ish va o'rnatishda muntazam ravishda muammolarga duch kelishadi. Ularning aksariyati versiya nomutanosibligi, imzo yoki arxiv tuzilishi bilan bog'liq.
Xato bir xil paket nomi, ammo boshqa imzo bilan APK o'rnatishga urinishda yuzaga keladi. Android o'zgartirilgan sertifikatli ilovani qayta o'rnatishga ruxsat bermaydi. Yechim — o'rnatishdan oldin eski versiyani olib tashlang.
Loyiha 65536 metod chegarasidan oshsa, yig'ish dex xatosi bilan muvaffaqiyatsiz bo'ladi. Yechim — build.gradle da multidex ni ulash yoki foydalanilmaydigan kutubxonalarni olib tashlab, bog'liqliklarni optimallashtirish.
Google Play APK hajmini 150 MB bilan cheklaydi. Kattaroq ilovalar uchun APK Expansion Files (OBB) ishlatiladi. R8, WebP tasvirlar va Android App Bundle orqali hajmni kamaytirish tavsiya etiladi. Har bir qo'shimcha megabayt o'rnatish konversiyasiga salbiy ta'sir qiladi: Google ma'lumotlariga ko'ra, har 10 MB konversiyani 1% ga kamaytiradi.
APK ni JADX, APKTool yoki Bytecode Viewer vositalari bilan dekompilyatsiya qilish mumkin. JADX DEX dan original Java kodini tiklaydi, bu xiralashtirilmasdan ilovalarni to'liq o'qiladigan qiladi. Kodni himoya qilish uchun ProGuard/R8 ishlatiladi, u sinflar, metodlar va maydonlarni qisqa o'qilmaydigan nomlarga o'zgartiradi va disk raskadka ma'lumotlarini olib tashlaydi.
APK tarkibini tahlil qilish uchun Android Studio Profiler, apkanalyzer (Android SDK dan CLI vositasi) va uchinchi tomon yordamchi dasturlari ishlatiladi. apkanalyzer APK ning har bir komponentining hajmini ko'rsatadi: DEX, resurslar, mahalliy kutubxonalar va imzo. Tahlil qaysi bog'liqliklar eng ko'p joy egallashini aniqlashga va ularni almashtirish yoki olib tashlash to'g'risida qaror qabul qilishga yordam beradi.
Ko'p beriladigan savollar
Ha, har qanday arxivlovchi (7-Zip, WinRAR) APK ni ZIP sifatida ochadi. Tarkibni ko'rish mumkin, ammo kodni dekompilyatsiya qilish uchun maxsus vositalar — JADX yoki apktool talab qilinadi.
XAPK — ba'zi uchinchi tomon do'konlari tomonidan ishlatiladigan norasmiy format. APK ni qo'shimcha OBB fayllari bilan bitta arxivda birlashtiradi. Google Play va Android ning rasmiy hujjatlari XAPK dan foydalanmaydi.
Android Studio qurilmada ishga tushirishda debug.keystore bilan disk raskadka yig'ilishini avtomatik imzolaydi. Test versiyasini jamoaga tarqatish uchun reliz kaliti bilan imzolash yoki App Signing dan foydalanish talab qilinadi.
Xiralashtirish va minimallashtirish uchun R8 dan foydalaning, tasvirlarni WebP ga aylantiring, Lint orqali foydalanilmaydigan resurslarni olib tashlang va katta loyihalar uchun Dynamic Delivery bilan Android App Bundle ga o'ting.
Yo'q — imzodan keyin APK dagi har qanday o'zgarish raqamli imzoni buzadi. Yangilash uchun oshirilgan versionCode bilan yangi versiyani yig'ish va imzolash kerak.
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.
Shuningdek o'qing