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 (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.
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.
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.
Bir IPA'nın iç yapısı, .app paketiyle birlikte Payload klasörü ve meta veriler içeren bir ZIP arşividir.
| Dosya/Dizin | Amaç |
|---|---|
| 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.plist | Meta veriler: bundle ID, sürümler, izinler |
| Payload/App.app/embedded.mobileprovision | Kurulum için Provisioning Profile |
| iTunesMetadata.plist | iTunes meta verileri (isteğe bağlı) |
| META-INF/ | Doğrulama için imzalar ve karmalar |
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.
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, IPA derlemesini otomatikleştirir: kaynak kodun derlenmesinden App Store Connect'e yüklemeye hazır imzalı bir arşiv oluşturmaya kadar.
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.
// 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>
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.
İ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.
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).
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.
// 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
}
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.
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.
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.
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, 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.
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.
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.
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.
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.
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.
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.
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.
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, 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).
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).
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.
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.
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
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.
Ayrıca okuyun