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

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

IPA (iOS App Store Package), iOS'ta uygulamaları dağıtmak için kullanılan bir arşiv dosyası biçimidir. App Store'a ulaşan her uygulama IPA biçiminden geçer: geliştirici projeyi oluşturur, imzalar ve IPA'yı App Store Connect'e yükler. Apple Developer Documentation, 2026'ya göre, IPA biçimi ZIP tabanlıdır ve çalıştırılabilir Mach-O dosyası, kaynaklar ve imza meta verileri içerir.

Önemli Noktalar

  • IPA, App Store ve ad-hoc kurulum yoluyla iOS uygulamalarını dağıtmak için bir arşiv biçimidir.
  • Yapı, imzalanmış çalıştırılabilir Mach-O dosyası, kaynaklar ve Provisioning Profile içerir.
  • İmza zorunludur: geçerli bir sertifika ve profil olmadan IPA kurulmaz.
  • Derleme, farklı şemaları destekleyen Xcode aracılığıyla yapılır: Debug, Release, Ad-hoc, Enterprise.
  • Mimari — modern IPA'lar arm64 ikili dosyaları içerir, 32 bit cihazlar desteklenmez.

IPA nedir ve ne için kullanılır

IPA (iOS App Store Package), Apple platformunda uygulamaları dağıtmak için bir paket biçimidir. APK gibi, IPA da teknik olarak bir ZIP arşividir, ancak iOS güvenlik ve imza gereksinimleri tarafından belirlenen kendi yapısına sahiptir.

Biçimin tarihçesi

IPA biçimi, 2008'de iPhone OS 2.0 ve App Store ile birlikte ortaya çıktı. İletim sırasında boyutu küçültmek için ZIP'te paketlenmiş macOS'un .app paket biçimini temel alıyordu. O zamandan beri IPA yapısı büyük değişiklikler geçirmedi — yalnızca imza şemaları ve meta veriler gelişti.

Kullanım alanları

App Store — ana kanal. Ad-hoc dağıtım — sınırlı sayıda cihazda (100'e kadar) test için. Enterprise dağıtım — mağazada yayınlamadan kurumsal uygulamalar için. Geliştiriciler ayrıca Xcode aracılığıyla gerçek cihazlarda test etmek için IPA kullanır.

IPA dosyasının iç yapısı

Bir IPA'nın yapısı, .app paketiyle birlikte Payload klasörü ve meta veriler içeren bir ZIP arşividir.

Dosya/DizinAmaç
Payload/.app paketini içeren kök klasör
Payload/App.app/Uygulama paketi: çalıştırılabilir dosya, kaynaklar, nib/storyboard
Payload/App.app/Info.plistMeta veriler: bundle ID, sürümler, izinler
Payload/App.app/embedded.mobileprovisionKurulum için Provisioning Profile
iTunesMetadata.plistiTunes meta verileri (isteğe bağlı)
META-INF/Doğrulama için imzalar ve karmalar

.app paketi

Payload klasörünün içinde .app uzantılı uygulama paketi bulunur. Bu bir dosya değil, iOS'un bir uygulama olarak tanıdığı bir dizindir. İçinde: çalıştırılabilir Mach-O dosyası (adı paket adıyla eşleşir), Info.plist, kaynaklar, resimler ve yerelleştirilmiş dizeler.

Mach-O çalıştırılabilir dosyası

Swift veya Objective-C'deki kaynak kodu, Mach-O (Mach Object) biçiminde makine koduna derlenir. Dosya __TEXT (kod), __DATA (veri) ve __LINKEDIT (bağlayıcı meta verileri) bölümlerini içerir. Modern IPA'lar yalnızca 64 bit arm64 mimarisini içerir.

Xcode ile IPA derleme süreci

Xcode, IPA derlemesini otomatikleştirir: kaynak kodun derlenmesinden App Store Connect'e yüklemeye hazır imzalı bir arşiv oluşturmaya kadar.

Derleme şemaları

Debug — geliştirme için, optimizasyon olmadan. Release — yayın için, derleyici optimizasyonlarıyla. Her şema derleme bayraklarını, kod imzalamayı ve hakları (entitlements) tanımlar. Xcode, Product → Archive aracılığıyla bir Arşiv (Archive) oluşturur.

objective-c
// Info.plist — temel uygulama meta verileri
<key>CFBundleName</key>
<string>MyApp</string>
<key>CFBundleIdentifier</key>
<string>com.example.myapp</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>CFBundleShortVersionString</key>
<string>1.0.0</string>

Derleme mimarisi

Xcode, her .swift veya .m dosyasını bir nesne dosyasına (.o) derler, ardından bunları tek bir Mach-O ikili dosyasında birleştirir. Kaynaklar (resimler, XIB, storyboard) ayrı ayrı işlenir: storyboard'lar ikili .storyboardc biçimine derlenir, resimler Asset Catalog'da (.car) optimize edilir.

IPA imzalama ve Provisioning Profile

İmza, bir IPA'nın en karmaşık yönüdür. Apple, gerçek bir cihazda çalışan her uygulama için dijital imza gerektirir. Sistem, geliştirici sertifikasını, hakları (entitlements) ve Provisioning Profile uyumluluğunu doğrular.

İmza bileşenleri

Sertifika (Development veya Distribution) — geliştiricinin kimliğini onaylar. Provisioning Profile — sertifikayı, bundle ID'yi ve izin verilen cihazların listesini (ad-hoc için) birbirine bağlar. Haklar — uygulama izinleri (push bildirimleri, iCloud, App Groups).

İmza süreci

Xcode, .app paketinin içindeki her kitaplığı ve çerçeveyi imzalar, ardından paketin kendisini imzalar. Nihai IPA, ZIP arşivi düzeyinde imzalanır. Apple, kurulum sırasında tüm imza düzeylerini doğrular. iOS, en az bir bileşenin geçersiz imzası varsa uygulamayı başlatmaz.

swift
// Security framework aracılığıyla imza doğrulaması
import Security

func checkSignature() -> Bool {
    let url = Bundle.main.bundleURL
    var staticCode: SecStaticCode?

    guard SecStaticCodeCreateWithPath(
        url as CFURL,
        [], &staticCode
    ) == errSecSuccess else {
        return false
    }
    return true
}

IPA'nın App Store Connect'te yayınlanması

App Store Connect, uygulama yayınlamayı yönetmek için Apple'ın platformudur. IPA yüklemesi, Xcode Organizer, Transporter veya komut satırı aracılığıyla xcrun altool kullanılarak yapılır.

Yükleme süreci

Bir arşiv oluşturduktan sonra Xcode, bir yöntem seçeneğiyle Distribute App sunar: App Store Connect, Ad-hoc, Enterprise veya Development. App Store Connect seçildiğinde, geliştirici ekibi belirtir ve yüklemeyi onaylar. Xcode imzayı doğrular, IPA'yı Apple sunucularına gönderir ve işleme durumunu döndürür.

Komut satırı

CI/CD için xcrun altool veya daha yeni notarytool kullanılır. Apple, macOS uygulamaları için noter onayı gerektirir; iOS için bu adım isteğe bağlıdır ancak önerilir. xcodebuild -exportArchive, yüklemeye hazır imzalı bir IPA oluşturur.

Apple, her IPA'yı kötü amaçlı kod, özel API'ler ve App Store Review Guidelines uyumu açısından kontrol eder. İnceleme süreci 1 saatten 2 güne kadar sürer.

App Thinning: IPA'nın cihazlar için optimize edilmesi

IPA, App Store Connect'e yüklenirken Apple, App Thinning uygular — ikili dosyayı belirli cihazlar için optimize eden bir teknoloji. Slicing, desteklenmeyen çözünürlükler ve mimariler için kaynakları kaldırır. On-Demand Resources, uygulamanın bölümlerinin (oyun seviyeleri, videolar) yalnızca kullanıcı isteği üzerine yüklenmesine izin verir. Bitcode, Apple'ın geliştirici katılımı olmadan yeni mimariler için yeniden derleyebileceği bir ara temsildir.

App Store ayrıca IPA'nın Sandbox gereksinimlerine uygunluğunu da kontrol eder: uygulama, diğer uygulamaların verilerine, kendi kapsayıcısı dışındaki dosya sistemine veya kullanıcının açık izni olmadan donanım özelliklerine erişmemelidir.

TestFlight ile IPA testi

TestFlight, uygulamaların beta testi için Apple'ın resmi hizmetidir. Geliştirici, IPA'yı App Store Connect'e yükler ve e-posta veya herkese açık bir bağlantı aracılığıyla test kullanıcılarını davet eder.

İç ve dış test

Internal Testing — geliştirici ekibinin en fazla 100 üyesi. Apple incelemesi gerekmez. External Testing — en fazla 10.000 test kullanıcısı, Beta App Review'u geçmeyi gerektirir. TestFlight, yapıları otomatik olarak test kullanıcılarına dağıtır ve analiz toplar.

TestFlight sınırlamaları

Bir yapı, yüklemeden sonra 90 gün boyunca test için kullanılabilir. TestFlight, aynı anda en fazla 100 aktif yapıyı destekler. Her test kullanıcısı aynı anda en fazla 30 uygulama yükleyebilir. Crashlytics, TestFlight ile entegre olarak çökme raporları ve ölümcül olmayan hataları toplar.

IPA ve Sürekli Entegrasyon

CI ortamında IPA derlemesi bir macOS çalıştırıcısı gerektirir. GitHub Actions, GitLab CI ve Bitrise, iOS derlemeleri için macOS ortamları sağlar. Fastlane'in `build_app` adımı tüm döngüyü otomatikleştirir: arşivleme, imzalama, IPA dışa aktarma ve TestFlight'a yükleme. Sertifikaları ve profilleri yönetmek için, imzaları şifrelenmiş bir Git deposunda saklayan Fastlane aracı Match kullanılır.

IPA ile ilgili tipik sorunlar

Geliştiriciler, IPA derlerken ve imzalarken bir dizi karakteristik hatayla karşılaşır. Çoğu, sertifikaların ve profillerin yanlış yapılandırılmasıyla ilgilidir.

İmza hatası: No matching provisioning profile found

Xcode, bundle ID ve sertifikayla eşleşen bir Provisioning Profile bulamaz. Çözüm — Xcode Accounts → Download Manual Profiles'da güncel profilleri indirin veya Automatic Signing kullanın.

ITMS-90125: The binary is invalid

Bu hata, geçersiz bir mimariyle IPA yüklenirken oluşur. Modern IPA'lar yalnızca arm64 içermelidir. İkili dosyada i386 veya x86_64 bulunması reddedilmeye neden olur. Çözüm — Build Settings'te mimarileri kontrol edin ve simülatör mimarilerini hariç tutun.

Invalid Bundle Structure: The bundle is missing the required .app bundle

IPA, doğru Payload/App.app yapısını içermiyor. Apple kesin bir hiyerarşi bekler. Çözüm — arşivin, düz bir dosya listesi değil, bir .app paketiyle Payload klasörü içerdiğini doğrulayın.

App Store olmadan IPA dağıtımı

Kurumsal dağıtım için Enterprise Apple Developer Programı ($299/yıl) kullanılır. IPA, Enterprise sertifikasıyla imzalanır ve miktar sınırı olmaksızın şirketin herhangi bir cihazına kurulabilir. Ad-hoc dağıtım, geliştirici hesabı başına 100 cihazla sınırlıdır ($99/yıl). MDM (Mobil Cihaz Yönetimi) sistemleri (Jamf ve Microsoft Intune gibi), Enterprise IPA'ların toplu kurulumunu destekler.

Sıkça Sorulan Sorular

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

IPA, DEX yerine Mach-O çalıştırılabilir biçimini kullanır, kurulum için Provisioning Profile gerektirir ve sıkı bir App Store incelemesinden geçer. APK, IPA'nın aksine, aracılar olmadan doğrudan kurulabilir (sideloading).

Windows'ta IPA derlenebilir mi?

Hayır, IPA derlemesi yalnızca macOS'ta bulunan Xcode ve Apple araçlarını gerektirir. Alternatifler: uzak macOS sunucuları (Mac mini, AWS Mac) veya bulut CI hizmetleri (macOS çalıştırıcılı GitHub Actions).

Tipik bir IPA ne kadar yer kaplar?

Basit bir uygulama — 5–30 MB. Orta karmaşıklıkta bir uygulama — 30–150 MB. Oyunlar 4 GB'a ulaşabilir. Apple, hücresel ağ üzerinden indirme boyutunu 200 MB ile sınırlar, ancak kullanıcı Wi-Fi üzerinden indirebilir.

App Store olmadan IPA nasıl kurulur?

Ad-hoc kurulum için Xcode veya Apple Configurator kullanılır. Enterprise uygulamaları, manifest.plist ile dahili bir sunucu aracılığıyla dağıtılır. Normal bir kullanıcı, jailbreak veya TestFlight olmadan IPA kuramaz.

Thin IPA ve Fat IPA nedir?

Fat IPA, evrensel derlemeler için birden çok mimari (arm64 + x86_64) içerir. Thin IPA, belirli bir cihaz için yalnızca bir mimari içerir. Apple, yayın için yalnızca thin IPA kabul eder — fat ikili dosyalar reddedilir.

Özet

  • IPA, Mach-O çalıştırılabilir dosyasıyla ZIP tabanlı bir iOS uygulaması dağıtım biçimidir.
  • Yapı, Payload/.app paketi, Info.plist, imzalar ve Provisioning Profile içerir.
  • Derleme, Swift/Objective-C'nin arm64 makine koduna derlenmesiyle Xcode aracılığıyla yapılır.
  • İmza zorunludur: sertifika + Provisioning Profile + haklar, kurulum sırasında iOS tarafından doğrulanır.
  • Yayın, App Store Review Guidelines kontrolüyle App Store Connect üzerinden yapılır.
  • TestFlight, en fazla 10.000 test kullanıcısı için resmi beta test aracıdır.
  • Sınırlamalar: yalnızca macOS'ta derleme, zorunlu imza, maksimum 4 GB boyut.

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