IPA (iOS App Store Package) iOS-da tətbiqlərin yayılması üçün arxiv fayl formatıdır. App Store-a daxil olan hər bir tətbiq IPA formatından keçir: tərtibatçı layihəni yığır, imzalayır və IPA-nı App Store Connect-ə yükləyir. Apple Developer Documentation, 2026-ya görə, IPA formatı ZIP-ə əsaslanır və icra olunan Mach-O faylı, resurslar və imza metadatanlarını ehtiva edir.
Başlıca məqamlar
IPA (iOS App Store Package) Apple platformasında tətbiqlərin yayılması üçün paket formatıdır. APK kimi, texniki olaraq IPA ZIP arxividir, lakin iOS-un təhlükəsizlik və imza tələbləri ilə müəyyən edilmiş öz strukturu ilə.
IPA formatı 2008-ci ildə iPhone OS 2.0 və App Store ilə birlikdə ortaya çıxdı. Əsas olaraq ötürmə zamanı ölçünü azaltmaq üçün ZIP-ə yığılmış macOS-dan .app paket formatı götürüldü. O vaxtdan bəri IPA strukturu köklü dəyişikliklərə məruz qalmamışdır — yalnız imza sxemləri və metadatanlar dəyişmişdir.
App Store — əsas kanal. Ad-hoc yayılma — məhdud sayda cihazda (100-ə qədər) sınaq üçün. Enterprise yayılma — mağazada dərc edilmədən korporativ tətbiqlər üçün. Tərtibatçılar həmçinin Xcode vasitəsilə real cihazlarda sınaq üçün IPA-dan istifadə edirlər.
Daxili strukturu Payload qovluğunu .app bundle və metadatanlarla ehtiva edən ZIP arxividir.
| Fayl/kataloq | Təyinat |
|---|---|
| Payload/ | .app bundle ilə kök qovluq |
| Payload/App.app/ | Tətbiq bundle-ı: icra olunan fayl, resurslar, nib/storyboard |
| Payload/App.app/Info.plist | Metadatanlar: bundle ID, versiyalar, icazələr |
| Payload/App.app/embedded.mobileprovision | Quraşdırma üçün Provisioning Profile |
| iTunesMetadata.plist | iTunes üçün metadatanlar (istəyə bağlı) |
| META-INF/ | Doğrulama üçün imzalar və heşlər |
Payload qovluğunun içərisində .app genişlənməsi olan tətbiq bundle-ı yerləşir. Bu fayl deyil, iOS-un tətbiq kimi tanıdığı bir kataloqdur. İçərisində icra olunan Mach-O faylı (adı bundle adı ilə üst-üstə düşür), Info.plist, resurslar, şəkillər və lokalizasiya olunmuş sətrlər var.
Swift və ya Objective-C mənbə kodu Mach-O (Mach Object) formatında maşin koduna tərtib edilir. Fayl __TEXT (kod), __DATA (məlumatlar) və __LINKEDIT (link metadatanları) seqmentlərini ehtiva edir. Müasir IPA-lar yalnız 64-bitli arm64 arxitekturasını ehtiva edir.
Xcode IPA-nın yığılmasını avtomatlaşdırır: mənbələrin tərtibindən App Store Connect-ə yüklənməyə hazır imzalanmış arxiv yaratmağa qədər.
Debug — işlənmə üçün, optimallaşdırma olmadan. Release — nəşr üçün, tərtibedici optimallaşdırmaları ilə. Hər bir sxem tərtib bayraqlarını, kod imzasını və entitlements-ləri müəyyən edir. Xcode Product → Archive menyusu vasitəsilə arxiv (Archive) yaradır.
// Info.plist — tətbiqin əsas metadatanları
<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 hər bir .swift və ya .m faylını obyekt faylına (.o) tərtib edir, sonra onları vahid Mach-O binar faylına birləşdirir. Resurslar (şəkillər, XIB, storyboard) ayrıca emal olunur: storyboard-lar .storyboardc binar formatına tərtib edilir, şəkillər Asset Catalog-da (.car) optimallaşdırılır.
İmza — IPA-nın ən çətin aspektidir. Apple real cihazda işləyən hər bir tətbiq üçün rəqəmsal imza tɓləb edir. Sistem tərtibatçının sertifikatını, entitlements-ləri və Provisioning Profile-ə uyğunluğu yoxlayır.
Certificate (Development və ya Distribution) — tərtibatçının şəxsiyyətini təsdiqləyir. Provisioning Profile — sertifikatı, bundle ID-ni və icazə verilən cihazların siyahısını (ad-hoc üçün) birləşdirir. Entitlements — tətbiqin icazələri (push bildirişləri, iCloud, App Groups).
Xcode .app bundle içərisində hər bir kitabxana və framework-ü imzalayır, sonra bundle-ın özünü imzalayır. Yekun IPA ZIP arxiv səviyyəsində imzalanır. Apple quraşdırma zamanı imzanın bütün səviyyələrini yoxlayır. iOS ən azı bir komponent etibarsız imzaya malikdirsə, tətbiqi işə salmır.
// Security framework vasitəsilə imzanın yoxlanılması
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 — Apple-ın tətbiqlərin nəşrini idarə etmək üçün platforması. IPA-nın yüklənməsi Xcode Organizer, Transporter və ya əmr sətri vasitəsilə xcrun altool ilə həyata keçirilir.
Arxiv yaradıldıqdan sonra Xcode metod seçimi ilə Distribute App təklif edir: App Store Connect, Ad-hoc, Enterprise və ya Development. App Store Connect seçildikdə, tərtibatçı komandanı göstərir və yükləməni təsdiqləyir. Xcode imzanı yoxlayır, IPA-nı Apple serverlərinə göndərir və emal statusunu qaytarır.
CI/CD üçün xcrun altool və ya daha yeni notarytool istifadə olunur. Apple macOS tətbiqləri üçün notarial təsdiq tələb edir, iOS üçün bu addım isteğə bağlıdır, lakin tövsiyə olunur. xcodebuild -exportArchive yükləməyə hazır imzalanmış IPA yaradır.
Apple hər bir IPA-nı zə13rli kod, şəxsi API və App Store Review Guidelines qaydalarına uyğunluq baxımından yoxlayır. Yoxlama prosesi 1 saatdan 2 günə qədər davam edir.
IPA App Store Connect-ə yüklərkən, Apple App Thinning tətbiq edir — binar faylın müəyyən cihazlar üçün optimallaşdırılması texnologiyası. Slicing dəstəklənməyən ölçülər və arxitekturalar üçün resursları IPA-dan çıxarır. On-Demand Resources istifadəçinin tələbi ilə tətbiqin hissələrini (oyun səviyyələri, video) yükləməyə imkan verir. Bitcode — Apple-ın tərtibatçının iştirakı olmadan yeni arxitekturalar üçün yenidən tərtib edə biləcəyi aralıq təsvirdir.
App Store həmçinin IPA-nın Sandbox tələblərinə uyğunluğunu yoxlayır: tətbiq digər tətbiqlərin məlumatlarına, öz konteynerindən kənar fayl sisteminə və istifadəçinin açıq icazəsi olmadan aparat funksiyalarına daxil olmamalıdır.
TestFlight — Apple-ın tətbiqlərin beta-test edilməsi üçün rəsmi xidməti. Tərtibatçı IPA-nı App Store Connect-ə yükləyir və testçiləri e-poçt və ya açıq keçid vasitəsilə dəvət edir.
Internal Testing — tərtibatçı qrupundan 100-ə qədər iştirakçı. Apple yoxlaması tələb etmir. External Testing — 10 000-ə qədər iştirakçı, Beta App Review-dan keçmə tələb edir. TestFlight avtomatik olaraq build-ləri testçilər arasında paylayır və analitika toplayır.
Build yükləndikdən sonra 90 gün müddətində test üçün mövcuddur. TestFlight eyni anda 100-ə qədər aktiv build-i dəstəkləyir. Hər bir testçi eyni anda 30 tətbiqə qədər quraşdıra bilər. Crashlytics çökmə hesabatları və qeyri-ölümcül səhvlər toplamaq üçün TestFlight ilə inteqrasiya olunur.
CI mühitində IPA-nın yığılması macOS runner tələb edir. GitHub Actions, GitLab CI və Bitrise iOS yığmaları üçün macOS mühitləri təmin edir. Fastlane lane `build_app` bütün dövranı avtomatlaşdırır: arxivləşdirmə, imza, IPA ixracı və TestFlight-ə yükləmə. Sertifikatlar və profillərin idarə edilməsi üçün Match istifadə olunur — imzaları şifrələnmiş Git repozitoriyasında saxlayan Fastlane aləti.
Tərtibatçılar IPA-nın yığılması və imzalanması zamanı bir sıra xarakterik səhvlərlə qarşılaşırlar. Əksəriyyəti sertifikatların və profillərin düzgün konfiqurasiya edilməməsi ilə bağlıdır.
Xcode bundle ID və sertifikata uyğun Provisioning Profile tapmır. Həll — Xcode Accounts → Download Manual Profiles bölməsində cari profilləri yükləmək və ya Automatic Signing istifadə etmək.
Səhv etibarsız arxitekturaya malik IPA yüklərkən baş verir. Müasir IPA-lar yalnız arm64 ehtiva etməlidir. Binar faylda i386 və ya x86_64 olması rədd edilməyə səbəb olur. Həll — Build Settings-də arxitekturaları yoxlamaq və simulyator arxitekturalarını çıxarmaq.
IPA düzgün Payload/App.app strukturunu ehtiva etmir. Apple dəqiq iyerarxiya gözləyir. Həll — arxivin bir .app bundle ilə Payload qovluğunu ehtiva etdiyini, yoxsa düz fayl siyahısı olmadığını yoxlamaq.
Korporativ yayılma üçün Apple-ın Enterprise proqramı istifadə olunur (299 USD/il). IPA Enterprise sertifikatı ilə imzalanır və say məhdudiyyəti olmadan şirkətin istənilən cihazında quraşdırıla bilər. Ad-hoc yayılma tərtibatçı hesabına (99 USD/il) 100 cihazla məhdudlaşdırılıb. Jamf və Microsoft Intune kimi MDM (Mobile Device Management) sistemləri Enterprise-IPA-nın kütləvi quraşdırılmasını dəstəkləyir.
Tez-tez verilən suallar
IPA DEX əvəzinə Mach-O icra formatından istifadə edir, quraşdırma üçün Provisioning Profile tələb edir və App Store-un ciddi yoxlamasından keçir. APK, IPA-dan fərqli olaraq, vasitəçilər olmadan birbaşa quraşdırıla bilər (sideloading).
Xeyr, IPA-nın yığılması yalnız macOS-da mövcud olan Xcode və Apple alətlərini tələb edir. Alternativlər: uzaq macOS serverləri (Mac min, AWS Mac) və ya bulud CI xidmətləri (macOS runner ilə GitHub Actions).
Sadə tətbiq — 5–30 MB. Orta mürəkkəblikli tətbiq — 30–150 MB. Oyunlar 4 GB-a çata bilər. Apple mobil şəbəkə ilə yükləmə ölçüsünü 200 MB ilə məhdudlaşdırır, lakin istifadəçi Wi-Fi vasitəsilə yükləyə bilər.
Ad-hoc quraşdırma üçün Xcode və ya Apple Configurator istifadə olunur. Enterprise tətbiqləri manifest.plist ilə daxili server vasitəsilə yayılır. Adi istifadəçi jailbreak və ya TestFlight olmadan IPA quraşdıra bilməz.
Fat IPA universal yığma üçün bir neçə arxitektura (arm64 + x86_64) ehtiva edir. Thin IPA müəyyən bir cihaz üçün yalnız bir arxitekturanı ehtiva edir. Apple nəşr üçün yalnız thin IPA qəbul edir — fat binar faylları rədd olunur.
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