2. إعداد مشروع Xcode — تضمين ملفات xcframework محليًا
لا توجد هنا عملية دمج لملفات البيان أو عنوان URL لمستودع — بل ستربط إطارَي عمل ثنائيَّين بمشروع Xcode يدويًا (أو عبر سكربت إعداد، إذا كان لدى فريقك واحد).
2.1 مكان وضع إطارَي العمل
ضع AKSKit.xcframework وAppsKit.xcframework مباشرةً داخل المجلد نفسه الذي يحتوي على ملف .xcodeproj — أي في المستوى نفسه الذي يوجد فيه Podfile ومجلد الشيفرة المصدرية لتطبيقك، وليس داخل مجلد الشيفرة المصدرية أو داخل Pods/. هذا مهم لأن Xcode يحدد موقع مرجع إطار العمل باستخدام مسار نسبي مباشر (دون الحاجة إلى تخصيص FRAMEWORK_SEARCH_PATHS) — وإذا نقلت إطارَي العمل، فلن يعود المرجع في ملف المشروع صالحًا.
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 بشكل صحيح.