Android ekosistemi, uygulama verilerini paketlemek, dağıtmak ve depolamak için çeşitli dosya formatlarını kullanır. Üçüncü taraf bir kaynaktan bir uygulama indirdiyseniz muhtemelen tanıdık APK'nın ötesinde dosya uzantılarıyla karşılaşmışsınızdır. XAPK (APKPure), APKS, APKM, AAB ve OBB gibi formatların her biri Android uygulama yaşam döngüsünde belirli bir amaca hizmet eder.
Bu kılavuzun tüm önemli Android dosya formatları için eksiksiz bir referans olması amaçlanmıştır. Geliştiriciler, uygulamaları dışarıdan yükleyen uzman kullanıcılar ve bu dosyaların aslında ne içerdiğini bilmek isteyen meraklı okuyucuların tümü, her formatın aşağıda sade bir dille açıklandığını görecektir.
APK: Android Paket Kiti
APK, Android uygulamaları için temel dosya formatıdır. Android'in başlangıcından bu yana standart kurulum formatı olmuştur ve Android işletim sisteminin uygulama kurulumu için doğal olarak anladığı format olmaya devam etmektedir.
Neler İçerir
Bir APK dosyası aslında belirli bir iç yapıya sahip bir ZIP arşividir:
- AndroidManifest.xml, uygulamanın paket adını, bileşenlerini, izinlerini ve gereksinimlerini bildiren İkili XML dosyası
- classes.dex (ve classes2.dex, vb.), Uygulamanın Java/Kotlin kodunu içeren Derlenmiş Dalvik bayt kodu
- resources.arsc, Kaynak kimliklerini değerleriyle eşleyen derlenmiş kaynak tablosu
- res/, Kimlik tarafından başvurulan düzenler, çizilebilir öğeler ve dizeler gibi kaynakları içeren dizin
- assets/, Uygulama tarafından çalışma zamanında AssetManager aracılığıyla erişilen ham varlık dosyaları
- lib/, CPU mimarisi tarafından düzenlenen yerel kitaplıklar (ör). lib/arm64-v8a/
- META-INF/, İmza dosyaları ve sertifika bilgileri
Onunla Karşılaştığınız Zaman
APK dosyaları, üçüncü taraf kaynaklardan uygulamaları yüklerken indirdiğiniz dosyalardır. Bunlar aynı zamanda Play Store'dan cihazınıza yüklenen dosyalardır; ancak modern Play Store yüklemeleri genellikle App Bundle'lardan oluşturulan bölünmüş APK'ları kullanır.
Nasıl Başa Çıkılır?
APK dosyaları, bir dosya yöneticisiyle açılarak veya adb install kullanılarak doğrudan Android'e yüklenebilir. Uzantıyı .zip olarak yeniden adlandırıp çıkartarak veya imzaları ve meta verileri incelemek için APK Doğrulayıcı ürünümüzü kullanarak içeriklerini de inceleyebilirsiniz.
AAB: Android Uygulama Paketi
Android App Bundle, Google'ın Play Store için yayınlama biçimidir. Ağustos 2021'den bu yana Play Store'daki tüm yeni uygulamaların APK yerine AAB olarak gönderilmesi gerekiyor.
Neler İçerir
Bir AAB dosyası, protokol arabelleği tabanlı bir format kullanır ve şunları içerir:
- Temel modül: Her cihazda gerekli olan temel uygulama kodu ve kaynaklar
- Yapılandırma bölmeleri: Kaynaklar ekran yoğunluğuna, CPU mimarisine ve dile göre düzenlenmiştir
- Dinamik özellik modülleri: İsteğe bağlı olarak indirilebilen isteğe bağlı özellikler
- Paket meta verileri: Cihaza özel APK'ların nasıl oluşturulacağına ilişkin Google Play Talimatları
Onunla Karşılaştığınız Zaman
Normal bir kullanıcı olarak genellikle AAB dosyalarıyla doğrudan karşılaşmazsınız. Geliştiriciler tarafından derleme ve yükleme işlemi sırasında kullanılırlar. Ancak bir AAB dosyası edinirseniz (belki de açık kaynaklı bir projenin yapı yapılarından), kurulumdan önce onu APK formatına dönüştürmeniz gerekir.
Nasıl Başa Çıkılır?
Bir AAB dosyasından kurulabilir bir APK oluşturmak için Google'ın bundletool komut satırı yardımcı programını veya AAB'den APK'ye dönüştürücü ürünümüzü kullanın. Dönüştürme işlemi ya evrensel bir APK (daha büyük, her yerde çalışır) ya da cihaza özel APK'lar (daha küçük, cihaz hedefli) oluşturur.
XAPK: Genişletilmiş APK
XAPK, APK'yı ilişkili OBB veri dosyalarıyla birlikte paketleyen veya APK yapılandırmalarını tek bir indirilebilir pakete bölen, APK tarafından popüler hale getirilen bir kapsayıcı formatıdır.
Neler İçerir
XAPK dosyası aşağıdakileri içeren bir ZIP arşividir:
- Temel APK dosyası (ana uygulama)
- OBB dosyaları (oyunlar ve büyük uygulamalar için genişletme verileri)
- İsteğe bağlı olarak farklı cihaz yapılandırmaları için APK dosyalarını bölün
- Paket içeriğini ve kurulum talimatlarını açıklayan bir manifest.json dosyası
- Görüntüleme amaçlı bir simge dosyası
Onunla Karşılaştığınız Zaman
Üçüncü taraf uygulama depolarından büyük uygulamaları veya oyunları indirirken XAPK dosyalarıyla karşılaşırsınız. Ek veri dosyaları gerektiren oyunlar (daha önce OBB dosyaları olarak dağıtılıyordu), indirme sürecini tek bir dosyaya basitleştirmek için genellikle XAPK'ler olarak paketlenir.
Nasıl Başa Çıkılır?
XAPK dosyaları, Android'in varsayılan paket yükleyicisi tarafından doğrudan yüklenemez. Özel bir XAPK yükleyici uygulamasına ihtiyacınız var ya da temel APK'yı çıkarmak için XAPK'den APK'ye dönüştürücü uygulamamızı kullanabilirsiniz. OBB verileri gerektiren oyunlar için ayrıca OBB Çıkarıcı'yi kullanarak OBB dosyalarını çıkartıp doğru dizine yerleştirmeniz gerekecektir.
APK'lar: APK Seti
APKS biçimi, bir AAB dosyasından cihaza özel APK'lar oluştururken Google'ın bundletool'unun çıktısıdır. Ayrıca bazı uygulama yedekleme araçları tarafından bölünmüş APK kurulumlarını depolamak için de kullanılır.
Neler İçerir
APKS dosyası aşağıdakileri içeren bir ZIP arşividir:
- toc.pb, Bölünmüş yapıyı açıklayan bir protokol arabellek içindekiler tablosu
- splits/, Temel APK'yı ve tüm bölünmüş konfigürasyon APK'larını içeren dizin
- İsteğe bağlı olarak, bölünmüş kurulumları desteklemeyen cihazlar için bağımsız APK'lar
Onunla Karşılaştığınız Zaman
Paket aracını yerel olarak kullanırken, Play Store'dan yüklenen uygulamaları yedeklerken veya bölünmüş APK yapısını koruyan belirli üçüncü taraf depolardan indirirken APKS dosyalarıyla karşılaşırsınız.
Nasıl Başa Çıkılır?
APKS dosyalarını bundletool'un install-apks komutunu kullanarak yükleyebilir veya APKS'den APK'ya birleşme aracımızı kullanarak bunları tek bir APK'ya dönüştürebilirsiniz. Tüm yapılandırma kaynakları birleştirildiğinden, bölünmüş APK'ları evrensel bir APK ile birleştirmenin dosya boyutunu artırabileceğini unutmayın.
APKM: APKMirror Paketi
APKM, birden fazla bölünmüş APK'dan oluşan uygulamaları dağıtmak için APKMirror tarafından oluşturulan özel bir kapsayıcı biçimidir. XAPK ve APKS'ye benzer bir amaca hizmet eder ancak APKMirror'ın kendi yapısını kullanır.
Neler İçerir
APKM dosyası aşağıdakileri içeren bir ZIP arşividir:
- Temel bir APK dosyası
- APK dosyalarını çeşitli yapılandırmalara (yoğunluk, ABI, dil) göre ayırın
- Paket yapısını açıklayan bir meta veri dosyası
Onunla Karşılaştığınız Zaman
APKM dosyalarıyla yalnızca APKMirror'dan indirirken karşılaşırsınız. Site, Play Store'da Uygulama Paketleri olarak dağıtılan ve bu nedenle birden fazla bölünmüş APK'dan oluşan uygulamalar için bu biçimi kullanır.
Nasıl Başa Çıkılır?
APKM dosyaları, doğrudan kurulum için APKMirror Installer uygulamasını gerektirir veya içerikleri çıkarabilir (bir ZIP dosyası olduğundan) ve bölünmüş APK'ları ADB'nin install-multiple komutunu kullanarak manuel olarak yükleyebilirsiniz. Temel APK ayrıca bağımsız olarak çıkarılabilir ve kurulabilir, ancak bazı işlevler yapılandırma bölünmeleri olmadan sınırlı olabilir.
OBB: Opak İkili Blob
OBB dosyaları, Android uygulamaları (özellikle oyunlar) tarafından Play Store'un APK boyut sınırını aşan büyük miktarda veriyi depolamak için kullanılan genişletme dosyalarıdır. Google bu sistemi büyük ölçüde Play Asset Delivery ile değiştirmiş olsa da mevcut birçok uygulama hala OBB dosyalarını kullanıyor.
Neler İçerir
OBB dosyaları uygulamanın ihtiyaç duyduğu her türlü veriyi içerebilir:
- Oyun dokuları ve 3D modeller
- Ses dosyaları ve film müzikleri
- Video içeriği
- Seviye verileri ve haritalar
- Geliştiricinin harici olarak depolamayı seçtiği büyük ikili veriler
Bir OBB dosyasındaki verilerin formatı tamamen geliştiriciye bağlıdır. Bazıları ZIP sıkıştırmasını kullanırken diğerleri özel ikili formatları kullanır. Adındaki "Opak", Android'in dosyayı kara kutu olarak ele aldığını yansıtır.
Onunla Karşılaştığınız Zaman
OBB dosyalarıyla, büyük oyunların yandan yüklenmesi sırasında veya XAPK paketleri içinde paketlendiğinde karşılaşılır. Cihazın paylaşılan depolama alanındaki /Android/obb/[package.name]/ konumunda saklanırlar.
Nasıl Başa Çıkılır?
Uygulamanın bulması için OBB dosyalarının doğru dizine yerleştirilmesi gerekir. Dosya adı genellikle main.[version].[package.name].obb veya patch.[version].[package.name].obb modelini takip eder. OBB dosyalarını XAPK paketlerinden çıkarmak için OBB Çıkarıcı ürünümüzü kullanın.
DEX: Dalvik Çalıştırılabilir
DEX dosyaları, Android'in çalışma zamanı ortamında çalışan derlenmiş bayt kodunu içerir. APK dosyalarının içinde bulunurlar ancak geliştirme ve hata ayıklama sırasında bağımsız olarak da mevcut olabilirler.
Neler İçerir
Bir DEX dosyası şunları içerir:
- Dalvik talimat formatında derlenmiş Java/Kotlin bayt kodu
- Dize sabitleri ve tür tanımları
- Yöntem ve alan referansları
- Sınıf tanımları ve hiyerarşileri
Teknik Detaylar
Tek bir DEX dosyasının 65.536 yöntem referans sınırı ("64K sınırı") vardır. Bu sınırı aşan uygulamalar, multidex adı verilen bir teknik olan birden fazla DEX dosyası (classes.dex, classes2.dex vb.) kullanır. Modern yapı araçları bunu otomatik olarak halleder.
ODEX, VDEX ve ART Dosyaları
Bunlar, kurulum sırasında veya sonrasında Android Runtime tarafından oluşturulan DEX dosyalarının optimize edilmiş sürümleridir:
- ODEX (Optimize Edilmiş DEX): Sık kullanılan yöntemler için önceden derlenmiş yerel makine kodunu içerir. Kullanım profillerine göre boşta bakım sırasında oluşturulur.
- VDEX (Doğrulanmış DEX): Önceden hesaplanmış doğrulama sonuçlarıyla birlikte doğrulanmış DEX bayt kodunu içerir. Bu, yeniden doğrulamayı atlayarak sonraki önyüklemeleri ve uygulama başlatma işlemlerini hızlandırır.
- ART (Android Çalışma Zamanı Görüntüsü): Önceden başlatılmış sınıf nesnelerini ve yığın verilerini içerir. Bu, çalışma zamanının başlatma sırasında ortak çerçeve sınıfları için sınıf yükleme ve başlatma işlemlerini atlamasına olanak tanır.
Bu dosyalar sistem tarafından oluşturulur ve kullanıcıların genellikle doğrudan etkileşime girdiği dosyalar değildir. /data/dalvik-cache/'de veya /data/app/'deki APK'nın yanında depolanırlar.
SO: Paylaşılan Nesne (Yerel Kütüphaneler)
.so uzantılı dosyalar, belirli CPU mimarileri için derlenen yerel paylaşılan kitaplıklardır. Dalvik/ART çalışma zamanının ek yükü olmadan doğrudan işlemci üzerinde çalışan, C, C++ veya Rust ile yazılmış makine kodunu içerirler.
Mimari Çeşitleri
- armeabi-v7a, 32 bit ARM (eski cihazların çoğu)
- arm64-v8a, 64 bit ARM (çoğu modern telefon)
- x86, 32 bit Intel/AMD (bazı tabletler ve emülatörler)
- x86_64, 64 bit Intel/AMD (Chromebook'lar ve emülatörler)
Bir APK yerel kitaplıklar içerdiğinde hedef cihaz için doğru mimariyi içermelidir. Yanlış mimari eklenirse uygulama UnsatisfiedLinkError hatasıyla çökecektir.
Android'deki XML Dosyaları
Android, XML'i yaygın olarak kullanır ancak iki farklı biçimde kullanır:
İkili XML
APK dosyalarının içinde, XML kaynakları (düzenler, bildirimler, dize dosyaları) AXML adı verilen derlenmiş bir ikili formatta depolanır. Bu biçim, metin XML'inden daha kompakt ve ayrıştırılması daha hızlıdır. aapt2 veya apktool gibi araçlar, ikili XML'i tekrar okunabilir metne dönüştürebilir.
Metin XML'i
Geliştirme sırasında XML dosyaları standart metin biçimindedir. Derleme işlemi bunları APK'ya dahil edilmek üzere ikili XML'de derler. network_security_config.xml gibi yapılandırma dosyaları ve res/ dizinindeki kaynak dosyaları metin XML olarak başlar.
ProGuard/R8 Eşleme Dosyaları
Android'e özgü bir format olmasa da, eşleme dosyaları (mapping.txt karartılmış uygulamaları anlamak için önemlidir). Geliştiriciler R8 gibi kod küçültme araçlarını kullandıklarında sınıf ve yöntem adlarının yerini kısa, anlamsız tanımlayıcılar alır. Eşleme dosyası, kilitlenme raporlarını okumak için gerekli olan orijinal ad çevirilerinden gizlenmiş ad çevirilerini kaydeder.
Android Yedekleme Formatı (AB)
.ab uzantılı dosyalar, adb backup tarafından oluşturulan Android yedekleme arşivleridir. Bir uygulamanın veri dizininin tar arşivini (isteğe bağlı olarak sıkıştırılmış ve şifrelenmiş) içerirler. Bu format, bulut tabanlı yedekleme çözümleri lehine kullanımdan kaldırılıyor ancak hala bazı yedekleme araçları tarafından kullanılıyor.
IMG ve Bölüm Görselleri
Uygulamayla ilgili olmasa da, Android sistem görüntüleri bahsetmeye değer çeşitli formatlar kullanır:
- system.img: Android çerçevesini ve önceden yüklenmiş uygulamaları içeren salt okunur sistem bölümü
- boot.img: Linux çekirdeğini ve başlangıç ramdiskini içerir
- satıcı.img: Donanıma özgü sürücüler ve bellenim
- süper.img: Modern cihazlarda kullanılan dinamik bölüm kapsayıcısı (Android 10+)
Format Karşılaştırma Tablosu
Ana uygulama dağıtım formatlarını karşılaştıran hızlı bir referansı burada bulabilirsiniz:
- APK'sı: Tek dosya, doğrudan kurulabilir, evrensel (tüm yapılandırmalar dahil), daha büyük boyut
- - AAB: Yayınlama formatı doğrudan kurulamaz, Play Store tarafından işlenmesi gerekir
- XAPK: Konteyner (APK + OBB/bölünmeler), yükleyici veya çıkarma gerektirir, APK tarafından kullanılır
- APK'lar: Container (bölünmüş APK'lar), bundletool formatı, yükleyici veya birleştirme gerektirir
- APKM: Container (bölünmüş APK'ler), APKMirror formatı, yükleyiciyi gerektirir
Doğru Aracı Seçmek
Hangi formatla çalıştığınıza bağlı olarak farklı araçlar uygundur:
- XAPK'niz var mı? Yüklenebilir APK'yı çıkarmak için XAPK'den APK'ye dönüştürücü aracımızı kullanın
- AAB'niz var mı? Evrensel bir APK oluşturmak için AAB'den APK'ye dönüştürücü aracımızı kullanın
- Bölünmüş APK'larınız (APKS) var mı? Bunları birleştirmek için APKS'den APK'ya birleşme ürünümüzü kullanın
- Bir APK'yı doğrulamanız mı gerekiyor? İmzaları kontrol etmek için APK Doğrulayıcı ürünümüzü kullanın
- XAPK'dan OBB dosyalarına mı ihtiyacınız var? Genişletme dosyalarını açmak için OBB Çıkarıcı ürünümüzü kullanın
Hangi Android Paket Formatını Kullanmalısınız?
Android ekosisteminin dosya formatlarının çeşitliliği, platformun basit tek dosyalı APK'lardan karmaşık modüler dağıtım sistemlerine doğru evrimini yansıtıyor. Her format belirli bir sorunu çözmek için mevcuttur: AAB'ler indirme boyutlarını azaltır, XAPK'lar çok dosyalı uygulamaların dağıtımını kolaylaştırır, OBB'ler büyük oyun verilerini yönetir ve bölünmüş APK'lar cihaza özel optimizasyona olanak tanır.
Bu formatları anladıktan sonra, ister uygulamaları dışarıdan yükleyin, ister cihazınızı yedekleyin, ister kendi uygulamalarınızı geliştirin, karşılaştığınız herhangi bir Android paketini kullanabilirsiniz. Temel çıkarım, bu formatların çoğunun sonuçta APK dosyalarını çeşitli konfigürasyonlarda tutan kaplar olması ve doğru araçlarla ihtiyacınız olanı her zaman çıkarabilmenizdir.