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 وبيانات وصفية.
| ملف/مجلد | الغرض |
|---|---|
| Payload/ | المجلد الجذر الذي يحتوي على حزمة .app |
| Payload/App.app/ | حزمة التطبيق: ملف قابل للتنفيذ، موارد، nib/storyboard |
| Payload/App.app/Info.plist | البيانات الوصفية: bundle ID، الإصدارات، الأذونات |
| Payload/App.app/embedded.mobileprovision | ملف Provisioning Profile للتثبيت |
| iTunesMetadata.plist | بيانات iTunes الوصفية (اختياري) |
| META-INF/ | التوقيعات وقيم التجزئة للتحقق |
داخل مجلد Payload توجد حزمة التطبيق بامتداد .app. هذا ليس ملفًا بل مجلدًا يتعرف عليه iOS كتطبيق. في داخله: ملف Mach-O القابل للتنفيذ (الاسم يطابق اسم الحزمة)، Info.plist، موارد، صور ونصوص مترجمة.
يتم تجميع الكود المصدري في Swift أو Objective-C إلى كود آلة بتنسيق Mach-O (Mach Object). يحتوي الملف على أجزاء __TEXT (كود)، __DATA (بيانات) و__LINKEDIT (بيانات الربط). IPA الحديثة تحتوي فقط على بنية arm64 64 بت.
Xcode يؤتمت بناء IPA: من تجميع الكود المصدري إلى إنشاء أرشيف موقع جاهز للرفع إلى App Store Connect.
Debug — للتطوير، بدون تحسينات. Release — للنشر، مع تحسينات المترجم. كل مخطط يحدد علامات التجميع وتوقيع الكود والصلاحيات. Xcode ينشئ أرشيفًا (Archive) عبر Product → 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) بشكل منفصل: يتم تجميع القصص المصورة إلى تنسيق ثنائي .storyboardc، ويتم تحسين الصور في Asset Catalog (.car).
التوقيع هو أكثر جوانب IPA تعقيدًا. Apple تتطلب توقيعًا رقميًا لأي تطبيق يتم تشغيله على جهاز حقيقي. يتحقق النظام من شهادة المطور والصلاحيات وتوافق Provisioning Profile.
الشهادة (Development أو Distribution) — تثبت هوية المطور. Provisioning Profile — يربط الشهادة وbundle ID وقائمة الأجهزة المسموح بها (للتوزيع المباشر). الصلاحيات — أذونات التطبيق (إشعارات الدفع، iCloud، مجموعات التطبيقات).
Xcode يوقع كل مكتبة وإطار داخل حزمة .app، ثم يوقع الحزمة نفسها. يتم توقيع IPA النهائي على مستوى أرشيف ZIP. Apple تتحقق من جميع مستويات التوقيع أثناء التثبيت. iOS لا يشغل التطبيق إذا كان حتى مكون واحد لديه توقيع غير صالح.
// التحقق من التوقيع عبر إطار Security
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 بحثًا عن كود ضار وواجهات برمجية خاصة والامتثال لإرشادات مراجعة App Store. تستغرق عملية المراجعة من ساعة إلى يومين.
عند رفع IPA إلى App Store Connect، Apple تطبق App Thinning — تقنية تحسن الملف الثنائي لأجهزة محددة. Slicing يزيل الموارد للدقات والهياكل غير المدعومة. 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 يوزع الإصدارات تلقائيًا على المختبرين ويجمع التحليلات.
الإصدار متاح للاختبار لمدة 90 يومًا بعد الرفع. TestFlight يدعم حتى 100 إصدار نشط في نفس الوقت. كل مختبر يمكنه تثبيت حتى 30 تطبيقًا في وقت واحد. Crashlytics يتكامل مع TestFlight لجمع تقارير الأعطال والأخطاء غير المميتة.
بناء IPA في بيئة CI يتطلب خادم macOS. GitHub Actions وGitLab CI وBitrise توفر بيئات macOS لبناءات iOS. Fastlane lane `build_app` يؤتمت الدورة بأكملها: الأرشفة والتوقيع وتصدير IPA والرفع إلى TestFlight. لإدارة الشهادات والملفات التعريفية يُستخدم Match — أداة Fastlane تخزن التوقيعات في مستودع Git مشفر.
المطورون يواجهون عددًا من الأخطاء المميزة عند بناء وتوقيع IPA. معظمها مرتبط بتكوين غير صحيح للشهادات والملفات التعريفية.
Xcode لا يجد ملف Provisioning Profile مطابقًا لـ bundle ID والشهادة. الحل — تنزيل الملفات التعريفية الحالية في Xcode Accounts ← Download Manual Profiles أو استخدام Automatic Signing.
يحدث هذا الخطأ عند رفع IPA بهيكل غير صالح. IPA الحديثة يجب أن تحتوي فقط على arm64. وجود i386 أو x86_64 في الملف الثنائي يسبب الرفض. الحل — التحقق من الهياكل في Build Settings واستبعاد هياكل المحاكي.
IPA لا يحتوي على الهيكل الصحيح Payload/App.app. Apple تتوقع تسلسلًا هرميًا دقيقًا. الحل — التحقق من أن الأرشيف يحتوي على مجلد Payload مع حزمة .app واحدة، وليس قائمة مسطحة من الملفات.
للتوزيع المؤسسي يُستخدم برنامج Enterprise من Apple ($299/سنة). يتم توقيع IPA بشهادة Enterprise ويمكن تثبيته على أي جهاز في الشركة دون حدود للعدد. التوزيع المباشر (Ad-hoc) محدود بـ 100 جهاز لكل حساب مطور ($99/سنة). أنظمة MDM (إدارة الأجهزة المحمولة) مثل Jamf وMicrosoft Intune تدعم التثبيت الجماعي لـ IPA Enterprise.
الأسئلة المتكررة
IPA يستخدم تنسيق Mach-O القابل للتنفيذ بدلاً من DEX، ويتطلب Provisioning Profile للتثبيت ويخضع لمراجعة صارمة من App Store. APK، على عكس IPA، يمكن تثبيته مباشرة بدون وسطاء (sideloading).
لا، بناء IPA يتطلب Xcode وأدوات Apple المتاحة فقط على macOS. البدائل: خوادم macOS عن بعد (Mac mini، AWS Mac) أو خدمات CI سحابية (GitHub Actions مع خادم macOS).
تطبيق بسيط — 5–30 ميجابايت. تطبيق متوسط التعقيد — 30–150 ميجابايت. الألعاب قد تصل إلى 4 جيجابايت. Apple تحد من حجم التحميل عبر الشبكة الخلوية إلى 200 ميجابايت، لكن المستخدم يمكنه التحميل عبر Wi-Fi.
للتثبيت المباشر يُستخدم Xcode أو Apple Configurator. التطبيقات المؤسسية تُوزع عبر خادم داخلي مع manifest.plist. المستخدم العادي لا يمكنه تثبيت IPA بدون jailbreak أو TestFlight.
Fat IPA يحتوي على هياكل متعددة (arm64 + x86_64) للبناءات الشاملة. Thin IPA يحتوي على هيكل واحد فقط لجهاز معين. Apple تقبل فقط thin IPA للنشر — الملفات الثنائية fat مرفوضة.
الملخص
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.
اقرأ أيضًا