crash طريق - تعطل تطبيق iOS مع إطار العمل على الجهاز ، dyld:Library not loaded، Xcode 6 Beta




التحقق عن (16)

لقد كان هذا العطل مشكلة حظر ، في الأساس ، استخدمت الخطوات التالية لإعادة إظهار المشكلة:

  • قم بإنشاء مشروع Cocoa Touch Framework
  • إضافة ملف سريع وفئة الكلب
  • بناء إطار للجهاز
  • قم بإنشاء تطبيق عرض فردي في Swift
  • إطار الاستيراد في مشروع التطبيق
  • استحضار الطبقة السريعة من الإطار في ViewController
  • بناء وتشغيل التطبيق على الجهاز

تعطل التطبيق فورًا عند الإطلاق ، في ما يلي سجل وحدة التحكم:

dyld: Library not loaded: @rpath/FrameworkTest03.framework/FrameworkTest03
  Referenced from: /var/mobile/Applications/FA6BAAC8-1AAD-49B4-8326-F30F66458CB6/FrameworkTest03App.app/FrameworkTest03App
  Reason: image not found

لقد حاولت أن أبني على الأجهزة التي تعمل بنظام التشغيل iOS 7.1 و 8.0 ، فكل منهما لديه نفس التعطل. ومع ذلك يمكنني بناء التطبيق وتشغيلها على جهاز محاكاة غرامة. كما أنني أدرك أنه يمكنني تغيير إطار العمل من Required إلى Optional في Link Binary With Libraries ، ولكنه لم يحل المشكلة تمامًا ، ولكن التطبيق تعطل عندما أنشأت مثيلًا لـ Dog . يختلف السلوك على الجهاز والمحاكي ، وأظن أنه لا يمكننا توزيع إطار عمل الجهاز باستخدام الإصدار التجريبي من Xcode. يمكن لأي شخص تسليط الضوء على هذا؟


Answers

البيئة الخاصة بي: Cocos2d 2.0، Box2d، Objective C

بالإضافة إلى القيام بالأجوبة الأخرى أعلاه ، ذهبت أخيراً إلى علامة التبويب General وجعلت WatchKit اختيارية.


أضف إطار العمل في الثنائيات المدمجة

ثم تنظيف وبناء.


لأولئك الذين لم يعمل الإصلاح ، حاول تحديث نظام التشغيل إلى Yosemite. عملت معي!


لقد تلقيت هذا الخطأ نفسه أثناء محاولة إضافة إطار العمل الذي قمت بإنشائه يدويًا إلى مشروعي. مجرد سحب الإطار إلى مشروعك لن يكون جيداً بما فيه الكفاية. هذا هو مثل التواجد في نفس الملعب ولكن عدم القدرة على إيجاد أطفالك. استغرق الأمر مني بعض التجربة والخطأ للحصول عليها للعمل بشكل صحيح ولكن بعد هذه الخطوات فعلت ذلك بالنسبة لي.

1) إنشاء إطار العمل الخاص بك

  • تطوير إطارك.
  • بمجرد اكتمال التطوير الخاص بك ، يقوم COMMAND + B ببناء إطار العمل الخاص بك وتأكد من تلقيك "Build Succeeded".

2) الوصول إلى إطار العمل الخاص بك

  • بمجرد أن يبني مشروع الإطار الخاص بك بنجاح ، سيكون جاهزًا لك للوصول إلى مجلد Products في مشروعك.

  • انقر بزر الماوس الأيمن على .framework وحدد "إظهار في Finder".

3) وضع إطار العمل في مشروعك

  • سحب وإسقاط .framework من نافذة Finder الخاصة بك إلى مجلد "Framework" في مشروع التطبيق الخاص بك.

4) تكوين مشروع التطبيق لإطار العمل

  • حدد المستوى الأعلى في مشروعك

  • اختر هدفك

  • انتقل إلى "Build Phases" ، ثم "Link Binary with Libraries" ، وتأكد من تضمين الإطار الخاص بك مع الاختيارية المحددة .

  • لا يزال في "Build Phases" ، انتقل إلى أعلى اليمين وحدد الزر + . في القائمة المنسدلة اختر "New Copy Files Phase".

  • مرِّر لأسفل إلى قسم "نسخ الملفات" الجديد وتأكد من تعيين Destination على "الأطر". اترك الحقل الثانوي فارغًا. ثم انقر فوق الزر + في أسفل اليسار.

  • سيتم تقديمك مع التسلسل الهرمي للمشروع الخاص بك. قم بالتمرير لأسفل إلى مجلد "Frameworks" الذي أضفت إطار العمل إليه في الخطوة 3 ، أو ابحث عنه في شريط البحث في الأعلى. حدد الإطار الخاص بك وانقر فوق "إضافة".

  • تأكد من تضمين الإطار الخاص بك في "Code Sign On Copy" المحددة.

5) تنظيف ، ثم قم بتشغيل المشروع الخاص بك

  • COMMAND + SHIFT + K
  • COMMAND + R

كان لي نفس القضية. حاولت بناء مشروعي باستخدام جهاز iPhone لم استخدمه من قبل ولم أقم بإضافة إطار عمل جديد. بالنسبة لي ، عملت التنظيف بشكل جيد ( Shift + Command + K ). ربما لأنني أستخدم الإصدار 5 من Xcode 7 و iPhone 6 مع iOS 9 Beta ، ولكنه يعمل.


في حالة استمرار مواجهة أي شخص لهذه المشكلة ، على الرغم من اتباع جميع الخطوات الموضحة في الإجابات العديدة الأخرى ، فقد تحتاج إلى إبطال وإعادة إنشاء شهادة توقيع الشفرة وفقًا لما يلي:

https://developer.apple.com/library/ios/qa/qa1886/_index.html


بالنسبة إلى نظام التشغيل iOS أكبر من أو يساوي 8

ضمن علامة التبويب عام الهدف ، في قسم الثنائيات المضمنة ، أضف إطار العمل. سيؤدي هذا إلى نسخ إطار العمل إلى التجميع بحيث يمكن ربطه في وقت التشغيل.

لماذا يحدث هذا؟ : لأنه يتم تجميع الإطار الذي تقوم بربطه كإطار مرتبط بشكل ديناميكي وبالتالي يتم ربطه في وقت التشغيل.

ملاحظة: لا يتم تضمين تضمين إطارات العمل المخصصة إلا في نظام iOS> 8 ، وبالتالي ، يتبع الحل البديل الذي يعمل على الإصدارات الأقدم من نظام التشغيل iOS.

لنظام iOS أقل من 8

إذا كان لديك تأثير على هذا الإطار (لديك حق الوصول إلى شفرة المصدر / عملية الإنشاء) ، فيمكنك تغيير هذا الإطار ليتم ربطه بشكل ثابت بدلاً من الارتباط الديناميكي. سيؤدي ذلك إلى تضمين التعليمة البرمجية في تطبيقك المترجم بدلاً من الارتباط في وقت التشغيل وبالتالي لن يلزم دمج إطار العمل.

كيف: ضمن علامة التبويب "إعداد الإنشاء" في الإطار ، في قسم الربط ، قم بتغيير نوع ماخ إلى مكتبة ثابتة. يجب ألا تحتاج الآن إلى تضمين الإطار ضمن الثنائيات المضمنة.

بما في ذلك الأصول: لتضمين أشياء مثل الصور أو الملفات الصوتية أو ملفات xib / nib ، أوصي بإنشاء حزمة (في الأساس دليل ، والمزيد من المعلومات هنا bit.ly/ios_bundle) ثم تحميل الأصول من الحزمة باستخدام NSBundle.


إذا كان لديك جراب تطوير حذف التطبيق الخاص بك من تثبيت محاكاة من جراب -> تنظيف -> تشغيل مرة أخرى ...


  1. انتقل إلى الملف في xcode -> إعدادات مساحة العمل
  2. انقر فوق السهم التالي الذي يظهر / Users / apple / Library / Developer / Xcode / DerivedData
  3. حدد البيانات المشتقة ونقلها إلى المهملات.
  4. تماما xcode وأعد فتحه.
  5. قم بتنظيف المشروع وتشغيله مرة أخرى.

فوق الخطوات حل بلدي issuses.


في حالتي ، كان الحل هو إزالة الإطار المُجمَّع من الثنائيات المضمنة ، والذي كان مشروعًا مستقلاً في مساحة العمل ، ونظفه وأعد ترميمه ، وأخيرًا إعادة إضافته إلى الثنائيات المدمجة.


إذا كنت تستخدم إطار عمل لجهة خارجية ، وباستخدام Cocoapods كمدير التبعية لديك ، فحاول القيام pod install pods لتحديث البرامج الخاصة بك.

حدث هذا الانهيار على مكتبة طرف ثالث كنت أستخدمها ، لذلك سرور الحل أعلاه عملت بالنسبة لي ، ونأمل أنه يعمل لديك!


لقد قمت بإنشاء إطار باستخدام Swift3 / Xcode 8.1 وكنت أستهلكه في مشروع Objective-C / Xcode 8.1. لإصلاح هذه المشكلة ، اضطررت إلى تمكين الخيار Always Embed Swift Standard Libraries تحت Build Options .

ألقي نظرة على لقطة الشاشة هذه:

امل ان يساعد!


اضطررت (على رأس ما ذكر هنا) أضف السطر التالي إلى مسارات البحث في مسار التشغيل ضمن علامة التبويب إعدادات الإنشاء :
@executable_path/Frameworks


أولاً ، حاول الإنشاء بعد Command + Option + Shift + K. إذا استمر فشلك ، فافعل الخطوات أدناه.

إذا واجه أي شخص هذا الخطأ في Xcode 8 ، فقم بتغيير حالة إطار العمل لديك إلى اختياري بدلاً من Required تحت علامة التبويب General (عام) الخاصة بالهدف.


في علامة التبويب عام الهدف ، يوجد حقل الثنائيات المضمنة . عند إضافة الإطار هناك حل المشكلة.

المرجع here على منتديات مطوري أبل.


كما هو مذكور here ستجد error.stack يوفر رسالة خطأ أكثر اكتمالاً مثل رقم السطر الذي تسبب في حدوث الخطأ:

process.on('uncaughtException', function (error) {
   console.log(error.stack);
});




ios crash swift xcode6