APK: nedir, dosya yapısı ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-04-15 Okuma süresi: 8 dk

APK (Android Package Kit), Android'de uygulamaları dağıtmak ve yüklemek için kullanılan bir arşiv dosyası formatıdır. Kullanıcının Google Play'den indirdiği veya manuel olarak yüklediği her uygulama bir APK dosyasıdır. Android Open Source Project, 2026'ya göre format, ZIP standardına dayanır ve derlenmiş kod, kaynaklar, bildirim ve dijital imza içerir.

Önemli Noktalar

  • APK, DEX bayt kodu ve kaynaklarla ZIP tabanlı Android kurulum paketi formatıdır.
  • Yapı, bildirim, DEX dosyaları, kaynaklar, yerel kod kütüphaneleri ve sertifikaları içerir.
  • İmza zorunludur: imzasız APK cihazlara yüklenemez.
  • Derleme, Gradle aracılığıyla yapılır: Java/Kotlin'den sıkıştırılmış DEX bayt koduna.
  • Üçüncü taraf mağazalar ve doğrudan APK kurulumu Google Play dışında talep görmeye devam ediyor.

APK Nedir ve Ne İçin Kullanılır

APK (Android Package Kit), Android uygulamasını dağıtım için paketlemekte kullanılan bir arşiv formatıdır. Teknik olarak APK, uygulamanın cihazda çalışması için gerekli tüm bileşenleri içeren belirli bir yapıya sahip ZIP arşividir.

Formatın Tarihçesi

APK formatı, 2008 yılında Android'in ilk sürümüyle ortaya çıktı. Temel olarak, ZIP üzerine kurulu olan JAR (Java Archive) standardı alındı. Bu miras, mevcut arşiv araçlarıyla uyumluluğu sağladı — herhangi bir arşivleyici APK'yı normal bir ZIP olarak açabilir.

Kullanım Alanları

Google Play, APK dağıtımının ana kanalıdır ancak format diğer senaryolarda da kullanılır: tarayıcı üzerinden doğrudan kurulum (sideloading), kurumsal uygulama mağazaları, geliştirici cihazlarında test etme ve emülatörlerde kurulum. Statista'ya göre, 2025 yılında Android uygulama kurulumlarının yaklaşık %15'i Google Play dışında gerçekleşmektedir.

APK Dosyasının İç Yapısı

APK'nın iç yapısı kesin olarak düzenlenmiştir: her uygulama belirli dosya ve dizinleri içermelidir. Yapının ihlali kurulum hatalarına yol açar.

Dosya/DizinAmaç
AndroidManifest.xmlUygulama bildirimi: izinler, bileşenler, SDK sürümü
classes.dexDerlenmiş DEX bayt kodu (birden fazla dosya olabilir)
resources.arscDerlenmiş kaynaklar: dizeler, stiller, düzenler
res/Derlenmemiş kaynaklar: görseller, yazı tipleri, XML
lib/Farklı CPU mimarileri için yerel kütüphaneler (.so)
META-INF/Üst veri: sertifikalar, dosya listeleri, hash'ler

AndroidManifest.xml

Bildirim, uygulamanın merkezi yapılandırma dosyasıdır. İkili derlenmiş biçimde (okunabilir XML değil) paket adı, sürüm, aktivite listesi, hizmetler, izinler ve SDK gereksinimlerini içerir. Bildirim olmadan sistem uygulamayı nasıl başlatacağını bilmez.

DEX Dosyaları

Java veya Kotlin kaynak kodu, DEX (Dalvik Executable) dosyalarına derlenir. Ana dosyaya classes.dex denir. Bayt kodu 64K yöntem sınırını aşarsa classes2.dex, classes3.dex vb. oluşturulur — multidex mekanizması.

Yerel Kütüphaneler

lib/ dizini, farklı mimariler için derlenmiş C/C++ kütüphanelerini içerir: armeabi-v7a, arm64-v8a, x86, x86_64. Her kütüphane .so (Shared Object) uzantısına sahiptir. Modern uygulamalar genellikle yalnızca arm64-v8a sağlar.

Gradle ile APK Derleme Süreci

APK derlemesi, Gradle derleme sistemi ve Android Gradle Plugin tarafından otomatikleştirilmiş çok aşamalı bir süreçtir. Her aşama kaynak dosyalarını nihai arşivin bileşenlerine dönüştürür.

Derleme Aşamaları

Kaynak kod, Java bayt koduna (.class) derlenir, ardından d8 aracı (daha önce dx) kullanılarak DEX'e dönüştürülür. Kaynaklar, AAPT2 aracılığıyla ikili biçime derlenir. Tüm bileşenler bir ZIP arşivinde paketlenir ve dijital imzayla imzalanır.

kotlin
// build.gradle.kts — temel APK derleme yapılandırması
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 ve Boyut Küçültme

ProGuard veya R8, kodu karıştırır, kullanılmayan sınıfları ve yöntemleri kaldırarak APK boyutunu küçültür. Karıştırma olmadan APK, derlemeyi basitleştiren tam sınıf adları içerir. R8 ayrıca DEX düzeyinde bayt kodu optimizasyonu gerçekleştirir.

APK İmzalama: v1, v2, v3 ve v4 Şemaları

Dijital imza, APK'nın zorunlu bir öğesidir. Android imzasız paketleri yüklemez. İmza, uygulamanın yayınlandıktan sonra değiştirilmediğini garanti eder ve paketin kime ait olduğunu belirler.

İmzalama Şemalarının Evrimi

v1 (JAR signing), arşivdeki her dosyanın imzalanmasına dayanan orijinal şemadır. Açık: dosyalar algılanmadan META-INF'den kaldırılabilir. v2 (APK Signature Scheme v2), Android 7.0'da ortaya çıktı — tüm arşiv bir bütün olarak imzalanır, değişiklik önlenir. v3, anahtar rotasyonunu destekler ve v4, artımlı kurulumu destekler.

Google Play, Ağustos 2021'den bu yana tüm yeni uygulamalar için v2 veya üstünü gerektirir. Farklı Android sürümleriyle maksimum uyumluluk için APK'nın üç şemayla da imzalanması önerilir.

Gradle ile İmzalama Süreci

build.gradle dosyasında keystore, şifre ve alias belirtilir. Özel anahtar şifrelenmiş bir depoda saklanır. Google Play'de yayınlamak için App Signing kullanılır — Google özel anahtarı saklar ve geliştirici imzalı APK'yı yükler.

Android Cihaza APK Yükleme

APK yüklemesi, sistem paket yöneticisi PackageManager aracılığıyla gerçekleştirilir. Süreç, imza doğrulaması, bildirim ayrıştırması, dosya kopyalama ve dex2oat ile DEX optimizasyonunu içerir.

ADB ile Kurulum

ADB (Android Debug Bridge) aracı, APK'nın geliştirici bilgisayarından doğrudan yüklenmesine olanak tanır. `adb install app.apk` komutu dosyayı cihaza kopyalar ve kurulumu başlatır. -r bayrağı uygulamayı verileri koruyarak yeniden yükler, -d bayrağı daha düşük versionCode'a sahip bir sürümün yüklenmesine izin verir.

Kurulum Güvenliği

Android 8.0'dan itibaren sistem, her uygulama için ayrı ayrı bilinmeyen kaynaklardan kurulum onayı gerektirir. Android 14 kontrolü sıkılaştırdı: üçüncü taraf mağazalar üzerinden APK kurulumu yalnızca ayarlarda açık izin verildikten sonra mümkündür. Google Play Protect, her APK'yı kurulum sırasında kötü amaçlı kod açısından tarar.

APK Expansion Files (OBB)

150 MB'tan büyük uygulamalar için Google Play, Expansion Files — her biri 2 GB'a kadar ek OBB paketlerini destekler. OBB dosyaları APK'ya dahil edilmez, kurulumdan sonra ayrı olarak indirilir. Format iki türü destekler: main (temel kaynaklar) ve patch (güncellemeler).

kotlin
// PackageManager üzerinden APK sürümünü kontrol etme
val pm = packageManager
val info = pm.getPackageInfo(
    "com.example.app",
    PackageManager.GET_ACTIVITIES
)
Log.d("APK", "Version: ${info.versionName}")

dex2oat Optimizasyonu

ART (Android Runtime) bulunan cihazlarda, kurulumdan sonra dex2oat aracılığıyla DEX'in yerel koda derlenmesi başlatılır. İşlem birkaç saniye sürebilir ve yüklü uygulamanın boyutunu artırır ancak başlatmayı hızlandırır.

APK vs AAB: Hangi Format Seçilmeli

AAB (Android App Bundle), Google'nın Google Play'de yayınlamak için APK'ya alternatif olarak sunduğu bir formattır. Fark temeldir: AAB doğrudan kurulmaz, Google Play'in optimize edilmiş APK'lar oluşturduğu bir kapsayıcı görevi görür.

ParametreAPKAAB
İndirme boyutuTam arşivYalnızca gerekli bileşenler
Doğrudan kurulumEvetHayır (APK oluşturma)
DağıtımHerhangi bir kanalGoogle Play
Sürüm kontrolüBildirimde sürümDynamic Delivery
YayınlamaGoogle Play + üçüncü tarafGoogle Play

Google Play, Ağustos 2021'den bu yana yeni uygulamalar için AAB gerektirir. Ancak APK, Google Play dışında dağıtım için ana format olmaya devam ediyor — web siteleri, kurumsal mağazalar ve test etme yoluyla.

APK ile Sık Karşılaşılan Sorunlar ve Çözümleri

Geliştiriciler, APK derlerken ve yüklerken düzenli olarak sorunlarla karşılaşır. Bunların çoğu sürüm uyumsuzluğu, imza veya arşiv yapısıyla ilgilidir.

INSTALL_FAILED_UPDATE_INCOMPATIBLE

Bu hata, aynı paket adına ancak farklı imzaya sahip bir APK yüklemeye çalışırken oluşur. Android, değiştirilmiş sertifikaya sahip bir uygulamanın yeniden yüklenmesine izin vermez. Çözüm: kurulumdan önce eski sürümü kaldırın.

Yöntem Sınırı Aşıldı (65K)

Proje 65536 yöntem sınırını aşarsa derleme dex hatasıyla başarısız olur. Çözüm: build.gradle'da multidex'i etkinleştirin veya kullanılmayan kütüphaneleri kaldırarak bağımlılıkları optimize edin.

APK Çok Büyük

Google Play, APK boyutunu 150 MB ile sınırlar. Daha büyük uygulamalar için APK Expansion Files (OBB) kullanılır. R8, WebP görselleri ve Android App Bundle aracılığıyla boyutun küçültülmesi önerilir. Her ek megabayt kurulum dönüşümünü olumsuz etkiler: Google'a göre her 10 MB dönüşümü %1 azaltır.

APK Derlemesini Geri Alma ve Güvenlik

APK, JADX, APKTool veya Bytecode Viewer gibi araçlar kullanılarak derlenebilir. JADX, DEX'ten orijinal Java kodunu geri yükler ve bu da karıştırma olmadan uygulamaları tamamen okunabilir hale getirir. Kod koruması için, sınıfları, yöntemleri ve alanları kısa okunamaz adlarla yeniden adlandıran ve hata ayıklama bilgilerini kaldıran ProGuard/R8 kullanılır.

APK Analiz Araçları

APK içeriğini analiz etmek için Android Studio Profiler, apkanalyzer (Android SDK'dan CLI aracı) ve üçüncü taraf yardımcı programlar kullanılır. apkanalyzer, APK'nın her bileşeninin boyutunu gösterir: DEX, kaynaklar, yerel kütüphaneler ve imza. Analiz, hangi bağımlılıkların en çok yer kapladığını belirlemeye ve bunları değiştirme veya kaldırma kararları almaya yardımcı olur.

Sıkça Sorulan Sorular

APK normal bir ZIP arşivi olarak açılabilir mi?

Evet, herhangi bir arşivleyici (7-Zip, WinRAR) APK'yı ZIP olarak açar. İçeriği görüntüleyebilirsiniz ancak kodu derlemek için özel araçlar gerekir — JADX veya apktool.

APK, XAPK'dan nasıl farklıdır?

XAPK, bazı üçüncü taraf mağazalar tarafından kullanılan resmi olmayan bir formattır. APK'yı ek OBB dosyalarıyla tek bir arşivde birleştirir. Google Play ve resmi Android dokümantasyonu XAPK kullanmaz.

Test için APK'yı imzalamak gerekli mi?

Android Studio, bir cihazda çalıştırırken hata ayıklama derlemesini debug.keystore ile otomatik olarak imzalar. Test sürümünü ekibe dağıtmak için yayın anahtarıyla imzalama veya App Signing kullanımı gerekir.

APK boyutu nasıl küçültülür?

Karıştırma ve küçültme için R8 kullanın, görselleri WebP'ye dönüştürün, Lint aracılığıyla kullanılmayan kaynakları kaldırın ve büyük projeler için Dynamic Delivery ile Android App Bundle'a geçin.

APK yayınlandıktan sonra değiştirilebilir mi?

Hayır — imzalamadan sonra APK'da yapılan herhangi bir değişiklik dijital imzayı bozar. Güncellemek için artırılmış versionCode ile yeni bir sürüm derlemeniz ve imzalamanız gerekir.

Özet

  • APK, zorunlu dijital imzaya sahip ZIP tabanlı Android kurulum paketi formatıdır.
  • Yapı, bildirim, DEX bayt kodu, kaynaklar, yerel kütüphaneler ve sertifikaları içerir.
  • Derleme, d8 aracıyla DEX'e derleme yaparak Gradle üzerinden gerçekleştirilir.
  • İmza zorunludur: v1, v2, v3 ve v4 şemaları farklı koruma seviyeleri sağlar.
  • Kurulum, Google Play, ADB, tarayıcı ve kurumsal mağazalar aracılığıyla mümkündür.
  • AAB, Google Play'de APK'nın yerini alır ancak APK, üçüncü taraf dağıtım için standart olmaya devam eder.
  • Sınırlamalar: Google Play için 150 MB sınırı, multidex olmadan 64K yöntem, zorunlu imza.

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun