APK: bu nima, fayl tuzilishi va ishlash prinsipi

Muallif: IT Sectr Nashr etilgan: 2026-04-15 O'qish vaqti: 8 daq

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 — DEX bayt-kodi va resurslari bilan ZIP-ga asoslangan Android o'rnatish paketi formati.
  • Tuzilma manifest, DEX fayllar, resurslar, mahalliy kod kutubxonalari va sertifikatlarni o'z ichiga oladi.
  • Imzo — majburiy element: imzolanmagan APK qurilmalarga o'rnatilmaydi.
  • Yig'ish Gradle orqali amalga oshiriladi: Java/Kotlin dan siqilgan DEX bayt-kodigacha.
  • Uchinchi tomon do'konlari va to'g'ridan-to'g'ri APK o'rnatish Google Play dan tashqarida talab qilinadi.

APK nima va u nima uchun ishlatiladi

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.

Format tarixi

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.

Qo'llash sohalari

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.

APK faylining ichki tuzilishi

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/katalogVazifasi
AndroidManifest.xmlIlova manifesti: ruxsatlar, komponentlar, SDK versiyasi
classes.dexKompilyatsiya qilingan DEX bayt-kodi (bir nechta fayl bo'lishi mumkin)
resources.arscKompilyatsiya 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

AndroidManifest.xml

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.

DEX fayllari

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.

Mahalliy kutubxonalar

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.

Gradle orqali APK yig'ish jarayoni

APK yig'ish — bu Gradle va Android Gradle Plugin tomonidan avtomatlashtirilgan ko'p bosqichli jarayon. Har bir bosqich manba fayllarini yakuniy arxiv komponentlariga aylantiradi.

Yig'ish bosqichlari

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.

kotlin
// 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 va hajmni kamaytirish

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.

APK imzolash: v1, v2, v3 va v4 sxemalari

Raqamli imzo APK ning majburiy elementidir. Android imzolanmagan paketlarni o'rnatmaydi. Imzo ilova nashrdan keyin o'zgartirilmaganligini kafolatlaydi va paket kimga tegishli ekanligini aniqlaydi.

Imzo sxemalarining evolyutsiyasi

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.

Gradle orqali imzolash jarayoni

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 Android qurilmasiga o'rnatish

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 orqali o'rnatish

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.

O'rnatish xavfsizligi

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.

APK Expansion Files (OBB)

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).

kotlin
// PackageManager orqali APK versiyasini tekshirish
val pm = packageManager
val info = pm.getPackageInfo(
    "com.example.app",
    PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Versiya: ${info.versionName}")

dex2oat optimallashtirish

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.

APK vs AAB: qaysi formatni tanlash

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.

ParametrAPKAAB
Yuklab olish hajmiTo'liq arxivFaqat kerakli komponentlar
To'g'ridan-to'g'ri o'rnatishHaYo'q (APK yaratish)
TarqatishHar qanday kanalGoogle Play
Versiya nazoratiManifestdagi versiyaDynamic Delivery
Nashr qilishGoogle Play + uchinchi tomonlarGoogle 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.

APK bilan odatiy muammolar va ularning yechimi

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.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

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.

Metod limitidan oshib ketish (65K)

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.

APK juda katta hajmda

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 dekompilyatsiyasi va xavfsizlik

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 ni vositalar orqali tahlil qilish

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

APK ni oddiy ZIP arxiv sifatida ochish mumkinmi?

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.

APK XAPK dan qanday farq qiladi?

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.

Sinov uchun APK ni imzolash kerakmi?

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.

APK hajmini qanday kamaytirish mumkin?

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.

APK ni nashrdan keyin o'zgartirish mumkinmi?

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

  • APK — majburiy raqamli imzo bilan ZIP-ga asoslangan Android o'rnatish paketi formati.
  • Tuzilma manifest, DEX bayt-kodi, resurslar, mahalliy kutubxonalar va sertifikatlarni o'z ichiga oladi.
  • Yig'ish d8 vositasi orqali DEX ga kompilyatsiya bilan Gradle yordamida amalga oshiriladi.
  • Imzo majburiy: v1, v2, v3 va v4 sxemalari turli himoya darajasini ta'minlaydi.
  • O'rnatish Google Play, ADB, brauzer va korporativ do'konlar orqali mumkin.
  • AAB Google Play da APK ni almashtiradi, ammo APK tashqi tarqatish uchun standart bo'lib qoladi.
  • Cheklovlar: Google Play uchun 150 MB limiti, multidexsiz 64K metod, majburiy imzo.

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.

Loyihani muhokama qilish

Shuningdek o'qing