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 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 یک آرشیو ZIP است که شامل پوشه Payload با .app bundle و اطلاعات است.
| فایل/پوشه | کاربرد |
|---|---|
| Payload/ | پوشه ریشه با .app bundle |
| Payload/App.app/ | Bundle برنامه: فایل قابل اجرا، منابع، nib/storyboard |
| Payload/App.app/Info.plist | اطلاعات: bundle ID، نسخهها، دسترسیها |
| Payload/App.app/embedded.mobileprovision | Provisioning Profile برای نصب |
| iTunesMetadata.plist | اطلاعات برای iTunes (اختیاری) |
| META-INF/ | امضاها و هشها برای تایید |
داخل پوشه Payload bundle برنامه با پسوند .app قرار دارد. این یک فایل نیست، بلکه یک پوشه است که iOS آن را به عنوان یک برنامه شناخته میدهد. داخل آن فایل قابل اجرای Mach-O (نام مطابق نام bundle)، Info.plist، منابع، تصاویر و رشتههای محلیشده قرار دارد.
کد منبع به زبان Swift یا Objective-C به کد ماشین در فرمت Mach-O (Mach Object) تبدیل میشود. فایل شامل بخشهای __TEXT (کد)، __DATA (دادهها) و __LINKEDIT (اطلاعات پیوند) است. IPAهای مدرن تنها شامل معماری 64-بیتی arm64 هستند.
Xcode روند ساخت IPA را از کامپایل نرمافزارها تا ایجاد یک آرشیو امضاشده آماده برای آپلود در App Store Connect خودکار میکند.
Debug — برای توسعه، بدون بهینهسازی. Release — برای انتشار، با بهینهسازیهای کامپایلر. هر شمات علممیانهای کامپایل، امضای کد و entitlements را تعیین میکند. Xcode از طریق منوی Product → Archive یک آرشیو (Archive) ایجاد میکند.
// 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 است. 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 اگر حداقل یک مجزا امضای نامعتبر داشته باشد، برنامه را اجرا نمیکند.
// بررسی امضا از طریق 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
}
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 روز طول میکشد.
در هنگام آپلود IPA به App Store Connect، Apple App Thinning را اعمال میکند — فناوری بهینهسازی فایل بینایی برای دستگاههای مشخص. Slicing منابع را برای وضوحها و معماریهای پشتیبانی نشده از IPA حذف میکند. On-Demand Resources به کاربران اجازه میدهد بخشهایی از برنامه (سطوح بازی، ویدئو) را فقط در صورت درخواست دانلود کنند. Bitcode — یک نمایش وسطی است که Apple میتواند بدون مشارکت توسعهدهنده آن را برای معماریهای جدید دوباره کامپایل کند.
App Store همچنین مطابقت IPA را با نیازمندیهای Sandbox بررسی میکند: برنامه نباید به دادههای سایر برنامهها، سیستم فایل خارج از کانتینر خود و بدون اجازه صریح کاربر به قابلیتهای سخت افزاری دسترسی نداشته باشد.
TestFlight — سرویس رسمی Apple برای آزمایش بتای برنامهها. توسعهدهنده IPA را به App Store Connect آپلود کرده و آزمایشگران را از طریق ایمیل یا لینک عمومی دعوت میکند.
Internal Testing — تا 100 شرکتکننده از تیم توسعهدهنده. نیازی به بررسی Apple ندارد. External Testing — تا 10 000 شرکتکننده، نیازمند طی کردن Beta App Review است. TestFlight به طور خودکار buildها را بین آزمایشگران توزیع کرده و تحلیل جمعآوری میکند.
build برای 90 روز پس از آپلود برای آزمایش در دسترس است. TestFlight حداکثر 100 build فعال را به صورت همزمان پشتیبانی میکند. هر آزمایشگر میتواند حداکثر 30 برنامه را به صورت همزمان نصب کند. Crashlytics برای جمعآوری گزارشهای کراش و خطاهای غیر کشنده با TestFlight همراه میشود.
ساخت IPA در محیط CI نیازمند یک رانر macOS است. GitHub Actions، GitLab CI و Bitrise محیطهای macOS را برای ساختهای iOS فراهم میکنند. Fastlane lane `build_app` کل چرخه را خودکار میکند: بایگانی، امضا، خروجی IPA و آپلود در TestFlight. برای مدیریت گواهینامهها و پروفایلها از Match استفاده میشود — ابزار Fastlane که امضاها را در یک مخزن Git رمزگذاریشده ذخیره میکند.
توسعهدهندگان با یک سری از خطاهای مشخص در ساخت و امضای IPA مواجه میشوند. اکثر آنها به پیکربندی نادرست گواهینامهها و پروفایلها مربوط میشود.
Xcode پروفایلی مطابق bundle ID و گواهینامه را پیدا نمیکند. راه حل — دانلود پروفایلهای جاری در Xcode Accounts → Download Manual Profiles یا استفاده از Automatic Signing.
خطا در هنگام آپلود IPA با معماری نامعتبر رخ میدهد. IPAهای مدرن باید تنها شامل arm64 باشند. وجود i386 یا x86_64 در فایل بینایی منجر به رد میشود. راه حل — بررسی معماریها در Build Settings و حذف معماریهای شبیهساز.
IPA شامل ساختار صحیح Payload/App.app نیست. Apple سلسلهمراتب دقیقی را انتظار دارد. راه حل — بررسی کنید که آرشیو شامل پوشه Payload با یک .app bundle است، نه یک لیست ساده از فایلها.
برای توزیع سازمانی از برنامه Enterprise Apple (۲۹۹ دلار/سال) استفاده میشود. IPA با گواهینامه Enterprise امضا شده و میتواند بدون محدودیت تعداد روی هر دستگاهی از شرکت نصب شود. توزیع ad-hoc به 100 دستگاه به ازای حساب توسعهدهنده (۹۹ دلار/سال) محدود میشود. سیستمهای MDM (Mobile Device Management) مانند Jamf و Microsoft Intune از نصب انبوه Enterprise-IPA پشتیبانی میکنند.
سوالات متداول
IPA از فرمات قابل اجرای Mach-O به جای DEX استفاده میکند، برای نصب به Provisioning Profile نیاز دارد و از بررسی سختگیرانه App Store عبور میکند. APK، بر خلاف IPA، قابل نصب مستقیم بدون واسطه (sideloading) است.
خیر، ساخت IPA نیازمند Xcode و ابزارهای Apple است که فقط روی macOS در دسترس هستند. جایگزینها: سرورهای از راه دور macOS (ماک مینی، AWS Mac) یا خدمات CI ابری (گاگل اکشنهایی با رانر macOS).
برنامه ساده — 5–30 مگابایت. برنامه با پیچیدگی متوسط — 30–150 مگابایت. بازیها میتوانند به 4 گیگابایت برسند. Apple حجم دانلود از طریق شبکه موبایل را به 200 مگابایت محدود میکند، اما کاربر میتواند از طریق Wi-Fi دانلود کند.
برای نصب ad-hoc از Xcode یا Apple Configurator استفاده میشود. برنامههای Enterprise از طریق سرور داخلی با manifest.plist توزیع میشوند. کاربر عادی نمیتواند IPA را بدون jailbreak یا TestFlight نصب کند.
Fat IPA حاوی چندین معماری (arm64 + x86_64) برای ساخت جهانی است. Thin IPA حاوی تنها یک معماری برای یک دستگاه مشخص است. Apple تنها thin IPA را برای انتشار میپذیرد — فایلهای بینایی fat رد میشوند.
نتیجه
ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد
IT Sectr از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید