IPA: bu nima, fayl tuzilishi va ishlash prinsipi

Muallif: IT Sectr Nashr etilgan: 2026-04-15 O'qish vaqti: 8 daq

IPA (iOS App Store Package) — bu iOS-da ilovalarni tarqatish uchun arxiv fayl formati. App Store-ga tushadigan har bir ilova IPA formatidan o‘tadi: ishlab chiquvchi loyihani yig‘adi, imzolaydi va IPA-ni App Store Connect-ga yuklaydi. Apple Developer Documentation, 2026 ma’lumotiga ko‘ra, IPA formati ZIP-ga asoslanadi va bajariladigan Mach-O fayli, resurslar va imzo metama’lumotlarini o‘z ichiga oladi.

Asosiy ma’lumotlar

  • IPA — iOS-ilovalarini App Store va ad-hoc o‘rnatish orqali tarqatish uchun arxiv formati.
  • Tuzilma imzolangan bajariladigan Mach-O fayli, resurslar va Provisioning Profile-ni o‘z ichiga oladi.
  • Imzo — majburiy: to‘g‘ri sertifikat va profilsiz IPA o‘rnatilmaydi.
  • Yig‘ish Xcode orqali turli sxemalar bilan amalga oshiriladi: Debug, Release, Ad-hoc, Enterprise.
  • Arxitekturalar — zamonaviy IPA-lar 32-bitli qurilmalarni qo‘llab-quvvatlamasdan arm64 uchun binar fayllarni o‘z ichiga oladi.

IPA nima va u nima uchun ishlatiladi

IPA (iOS App Store Package) — Apple platformasida ilovalarni tarqatish uchun paket formati. APK singari, texnik jihatdan IPA ZIP arxividir, lekin iOS-ning xavfsizlik va imzo talablari bilan belgilanadigan o‘z tuzilishiga ega.

Format tarixi

IPA formati 2008 yilda iPhone OS 2.0 va App Store bilan birga paydo bo‘ldi. Asos qilib macOS-dan .app paket formati olindi, uzatishda hajmni kamaytirish uchun ZIP-ga joylandi. O‘shandan beri IPA tuzilishi tub o‘zgarishlarga uchramadi — faqat imzo sxemalari va metama’lumotlar o‘zgardi.

Foydalanish stsenariylari

App Store — asosiy kanal. Ad-hoc tarqatish — cheklangan sondagi qurilmalarda (100 tagacha) sinash uchun. Enterprise tarqatish — do‘konda chop etmasdan korporativ ilovalar uchun. Ishlab chiquvchilar, shuningdek, Xcode orqali real qurilmalarda sinash uchun IPA-dan foydalanadilar.

IPA faylining ichki tuzilishi

Ichki tuzilishi — bu Payload papkasini .app bundle va metama’lumotlar bilan o‘z ichiga olgan ZIP arxividir.

Fayl/katalogVazifasi
Payload/.app bundle bilan ildiz papka
Payload/App.app/Ilova bundle: bajariladigan fayl, resurslar, nib/storyboard
Payload/App.app/Info.plistMetama’lumotlar: bundle ID, versiyalar, ruxsatlar
Payload/App.app/embedded.mobileprovisionO‘rnatish uchun Provisioning Profile
iTunesMetadata.plistiTunes uchun metama’lumotlar (ixtiyoriy)
META-INF/Tekshirish uchun imzolar va heshlar

.app bundle

Payload papkasi ichida .app kengaytmali ilova bundle joylashgan. Bu fayl emas, balki iOS ilova sifatida taniydigan katalogdir. Ichida bajariladigan Mach-O fayli (nomi bundle nomi bilan mos keladi), Info.plist, resurslar, tasvirlar va lokalizatsiya qilingan satrlar mavjud.

Mach-O bajariladigan fayli

Swift yoki Objective-C dastur kodi Mach-O (Mach Object) formatida mashina kodiga kompilyatsiya qilinadi. Fayl __TEXT (kod), __DATA (ma’lumotlar) va __LINKEDIT (bog‘lash metama’lumotlari) segmentlarini o‘z ichiga oladi. Zamonaviy IPA-lar faqat 64-bitli arm64 arxitekturasini o‘z ichiga oladi.

Xcode orqali IPA-ni yig‘ish jarayoni

Xcode IPA-ni yig‘ishni avtomatlashtiradi: manba kodlarni kompilyatsiya qilishdan tortib App Store Connect-ga yuklashga tayyor imzolangan arxiv yaratishgacha.

Yig‘ish sxemalari

Debug — ishlab chiqish uchun, optimallashtirishlarsiz. Release — nashr qilish uchun, kompilyator optimallashtirishlari bilan. Har bir sxema kompilyatsiya bayroqlarini, kod imzolashni va entitlements-larni belgilaydi. Xcode Product → Archive menyusi orqali arxiv (Archive) yaratadi.

objective-c
// Info.plist — ilovaning asosiy metama’lumotlari
<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>

Yig‘ish arxitekturasi

Xcode har bir .swift yoki .m faylini ob’ekt fayliga (.o) kompilyatsiya qiladi, so‘ngra ularni bitta Mach-O binar fayliga birlashtiradi. Resurslar (tasvirlar, XIB, storyboard) alohida qayta ishlanadi: storyboard-lar .storyboardc binar formatiga kompilyatsiya qilinadi, tasvirlar Asset Catalog-da (.car) optimallashtiriladi.

IPA imzosi va Provisioning Profile

Imzo — IPA-ning eng murakkab jihati. Apple real qurilmada ishlaydigan har bir ilova uchun raqamli imzo talab qiladi. Tizim ishlab chiquvchi sertifikatini, entitlements-larni va Provisioning Profile-ga muvofiqligini tekshiradi.

Imzo komponentlari

Certificate (Development yoki Distribution) — ishlab chiquvchi shaxsini tasdiqlaydi. Provisioning Profile — sertifikat, bundle ID va ruxsat etilgan qurilmalar ro‘yxatini (ad-hoc uchun) bog‘laydi. Entitlements — ilova ruxsatlari (push-xabarlar, iCloud, App Groups).

Imzolash jarayoni

Xcode .app bundle ichidagi har bir kutubxona va framework-ni imzolaydi, so‘ngra bundle-ning o‘zini imzolaydi. Yakuniy IPA ZIP arxiv darajasida imzolanadi. Apple o‘rnatish vaqtida imzoning barcha darajalarini tekshiradi. iOS agar kamida bitta komponent haqiqiy bo‘lmagan imzoga ega bo‘lsa, ilovani ishga tushirmaydi.

swift
// Security framework orqali imzoni tekshirish
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-ni App Store Connect-da nashr qilish

App Store Connect — Apple-ning ilovalar nashrini boshqarish platformasi. IPA-ni yuklash Xcode Organizer, Transporter yoki buyruq satri orqali xcrun altool bilan amalga oshiriladi.

Yuklash jarayoni

Arxiv yaratilgandan so‘ng, Xcode Distribute App-ni usul tanlash bilan taklif qiladi: App Store Connect, Ad-hoc, Enterprise yoki Development. App Store Connect-ni tanlab, ishlab chiquvchi jamoani ko‘rsatadi va yuklashni tasdiqlaydi. Xcode imzoni tekshiradi, IPA-ni Apple serverlariga yuboradi va qayta ishlash holatini qaytaradi.

Buyruq satri

CI/CD uchun xcrun altool yoki yangiroq notarytool ishlatiladi. Apple macOS ilovalari uchun notarial tasdiqlashni talab qiladi, iOS uchun bu qadam ixtiyoriy, ammo tavsiya etiladi. xcodebuild -exportArchive yuklashga tayyor imzolangan IPA yaratadi.

Apple har bir IPA-ni zararli kod, shaxsiy API-lar va App Store Review Guidelines qoidalariga muvofiqligi uchun tekshiradi. Tekshirish jarayoni 1 soatdan 2 kungacha davom etadi.

App Thinning: qurilmalar uchun IPA-ni optimallashtirish

IPA-ni App Store Connect-ga yuklashda Apple App Thinning-ni qo‘llaydi — binar faylni ma’lum qurilmalar uchun optimallashtirish texnologiyasi. Slicing qo‘llab-quvvatlanmaydigan o‘lchamlar va arxitekturalar uchun resurslarni IPA-dan olib tashlaydi. On-Demand Resources foydalanuvchi so‘roviga binoan ilova qismlarini (o‘yin darajalari, video) yuklab olish imkonini beradi. Bitcode — Apple ishlab chiquvchi ishtirokisiz yangi arxitekturalar uchun qayta kompilyatsiya qilishi mumkin bo‘lgan oraliq tasvirdir.

App Store, shuningdek, IPA-ning Sandbox talablariga muvofiqligini tekshiradi: ilova boshqa ilovalarning ma’lumotlariga, o‘z konteyneridan tashqari fayl tizimiga va foydalanuvchining aniq ruxsatisiz apparat funksiyalariga kirishmasligi kerak.

TestFlight orqali IPA-ni sinash

TestFlight — Apple-ning ilovalarni beta-sinash uchun rasmiy xizmati. Ishlab chiquvchi IPA-ni App Store Connect-ga yuklaydi va sinovchilarni elektron pochta yoki ochiq havola orqali taklif qiladi.

Ichki va tashqi sinov

Internal Testing — ishlab chiquvchi jamoasidan 100 tagacha ishtirokchi. Apple tekshiruvini talab qilmaydi. External Testing — 10 000 tagacha ishtirokchi, Beta App Review-dan o‘tishni talab qiladi. TestFlight avtomatik ravishda build-larni sinovchilar o‘rtasida taqsimlaydi va analitika to‘playdi.

TestFlight cheklovlari

Build yuklanganidan keyin 90 kun davomida sinov uchun mavjud. TestFlight bir vaqtning o‘zida 100 tagacha faol build-ni qo‘llab-quvvatlaydi. Har bir sinovchi bir vaqtning o‘zida 30 tagacha ilovani o‘rnatishi mumkin. Crashlytics halokat hisobotlari va halokatli bo‘lmagan xatolarni yig‘ish uchun TestFlight bilan integratsiyalanadi.

IPA va Continuous Integration

CI muhitida IPA-ni yig‘ish macOS runner talab qiladi. GitHub Actions, GitLab CI va Bitrise iOS yig‘ishlari uchun macOS muhitlarini taqdim etadi. Fastlane lane `build_app` butun siklini avtomatlashtiradi: arxivlash, imzolash, IPA eksporti va TestFlight-ga yuklash. Sertifikatlar va profillarni boshqarish uchun Match ishlatiladi — imzolarni shifrlangan Git omborida saqlaydigan Fastlane vositasi.

IPA bilan odatiy muammolar

Ishlab chiquvchilar IPA-ni yig‘ish va imzolashda bir qator xarakterli xatolarga duch kelishadi. Aksariyati sertifikatlar va profillarning noto‘g‘ri konfiguratsiyasi bilan bog‘liq.

Imzo xatosi: No matching provisioning profile found

Xcode bundle ID va sertifikatga mos Provisioning Profile topmaydi. Yechim — Xcode Accounts → Download Manual Profiles bo‘limida joriy profillarni yuklab olish yoki Automatic Signing dan foydalanish.

ITMS-90125: The binary is invalid

Xato haqiqiy bo‘lmagan arxitekturaga ega IPA-ni yuklashda yuz beradi. Zamonaviy IPA-lar faqat arm64 ni o‘z ichiga olishi kerak. Binar faylda i386 yoki x86_64 mavjudligi rad etilishga olib keladi. Yechim — Build Settings-da arxitekturalarni tekshirish va simulyator arxitekturalarini chiqarib tashlash.

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

IPA to‘g‘ri Payload/App.app tuzilishini o‘z ichiga olmaydi. Apple aniq ierarxiyani kutadi. Yechim — arxiv bitta .app bundle bilan Payload papkasini o‘z ichiga olganligini, tekis fayllar ro‘yxati emasligini tekshirish.

App Storesiz IPA tarqatish

Korporativ tarqatish uchun Apple-ning Enterprise dasturi ishlatiladi (299 USD/yil). IPA Enterprise sertifikati bilan imzolanadi va son cheklovisiz kompaniyaning istalgan qurilmasiga o‘rnatilishi mumkin. Ad-hoc tarqatish ishlab chiquvchi hisobi uchun (99 USD/yil) 100 qurilma bilan cheklangan. Jamf va Microsoft Intune kabi MDM (Mobile Device Management) tizimlari Enterprise-IPA-ni ommaviy o‘rnatishni qo‘llab-quvvatlaydi.

Tez-tez beriladigan savollar

IPA APK-dan qanday farq qiladi?

IPA DEX o‘rniga Mach-O bajariladigan formatidan foydalanadi, o‘rnatish uchun Provisioning Profile talab qiladi va App Store-ning qat’iy tekshiruvidan o‘tadi. APK, IPA-dan farqli o‘laroq, vositachilarsiz to‘g‘ridan-to‘g‘ri o‘rnatilishi mumkin (sideloading).

Windows-da IPA yig‘ish mumkinmi?

Yo‘q, IPA yig‘ish faqat macOS-da mavjud bo‘lgan Xcode va Apple vositalarini talab qiladi. Muqobil: uzoq macOS serverlari (Mac min, AWS Mac) yoki bulutli CI xizmatlari (macOS runner bilan GitHub Actions).

Oddiy IPA qancha og‘irlikda?

Oddiy ilova — 5–30 MB. O‘rta murakkablikdagi ilova — 30–150 MB. O‘yinlar 4 GB ga yetishi mumkin. Apple mobil tarmoq orqali yuklash hajmini 200 MB bilan cheklaydi, ammo foydalanuvchi Wi-Fi orqali yuklab olishi mumkin.

App Storesiz IPA-ni qanday o‘rnatish mumkin?

Ad-hoc o‘rnatish uchun Xcode yoki Apple Configurator ishlatiladi. Enterprise ilovalari manifest.plist bilan ichki server orqali tarqatiladi. Oddiy foydalanuvchi jailbreak yoki TestFlightsiz IPA o‘rnata olmaydi.

Thin IPA va fat IPA nima?

Fat IPA universal yig‘ish uchun bir nechta arxitekturalarni (arm64 + x86_64) o‘z ichiga oladi. Thin IPA ma’lum bir qurilma uchun faqat bitta arxitekturadan iborat. Apple nashr qilish uchun faqat thin IPA-ni qabul qiladi — fat binar fayllari rad etiladi.

Xulosa

  • IPA — Mach-O bajariladigan fayli bilan ZIP-ga asoslangan iOS ilovalarini tarqatish formati.
  • Tuzilma Payload/.app bundle, Info.plist, imzolar va Provisioning Profile-ni o‘z ichiga oladi.
  • Yig‘ish Swift/Objective-C-ni arm64 mashina kodiga kompilyatsiya qilish bilan Xcode orqali amalga oshiriladi.
  • Imzo majburiy: sertifikat + Provisioning Profile + entitlements iOS tomonidan o‘rnatish vaqtida tekshiriladi.
  • Nashr Apple Review Guidelines tekshiruvi bilan App Store Connect orqali amalga oshiriladi.
  • TestFlight — 10 000 ishtirokchigacha beta-sinash uchun rasmiy vosita.
  • Cheklovlar: faqat macOS-da yig‘ish, majburiy imzo, maksimal 4 GB hajm.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing