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

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

لا توجد هنا عملية دمج لملفات البيان أو عنوان 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 بشكل صحيح.