IPA: چیست، ساختار فایل و اصل کارکرد

نویسنده: IT Sectr منتشر شده: 2026-04-15 زمان مطالعه: 8 دقیقه

IPA (iOS App Store Package) یک فرمت فایل آرشیوی برای توزیع برنامه‌های iOS است. هر برنامه‌ای که وارد App Store می‌شود، از فرمت IPA عبور می‌کند: توسعه‌دهنده پروژه را ساخته، امضا کرده و IPA را به App Store Connect آپلود می‌کند. به گزارش Apple Developer Documentation, 2026، فرمت IPA بر پایه ZIP است و شامل فایل قابل اجرای Mach-O، منابع و اطلاعات امضا می‌باشد.

نکات کلیدی

  • IPA — فرمت آرشیو برای توزیع برنامه‌های iOS از طریق App Store و نصب ad-hoc.
  • ساختار شامل فایل قابل اجرای Mach-O امضاشده، منابع و Provisioning Profile است.
  • امضا — اجباری است: بدون گواهینامه و پروفایل مناسب، IPA نصب نمی‌شود.
  • ساخت از طریق Xcode با پشتیبانی از شمات مختلف انجام می‌شود: Debug، Release، Ad-hoc، Enterprise.
  • معماری‌ها — IPA‌های مدرن حاوی فایل‌های بینایی برای arm64 بدون پشتیبانی از دستگاه‌های 32-بیتی هستند.

IPA چیست و برای چه استفاده می‌شود

IPA (iOS App Store Package) یک فرمت بسته برای توزیع برنامه‌ها در پلتفرم Apple است. همانند APK، از نظر فنی IPA یک آرشیو ZIP است، اما با ساختار مخصوص خود که توسط نیازمندی‌های امنیتی و امضای iOS تعیین شده است.

تاریخچه فرمت

فرمت IPA همراه با iPhone OS 2.0 در سال 2008 و App Store ظاهر شد. فرمات بسته .app از macOS که برای کاهش اندازه در انتقال در ZIP پیچیده شده بود، به عنوان مبنا در نظر گرفته شد. از آن زمان، ساختار IPA تغییرات اساسی نداشته است — تنها شمات‌های امضا و اطلاعات تغییر کرده‌اند.

سناریوهای استفاده

App Store — کانال اصلی. توزیع ad-hoc — برای آزمایش بر روی تعداد محدودی از دستگاه‌ها (تا 100). توزیع Enterprise — برای برنامه‌های سازمانی بدون انتشار در فروشگاه. توسعه‌دهندگان همچنین از IPA برای آزمایش روی دستگاه‌های واقعی از طریق Xcode استفاده می‌کنند.

ساختار داخلی فایل IPA

ساختار داخلی IPA یک آرشیو ZIP است که شامل پوشه Payload با .app bundle و اطلاعات است.

فایل/پوشهکاربرد
Payload/پوشه ریشه با .app bundle
Payload/App.app/Bundle برنامه: فایل قابل اجرا، منابع، nib/storyboard
Payload/App.app/Info.plistاطلاعات: bundle ID، نسخه‌ها، دسترسی‌ها
Payload/App.app/embedded.mobileprovisionProvisioning Profile برای نصب
iTunesMetadata.plistاطلاعات برای iTunes (اختیاری)
META-INF/امضاها و هش‌ها برای تایید

Bundle .app

داخل پوشه Payload bundle برنامه با پسوند .app قرار دارد. این یک فایل نیست، بلکه یک پوشه است که iOS آن را به عنوان یک برنامه شناخته می‌دهد. داخل آن فایل قابل اجرای Mach-O (نام مطابق نام bundle)، Info.plist، منابع، تصاویر و رشته‌های محلی‌شده قرار دارد.

فایل قابل اجرای Mach-O

کد منبع به زبان Swift یا Objective-C به کد ماشین در فرمت Mach-O (Mach Object) تبدیل می‌شود. فایل شامل بخش‌های __TEXT (کد)، __DATA (داده‌ها) و __LINKEDIT (اطلاعات پیوند) است. IPA‌های مدرن تنها شامل معماری 64-بیتی arm64 هستند.

فرآیند ساخت IPA از طریق Xcode

Xcode روند ساخت IPA را از کامپایل نرم‌افزارها تا ایجاد یک آرشیو امضاشده آماده برای آپلود در App Store Connect خودکار می‌کند.

شمات‌های ساخت

Debug — برای توسعه، بدون بهینه‌سازی. Release — برای انتشار، با بهینه‌سازی‌های کامپایلر. هر شمات علممیان‌های کامپایل، امضای کد و entitlements را تعیین می‌کند. Xcode از طریق منوی Product → Archive یک آرشیو (Archive) ایجاد می‌کند.

objective-c
// Info.plist — اطلاعات پایه برنامه
<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 هر فایل .swift یا .m را به یک فایل شییی (.o) کامپایل می‌کند، سپس آن‌ها را به یک فایل بینایی واحد Mach-O وصل می‌کند. منابع (تصاویر، XIB، storyboard) به صورت جداگانه پردازش می‌شوند: storyboard‌ها به فرمت بینایی .storyboardc کامپایل می‌شوند، تصاویر در Asset Catalog (.car) بهینه می‌شوند.

امضای IPA و Provisioning Profile

امضا — پیچیده‌ترین جنبه IPA است. Apple برای هر برنامه‌ای که روی دستگاه واقعی اجرا می‌شود، امضای رقومی می‌خواهد. سیستم گواهینامه توسعه‌دهنده، entitlements و مطابقت با Provisioning Profile را بررسی می‌کند.

جزءیات امضا

Certificate (Development یا Distribution) — هویت توسعه‌دهنده را تایید می‌کند. Provisioning Profile — گواهینامه، bundle ID و لیست دستگاه‌های مجاز (برای ad-hoc) را به هم متصل می‌کند. Entitlements — دسترسی‌های برنامه (اعلان‌های push، iCloud، App Groups).

فرآیند امضا

Xcode هر کتابخانه و چارچوبی داخل .app bundle را امضا می‌کند، سپس خود bundle را امضا می‌کند. IPA نهایی در سطح آرشیو ZIP امضا می‌شود. Apple همه سطوح امضا را در هنگام نصب بررسی می‌کند. iOS اگر حداقل یک مجزا امضای نامعتبر داشته باشد، برنامه را اجرا نمی‌کند.

swift
// بررسی امضا از طریق Security framework
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 در App Store Connect

App Store Connect — پلتفرم Apple برای مدیریت انتشار برنامه‌ها. آپلود IPA از طریق Xcode Organizer، Transporter یا خط فرمان با xcrun altool انجام می‌شود.

فرآیند آپلود

پس از ایجاد آرشیو، Xcode Distribute App را با انتخاب روش ارائه می‌دهد: App Store Connect، Ad-hoc، Enterprise یا Development. با انتخاب App Store Connect، توسعه‌دهنده تیم را مشخص کرده و آپلود را تایید می‌کند. Xcode امضا را بررسی کرده، IPA را به سرورهای Apple ارسال و وضعیت پردازش را بازمی‌گرداند.

خط فرمان

برای CI/CD از xcrun altool یا notarytool جدیدتر استفاده می‌شود. Apple برای برنامه‌های macOS تصدیق محضری نیاز دارد، برای iOS این مرحله اختیاری است اما توصیه می‌شود. xcodebuild -exportArchive یک IPA امضاشده آماده برای آپلود ایجاد می‌کند.

Apple هر IPA را از نظر کدهای مضر، API‌های خصوصی و مطابقت با قوانین App Store Review Guidelines بررسی می‌کند. فرآیند بررسی از 1 ساعت تا 2 روز طول می‌کشد.

App Thinning: بهینه‌سازی IPA برای دستگاه‌ها

در هنگام آپلود IPA به App Store Connect، Apple App Thinning را اعمال می‌کند — فناوری بهینه‌سازی فایل بینایی برای دستگاه‌های مشخص. Slicing منابع را برای وضوح‌ها و معماری‌های پشتیبانی نشده از IPA حذف می‌کند. On-Demand Resources به کاربران اجازه می‌دهد بخش‌هایی از برنامه (سطوح بازی، ویدئو) را فقط در صورت درخواست دانلود کنند. Bitcode — یک نمایش وسطی است که Apple می‌تواند بدون مشارکت توسعه‌دهنده آن را برای معماری‌های جدید دوباره کامپایل کند.

App Store همچنین مطابقت IPA را با نیازمندی‌های Sandbox بررسی می‌کند: برنامه نباید به داده‌های سایر برنامه‌ها، سیستم فایل خارج از کانتینر خود و بدون اجازه صریح کاربر به قابلیت‌های سخت افزاری دسترسی نداشته باشد.

آزمایش IPA از طریق TestFlight

TestFlight — سرویس رسمی Apple برای آزمایش بتای برنامه‌ها. توسعه‌دهنده IPA را به App Store Connect آپلود کرده و آزمایشگران را از طریق ایمیل یا لینک عمومی دعوت می‌کند.

آزمایش داخلی و خارجی

Internal Testing — تا 100 شرکت‌کننده از تیم توسعه‌دهنده. نیازی به بررسی Apple ندارد. External Testing — تا 10 000 شرکت‌کننده، نیازمند طی کردن Beta App Review است. TestFlight به طور خودکار buildها را بین آزمایشگران توزیع کرده و تحلیل جمع‌آوری می‌کند.

محدودیت‌های TestFlight

build برای 90 روز پس از آپلود برای آزمایش در دسترس است. TestFlight حداکثر 100 build فعال را به صورت همزمان پشتیبانی می‌کند. هر آزمایشگر می‌تواند حداکثر 30 برنامه را به صورت همزمان نصب کند. Crashlytics برای جمع‌آوری گزارش‌های کراش و خطاهای غیر کشنده با TestFlight همراه می‌شود.

IPA و Continuous Integration

ساخت IPA در محیط CI نیازمند یک رانر macOS است. GitHub Actions، GitLab CI و Bitrise محیط‌های macOS را برای ساختهای iOS فراهم می‌کنند. Fastlane lane `build_app` کل چرخه را خودکار می‌کند: بایگانی، امضا، خروجی IPA و آپلود در TestFlight. برای مدیریت گواهینامه‌ها و پروفایل‌ها از Match استفاده می‌شود — ابزار Fastlane که امضاها را در یک مخزن Git رمزگذاری‌شده ذخیره می‌کند.

مشکلات رایج با IPA

توسعه‌دهندگان با یک سری از خطاهای مشخص در ساخت و امضای IPA مواجه می‌شوند. اکثر آنها به پیکربندی نادرست گواهینامه‌ها و پروفایل‌ها مربوط می‌شود.

خطای امضا: No matching provisioning profile found

Xcode پروفایلی مطابق bundle ID و گواهینامه را پیدا نمی‌کند. راه حل — دانلود پروفایل‌های جاری در Xcode Accounts → Download Manual Profiles یا استفاده از Automatic Signing.

ITMS-90125: The binary is invalid

خطا در هنگام آپلود IPA با معماری نامعتبر رخ می‌دهد. IPA‌های مدرن باید تنها شامل arm64 باشند. وجود i386 یا x86_64 در فایل بینایی منجر به رد می‌شود. راه حل — بررسی معماری‌ها در Build Settings و حذف معماری‌های شبیه‌ساز.

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

IPA شامل ساختار صحیح Payload/App.app نیست. Apple سلسله‌مراتب دقیقی را انتظار دارد. راه حل — بررسی کنید که آرشیو شامل پوشه Payload با یک .app bundle است، نه یک لیست ساده از فایل‌ها.

توزیع IPA بدون App Store

برای توزیع سازمانی از برنامه Enterprise Apple (۲۹۹ دلار/سال) استفاده می‌شود. IPA با گواهینامه Enterprise امضا شده و می‌تواند بدون محدودیت تعداد روی هر دستگاهی از شرکت نصب شود. توزیع ad-hoc به 100 دستگاه به ازای حساب توسعه‌دهنده (۹۹ دلار/سال) محدود می‌شود. سیستم‌های MDM (Mobile Device Management) مانند Jamf و Microsoft Intune از نصب انبوه Enterprise-IPA پشتیبانی می‌کنند.

سوالات متداول

IPA چه تفاوتی با APK دارد؟

IPA از فرمات قابل اجرای Mach-O به جای DEX استفاده می‌کند، برای نصب به Provisioning Profile نیاز دارد و از بررسی سختگیرانه App Store عبور می‌کند. APK، بر خلاف IPA، قابل نصب مستقیم بدون واسطه (sideloading) است.

آیا می‌توان IPA را روی Windows ساخت؟

خیر، ساخت IPA نیازمند Xcode و ابزارهای Apple است که فقط روی macOS در دسترس هستند. جایگزین‌ها: سرورهای از راه دور macOS (ماک مینی، AWS Mac) یا خدمات CI ابری (گاگل اکشن‌هایی با رانر macOS).

یک IPA تیپیک چقدر حجم دارد؟

برنامه ساده — 5–30 مگابایت. برنامه با پیچیدگی متوسط — 30–150 مگابایت. بازی‌ها می‌توانند به 4 گیگابایت برسند. Apple حجم دانلود از طریق شبکه موبایل را به 200 مگابایت محدود می‌کند، اما کاربر می‌تواند از طریق Wi-Fi دانلود کند.

چگونه IPA را بدون App Store نصب کنیم؟

برای نصب ad-hoc از Xcode یا Apple Configurator استفاده می‌شود. برنامه‌های Enterprise از طریق سرور داخلی با manifest.plist توزیع می‌شوند. کاربر عادی نمی‌تواند IPA را بدون jailbreak یا TestFlight نصب کند.

thin IPA و fat IPA چیست؟

Fat IPA حاوی چندین معماری (arm64 + x86_64) برای ساخت جهانی است. Thin IPA حاوی تنها یک معماری برای یک دستگاه مشخص است. Apple تنها thin IPA را برای انتشار می‌پذیرد — فایل‌های بینایی fat رد می‌شوند.

نتیجه

  • IPA — فرمات توزیع برنامه‌های iOS بر پایه ZIP با فایل قابل اجرای Mach-O.
  • ساختار شامل Payload/.app bundle، Info.plist، امضاها و Provisioning Profile است.
  • ساخت از طریق Xcode با کامپایل Swift/Objective-C به کد ماشین arm64 انجام می‌شود.
  • امضا اجباری است: گواهینامه + Provisioning Profile + entitlements توسط iOS در هنگام نصب بررسی می‌شود.
  • انتشار از طریق App Store Connect با بررسی Apple Review Guidelines انجام می‌شود.
  • TestFlight — ابزار رسمی آزمایش بتا برای تا 10 000 شرکت‌کننده.
  • محدودیت‌ها: ساخت فقط روی macOS، امضای اجباری، حداکثر 4 گیگابایت حجم.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید