مقدمة: ذلك الخطأ الذي يقشعر له الأبدان
\n\nتخيل: أنت تكتب تطبيق iOS رائعًا بلغة Swift، وتستخدم أطر عمل حديثة، كل شيء يعمل بشكل ممتاز في المحاكي. تقوم بتوصيل iPhone حقيقي بفخر، تضغط على Run - ويتعطل التطبيق عند بدء التشغيل برسالة تقشعر لها الأبدان:
\n\ndyld: Library not loaded: @rpath/Alamofire.framework/Alamofire\n Referenced from: /private/var/containers/Bundle/Application/.../MyApp.app/MyApp\n Reason: no suitable image found. Did find:\n /private/var/.../MyApp.app/Frameworks/Alamofire.framework/Alamofire: mmap() error 1 at ...\n /private/var/.../MyApp.app/Frameworks/Alamofire.framework/Alamofire: code signature invalid\n\nمألوف؟ هذا ليس خطأ - إنها ميزة من Apple تطارد المطورين لسنوات عديدة. حتى في عام 2025، عند العمل مع Xcode 15 و Swift 5.9، تظهر هذه المشكلة بشكل متكرر. في هذه المقالة، لن نقوم فقط بتحليل الأسباب - بل سنقدم لك قائمة مرجعية خطوة بخطوة من الحلول، تم اختبارها على مشاريع حقيقية.
\n\nلماذا يحدث هذا؟ تشريح خطأ dyld
\n\nخطأ dyld: Library not loaded هو رسالة من الرابط الديناميكي (dyld) الذي لا يمكنه العثور على إطار العمل أو تحميله أثناء بدء تشغيل التطبيق. في عام 2025، يمكن تقسيم الأسباب الرئيسية إلى ثلاث فئات:
\n\n- \n
- مشاكل توقيع الكود (code signing) - السبب الأكثر شيوعًا. إطار العمل غير موقع أو التوقيع غير صالح للجهاز. \n
- تضمين غير صحيح لإطار العمل - لم يتم نسخ إطار العمل إلى مجلد Frameworks داخل حزمة .app. \n
- تعارضات الإصدارات والبنى - تم بناء إطار العمل للمحاكي ولكنه لا يحتوي على arm64 للجهاز الحقيقي. \n
حقيقة مثيرة للاهتمام: في السؤال الأصلي على Stack Overflow (عام 2014، Xcode 6 Beta)، كانت المشكلة مرتبطة بالإصدارات الأولى من Swift وأطر العمل الديناميكية. بعد 11 عامًا، تحسن الوضع، لكن الجذر بقي كما هو - Apple تتحكم بصرامة في المكتبات التي يمكن تحميلها على الجهاز.
\n\nالتشخيص: كيف تفهم بسرعة ما تعطل
\n\nقبل أن نتدخل في الإعدادات، دعنا نحدد المشكلة. إليك خوارزمية بسيطة:
\n\nالخطوة 1. انظر إلى سجل التعطل الكامل
\nافتح وحدة تحكم Xcode (Shift+Cmd+C) وابحث عن السطر dyld: Library not loaded. انتبه لاسم إطار العمل - هذا هو مفتاح الحل.
الخطوة 2. تحقق من البناء
\nنفذ في الطرفية:
\nxcrun dyldinfo -lazy_bind /path/to/YourApp.app/YourApp | grep framework\nإذا تم عرض إطار العمل ولكن لم يتم تحميله - فالمشكلة في التوقيع أو التضمين.
\n\nالخطوة 3. اختبار على مشروع نظيف
\nأنشئ مشروعًا بسيطًا بنفس إطار العمل. إذا كان يعمل - فالمشكلة في مشروعك الرئيسي. إذا لم يكن كذلك - فالمشكلة في إعدادات Xcode أو إطار العمل نفسه.
\n\n5 حلول مثبتة لمشاريع Swift في 2025
\n\nلقد اختبرنا جميع الطرق على Xcode 15.2 و Swift 5.9 و iOS 17.2. ها هي من الأبسط إلى الأكثر تعقيدًا:
\n\nالحل 1. التنظيف وإعادة البناء (90% من الحالات)
\nيبدو مبتذلاً ولكنه يعمل في معظم الأحيان. قم بما يلي:
\n- \n
Product → Clean Build Folder(أو Shift+Cmd+K) \n - احذف Derived Data:
Xcode → Settings → Locations → Derived Data → اضغط على السهم\n - أعد بناء المشروع (Cmd+B) \n
لماذا يساعد هذا؟ أحيانًا يقوم Xcode بتخزين التوقيعات القديمة أو مسارات أطر العمل مؤقتًا. التنظيف الكامل يعيد ضبط كل شيء.
\n\nالحل 2. التضمين الصحيح لإطار العمل
\nانتقل إلى Target → General → Frameworks, Libraries, and Embedded Content. تأكد من تحديد Embed & Sign لإطار العمل الخاص بك، وليس Do Not Embed.
مثال لـ Swift Package Manager:
\n// في Package.swift\n.target(\n name: "MyApp",\n dependencies: [\n .product(name: "Alamofir