APK (Android Package Kit) — Android-də tətbiqlərin paylanması və quraşdırılması üçün istifadə olunan arxiv fayl formatıdır. İstifadəçinin Google Play-dən endirdiyi və ya əl ilə quraşdırdığı hər bir tətbiq APK faylıdır. Android Open Source Project, 2026-ya görə, format ZIP standartına əsaslanır və tərtib edilmiş kod, resurslar, manifest və rəqəmsal imza ehtiva edir.
Əsas məqamlar
APK (Android Package Kit) — Android tətbiqinin paylanma üçün paketləndiyi arxiv formatıdır. Texniki olaraq APK, cihazda tətbiqin işləməsi üçün lazım olan bütün komponentləri ehtiva edən müəyyən strukturlu ZIP arxividir.
APK formatı 2008-ci ildə Android-in ilk versiyası ilə birlikdə meydana çıxdı. Əsas olaraq JAR (Java Archive) standartı götürüldü, o da öz növbəsində ZIP-ə əsaslanır. Bu miras arxivlərlə işləmək üçün mövcud alətlərlə uyğunluğu təmin etdi — istənilən arxivləşdirici APK-nı adi ZIP kimi açır.
Google Play — APK paylanmasının əsas kanalıdır, lakin format digər ssenarilərdə də istifadə olunur: brauzer vasitəsilə birbaşa quraşdırma (sideloading), korporativ tətbiq mağazaları, tərtibatçı cihazlarında sınaq və emulyatorlarda quraşdırma. Statista-ya görə, 2025-ci ildə Android tətbiq quraşdırmalarının təxminən 15%-i Google Play xaricində baş verir.
Daxili quruluşu ciddi şəkildə tənzimlənir: hər bir tətbiq müəyyən fayl və qovluqları ehtiva etməlidir. Strukturun pozulması quraşdırma xətasına gətirib çıxarır.
| Fayl/qovluq | Təyinatı |
|---|---|
| AndroidManifest.xml | Tətbiq manifesti: icazələr, komponentlər, SDK versiyası |
| classes.dex | Tərtib edilmiş DEX bayt-kodu (bir neçə fayl ola bilər) |
| resources.arsc | Tərtib edilmiş resurslar: sətirlər, stillər, planlar |
| res/ | Tərtib edilməmiş resurslar: şəkillər, şriftlər, XML |
| lib/ | Müxtəlif CPU arxitekturaları üçün yerli kitabxanalar (.so) |
| META-INF/ | Metaməlumatlar: sertifikatlar, fayl siyahıları, heşlər |
Manifest — tətbiqin mərkəzi konfiqurasiya faylıdır. İkili tərtib edilmiş formada (oxuna bilən XML deyil) paket adı, versiya, fəaliyyətlərin siyahısı, xidmətlər, icazələr və SDK tələblərini ehtiva edir. Manifest olmadan sistem tətbiqi necə işə salacağını bilmir.
Java və ya Kotlin dillərindəki mənbə kodu DEX (Dalvik Executable) fayllarına tərtib edilir. Əsas fayl classes.dex adlanır. Bayt-kod 64K metod limitini keçərsə, classes2.dex, classes3.dex və s. yaradılır — multidex mexanizmi.
lib/ qovluğu müxtəlif arxitekturalar üçün tərtib edilmiş C/C++ kitabxanalarını ehtiva edir: armeabi-v7a, arm64-v8a, x86, x86_64. Hər kitabxana .so (Shared Object) genişlənməsinə malikdir. Müasir tətbiqlər adətən yalnız arm64-v8a təqdim edir.
APK-nın yığılması Gradle və Android Gradle Plugin tərəfindən avtomatlaşdırılmış çoxmərhələli prosesdir. Hər mərhələ mənbə fayllarını son arxivin komponentlərinə çevirir.
Mənbə kodu Java bayt-koduna (.class) tərtib edilir, sonra d8 aləti (əvvəllər dx) vasitəsilə DEX-ə çevrilir. Resurslar AAPT2 vasitəsilə ikili formata tərtib edilir. Bütün komponentlər ZIP arxivinə yığılır və rəqəmsal imza ilə imzalanır.
// build.gradle.kts — APK yığılmasının əsas konfiqurasiyası
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 və ya R8 kodu gizlədir, istifadə olunmayan sinifləri və metodları silərək APK ölçüsünü azaldır. Gizlətmə olmadan APK siniflərin tam adlarını ehtiva edir ki, bu da dekompilyasiyanı asanlaşdırır. R8 həmçinin DEX səviyyəsində bayt-kod optimallaşdırması həyata keçirir.
Rəqəmsal imza APK-nın məcburi elementidir. Android imzasız paketləri quraşdırmır. İmza tətbiqin nəşrdən sonra dəyişdirilmədiyini təmin edir və paketin kimə məxsus olduğunu müəyyən edir.
v1 (JAR signing) — arxivdəki hər faylın imzalanmasına əsaslanan orijinal sxem. Zəiflik: META-INF-dən faylları aşkarlanmadan silmək olar. v2 (APK Signature Scheme v2) Android 7.0-da meydana çıxdı — bütün arxiv imzalanır ki, bu da dəyişikliyin qarşısını alır. v3 açar rotasiyasını dəstəkləyir, v4 isə artımlı quraşdırmanı dəstəkləyir.
Google Play, 2021-ci ilin avqustundan etibarən bütün yeni tətbiqlər üçün v2 və ya daha yüksək versiyanı tələb edir. Müxtəlif Android versiyaları ilə maksimum uyğunluq üçün APK-nın hər üç sxemlə imzalanması tövsiyə olunur.
build.gradle-də keystore, parol və alias göstərilir. Şəxsi açar şifrələnmiş anbarda saxlanılır. Google Play-də nəşr üçün App Signing istifadə olunur — Google şəxsi açarı saxlayır, tərtibatçı isə imzalanmış APK-nı yükləyir.
APK-nın quraşdırılması sistem paket meneceri PackageManager vasitəsilə həyata keçirilir. Proses imzanın yoxlanılması, manifestin təhlili, faylların kopyalanması və dex2oat vasitəsilə DEX optimallaşdırmasını əhatə edir.
ADB (Android Debug Bridge) aləti tərtibatçı kompüterindən birbaşa APK quraşdırmağa imkan verir. `adb install app.apk` əmri faylı cihaza kopyalayır və quraşdırmanı işə salır. -r bayrağı tətbiqi məlumatları saxlamaqla yenidən quraşdırır, -d bayrağı daha aşağı versionCode olan versiyanın quraşdırılmasına icazə verir.
Android 8.0-dan başlayaraq sistem hər bir tətbiq üçün ayrıca naməlum mənbələrdən quraşdırmanın təsdiqini tələb edir. Android 14 nəzarəti gücləndirdi: üçüncü tərəf mağazaları vasitəsilə APK quraşdırması yalnız parametrlərdə açıq icazədən sonra mümkündür. Google Play Protect quraşdırma zamanı hər bir APK-nı zərərli kod üçün skan edir.
150 MB-dan böyük tətbiqlər üçün Google Play Expansion Files — hər biri 2 GB-a qədər əlavə OBB paketlərini dəstəkləyir. OBB faylları APK-ya daxil deyil, quraşdırmadan sonra ayrıca endirilir. Format iki növü dəstəkləyir: main (əsas resurslar) və patch (yeniləmələr).
// PackageManager vasitəsilə APK versiyasının yoxlanılması
val pm = packageManager
val info = pm.getPackageInfo(
"com.example.app",
PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Versiya: ${info.versionName}")
ART (Android Runtime) olan cihazlarda quraşdırmadan sonra dex2oat vasitəsilə DEX-in yerli koda tərtibi işə salınır. Proses bir neçə saniyə çəkə bilər və quraşdırılmış tətbiqin ölçüsünü artırır, lakin onun işə salınmasını sürətləndirir.
AAB (Android App Bundle) — Google-ın Google Play-də nəşr üçün APK-ya alternativ olaraq təqdim etdiyi format. Fərq əsaslıdır: AAB birbaşa quraşdırılmır, əksinə Google Play-in optimallaşdırılmış APK yaratdığı konteyner rolunu oynayır.
| Parametr | APK | AAB |
|---|---|---|
| Yükləmə ölçüsü | Tam arxiv | Yalnız lazım komponentlər |
| Birbaşa quraşdırma | Bəli | Xeyr (APK yaradılması) |
| Paylanma | İstənilən kanal | Google Play |
| Versiya nəzarəti | Manifestdə versiya | Dynamic Delivery |
| Nəşr | Google Play + üçüncü tərəflər | Google Play |
Google Play 2021-ci ilin avqustundan etibarən yeni tətbiqlər üçün AAB tələb edir. Lakin APK Google Play xaricində paylanma üçün əsas format olaraq qalır — veb-saytlar, korporativ mağazalar və sınaq vasitəsilə.
Tərtibatçılar APK-nın yığılması və quraşdırılması zamanı müntəzəm olaraq problemlərlə qarşılaşırlar. Onların əksəriyyəti versiya uyğunsuzluğu, imza və ya arxiv strukturu ilə bağlıdır.
Xəta eyni paket adı, lakin fərqli imza ilə APK quraşdırmağa cəhd edərkən yaranır. Android dəyişdirilmiş sertifikatlı tətbiqin yenidən quraşdırılmasına icazə vermir. Həll yolu — quraşdırmadan əvvəl köhnə versiyanı silin.
Layihə 65536 metod limitini keçərsə, yığılma dex xətası ilə uğursuz olur. Həll yolu — build.gradle-də multidex-i qoşmaq və ya istifadə olunmayan kitabxanaları silərək asılılıqları optimallaşdırmaq.
Google Play APK ölçüsünü 150 MB ilə məhdudlaşdırır. Daha böyük tətbiqlər üçün APK Expansion Files (OBB) istifadə olunur. R8, WebP şəkilləri və Android App Bundle vasitəsilə ölçünün azaldılması tövsiyə olunur. Hər əlavə meqabayt quraşdırma konversiyasına mənfi təsir göstərir: Google-a görə, hər 10 MB konversiyanı 1% azaldır.
APK-nı JADX, APKTool və ya Bytecode Viewer alətləri ilə dekompilyasiya etmək olar. JADX DEX-dən orijinal Java kodunu bərpa edir ki, bu da gizlətmə olmadan tətbiqləri tam oxunaqlı edir. Kodu qorumaq üçün ProGuard/R8 istifadə olunur, sinifləri, metodları və sahələri qısa oxunmaz adlarla dəyişdirir və debug məlumatlarını silir.
APK məzmununun təhlili üçün Android Studio Profiler, apkanalyzer (Android SDK-dan CLI aləti) və üçüncü tərəf yardımçı proqramları istifadə olunur. apkanalyzer APK-nın hər bir komponentinin ölçüsünü göstərir: DEX, resurslar, yerli kitabxanalar və imza. Təhlil hansı asılılıqların ən çox yer tutduğunu müəyyən etməyə və onların dəyişdirilməsi və ya silinməsi barədə qərar qəbul etməyə kömək edir.
Tez-tez verilən suallar
Bəli, istənilən arxivləşdirici (7-Zip, WinRAR) APK-nı ZIP kimi açır. Məzmunu görmək olar, lakin kodun dekompilyasiyası üçün xüsusi alətlər — JADX və ya apktool tələb olunur.
XAPK — bəzi üçüncü tərəf mağazaları tərəfindən istifadə olunan qeyri-rəsmi formatdır. APK-nı əlavə OBB faylları ilə bir arxivdə birləşdirir. Google Play və Android-in rəsmi sənədləri XAPK-dan istifadə etmir.
Android Studio cihazda işə salarkən debug.keystore ilə debug qurğusunu avtomatik imzalayır. Test versiyasını komandaya yaymaq üçün buraxılış açarı ilə imza və ya App Signing istifadəsi tələb olunur.
Gizlətmə və minimallaşdırma üçün R8-dən istifadə edin, şəkilləri WebP-yə çevirin, Lint vasitəsilə istifadə olunmayan resursları silin, böyük layihələr üçün isə Dynamic Delivery ilə Android App Bundle-a keçin.
Xeyr — imzadan sonra APK-da hər hansı dəyişiklik rəqəmsal imzanı pozur. Yeniləmə üçün artırılmış versionCode ilə yeni versiyanı yığmaq və imzalamaq lazımdır.
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