التوثيق · التكامل مع iOS

2. إعداد مشروع Xcode — تضمين ملفات xcframework محليًا

لا توجد هنا عملية دمج لملفات manifest أو عنوان URL لمستودع — بل ستربط إطارَي عمل ثنائيين بمشروع Xcode يدويًا (أو عبر برنامج نصي للإعداد، إذا كان فريقك يستخدم واحدًا).

2.1 مكان وضع أطر العمل

ضع AKSKit.xcframework وAppsKit.xcframework مباشرةً في المجلد نفسه الذي يحتوي على ملف .xcodeproj — أي في المستوى نفسه مع Podfile ومجلد الشيفرة المصدرية لتطبيقك، وليس داخل مجلد الشيفرة المصدرية أو داخل Pods/. هذا مهم لأن Xcode يحدد موقع إطار العمل المشار إليه باستخدام مسار نسبي مباشر (دون الحاجة إلى تخصيص FRAMEWORK_SEARCH_PATHS) — وإذا نقلت أطر العمل إلى مكان آخر، فلن يعود المرجع الموجود في ملف المشروع صالحًا.

plaintext
YourApp/                          <- CocoaPods project root (Podfile lives here)
├── Podfile
├── AKSKit.xcframework/            <- sibling of the .xcodeproj
├── AppsKit.xcframework/           <- sibling of the .xcodeproj
├── YourApp.xcodeproj/
├── YourApp.xcworkspace/           <- open THIS, not the .xcodeproj, once Pods are installed
└── YourApp/                       <- your app target's source folder
    ├── AppDelegate.swift
    └── ...

2.2 إضافة أطر العمل إلى هدف التطبيق

في Xcode، حدد هدف تطبيقك → عام (General) → أطر العمل والمكتبات والمحتوى المضمّن (Frameworks, Libraries, and Embedded Content) → أضف ملفَي .xcframework، واضبط كليهما على التضمين والتوقيع (Embed & Sign). عمليًا، يجب أن ينتج عن ذلك ما يلي:

  • مرجع PBXFileReference لكل إطار عمل، مع sourceTree = "<group>" وقيمة path مباشرة (دون بادئة مجلد)
  • إدراج كليهما ضمن ربط الملفات الثنائية بالمكتبات (Link Binary With Libraries) (مرحلة PBXFrameworksBuildPhase)
  • إدراج كليهما ضمن مرحلة بناء لنسخ الملفات باسم تضمين أطر العمل (Embed Frameworks) (PBXCopyFilesBuildPhase، مع dstSubfolderSpec = 10)، مع السمتين CodeSignOnCopy + RemoveHeadersOnCopy — وهذا بالضبط ما ينتج عن اختيار "Embed & Sign" في واجهة Xcode

تأكد أيضًا من أن LD_RUNPATH_SEARCH_PATHS يتضمن @executable_path/Frameworks (يضيف Xcode هذا المسار تلقائيًا عند تضمين إطار عمل عبر الواجهة؛ وهو ما يتيح تحميل أطر العمل المضمّنة والموقّعة وقت التشغيل).

إذا كنت تنفّذ هذه الخطوات ببرنامج نصي بدلًا من استخدام واجهة Xcode (مثلًا، ضمن خطوة إعداد للتكامل المستمر CI)، فالعناصر الثلاثة المذكورة أعلاه — مرجع الملف، ومرحلة الربط، ومرحلة التضمين — هي بالضبط ما تحتاج إلى إضافته إلى project.pbxproj.

2.3 فتح مساحة العمل بدلًا من المشروع

بعد تشغيل pod install، افتح YourApp.xcworkspace. فمساحة العمل هي التي تربط هدف تطبيقك بمشروع Pods.xcodeproj الذي ينشئه CocoaPods؛ أما فتح .xcodeproj مباشرةً فسيؤدي إلى بناء التطبيق دون ربط الاعتماديات المحددة في Podfile بشكل صحيح.