ios - tutorial - dyld: لم يتم تحميل المكتبة: @ rpath/libswiftCore.dylib




xcode for windows (20)

أحاول تشغيل تطبيق Swift على iPhone 4s. إنه يعمل بشكل جيد على جهاز المحاكاة ، ويمكن لصديقي تشغيله بنجاح على هاتف iPhone 4s. لدي iOS 8 والإصدار الرسمي لـ Xcode 6.

لقد حاولت

  • إعادة تشغيل Xcode ، iPhone ، الكمبيوتر
  • تنظيف وإعادة بناء
  • إبطال وإنشاء ملف تعريف جديد للشهادة / الحكم
  • مسارات البحث مسار البحث هي $(inherited) @executable_path/Frameworks
  • محتوى مضمّن يحتوي على رمز Swift هو "نعم"
  • رمز توقيع الهوية هو المطور

يوجد أدناه خطأ في مجملها

dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib


أستخدم Xcode 8.3.3 و Xcode 9.2. كان الحل بالنسبة لي هو تبديل رمز Xcode الافتراضي الخاص بي من 8 إلى 9 باستخدام Xcode Select:

$ xcode-select --print-path

$ sudo xcode-select -switch /Applications/Xcode-9.2.app

تحرير: في الواقع ما بدا للمساعدة هنا هو أن Xcode 9.2 استخدم البيانات المشتقة من Xcode 8.3.3. ليس حلا ولكن على الأقل يتيح لي المضي قدما في عملي.


أعتقد أنه خطأ عندما يتم إنشاء الشهادات مباشرة من Xcode. لحل (على الأقل في Xcode 6.1 / 6A1052d):

  1. انتقل إلى موقع Apple Developer على الويب حيث يتم إدارة الشهادات: https://developer.apple.com/account/ios/certificate/certificateList.action
  2. حدد الشهادة (الشهادات) الخاصة بك (والتي يجب أن تظهر "تتم إدارته بواسطة Xcode" ضمن "الحالة") و "إبطالها"
  3. اتبع الإرشادات هنا لإنشاء شهادة جديدة يدويًا: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32
  4. انتقل إلى Xcode> التفضيلات> الحسابات> [معرِّف Apple الخاص بك>> انقر نقرًا مزدوجًا فوق اسم فريقك> زر تحديث الضبط لتحديث الشهادات وملفات التوفير

أنا أستخدم Xcode 7.2. إذا جربت كل ما سبق ولا يزال الخطأ ، فحاول حذف الشهادة القديمة من Keychain Access! إنه لألم لإصلاح هذا في النهاية.


الحلول المذكورة أعلاه لم تنجح بالنسبة لي. أصلح المشكلة بالخطوات التالية:

  1. اضطررت إلى الذهاب إلى الهاتف (الإعدادات> الملف الشخصي) وحذف الملفات الشخصية الموجودة في الهاتف (بما في ذلك جميع التطبيقات المرتبطة بهذه الملفات الشخصية / الأحكام).
  2. بعد ذلك ، تأكد من تنزيل أحكام التفاحة في xcode. انتقل إلى إعدادات xcode> وقم بتسجيل الدخول إلى حساب مطور Apple الخاص بك.

المثير للدهشة ، كل ما فعلته هو "النظيفة" مشروعي (التحول + كمد + K) وعملت. لا يبدو أن تكون مرتبطة بالشهادة رغم ذلك.


بالنسبة لي ، بعد تجربة كل شيء دون أي نجاح ، كان ما نجح في إزالة @executable_path/Frameworks من Packaging section (لا أعرف كيف وصل إلى هناك في المقام الأول)


بالنسبة لي ، لم ينجح أي من الحلول السابقة. اكتشفنا وجود علامة "Always Embed Swift Standard Libraries" في "إعدادات الإنشاء" التي يجب تعيينها على "نعم". كان NO افتراضيا!

Build Settings > Always Embed Swift Standard Libraries

بعد ضبط هذا ، قم بتنظيف المشروع قبل البناء مرة أخرى.

للقراء المتحمسين بعض التفسير أهم جزء هو:

تعيين المحتوى المضمّن يحتوي على إعداد إنشاء رمز Swift (EMBEDDED_CONTENT_CONTAINS_SWIFT) إلى YES في تطبيقك كما هو موضح في الشكل 2. يحدد إعداد الإنشاء هذا ، الذي يحدد ما إذا كان منتج الهدف مضمّنًا مع رمز Swift ، بإعلام Xcode بتضمين مكتبات سويفت القياسية في تطبيقك عند ضبطه على YES.

كانت العلامة تسمى سابقًا Embedded Content Contains Swift Code


بعد تجربة كل شيء ، اكتشفت في النهاية أن البناء لا يبدو دائمًا متضمنًا لكل التفاصيل مرارًا وتكرارًا. ربما لتسريع العملية ... من أجل ضمان التعبئة الكاملة قبل تشغيلها على جهاز ، اجعل Clean أولاً: Shift-Cmd-K. ثم بناء مع: Cmd-B. بعد ذلك تشغيله على جهازك. سهل. مع أطيب التحيات لكم جميعا يا شباب في هذا المكان!


تغيير نسخ موارد Pods للهدف من:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-resources.sh"

إلى:

"${SRCROOT}/Pods/Target Support Files/Pods-Wishlist/Pods-Wishlist-frameworks.sh"

دعونا مشروع P هو استيراد مكتبة مخصص L ، ثم يجب عليك إضافة L إلى

P -> Build Phases -> Embed Frameworks -> + . هذا يعمل بالنسبة لي.


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

لقد ناضلت من أجل ذلك حوالي نصف يوم ووجدت أن إعادة التعيين مرة أخرى ومرة ​​أخرى في توفير البوابة لا يساعد.


في حالتي ، كان أحد أهداف الاختبار الخاصة بي يعمل ولكن الآخر لم يكن كذلك. كان يعطي الخطأ أعلاه مع مكتبة مفقودة أو أيا كان. لقد قمت بمقارنة الإعدادات الخاصة بكلٍ من أهداف الاختبار ووجدت أن أحدهم كان يفتقد التكوين الخاص بـ "Test Host" ، لذلك قمت بنسخ ذلك من هدف الاختبار العملي وحددت هدفي الاختبار المكسور!


في حالتي ، كان مجرد اسم هدفي:

أنا إعادة تسميته مثل هذا: ظهرت MyApp.something ونفس القضية. ولكنني رأيت في نافذة إعدادات البنية ، تم تغيير اسم الوحدة النمطية للمنتج الخاص بي مثل MyApp-something . لذلك ، أزلت النقطة في اسمي المستهدف ( MyAppSomething ) وذهبت المشكلة.


كنت أواجه نفس المشكلة بعد الانتقال إلى جهاز ماك جديد ، وبعد ساعات ، جربت جميع الإجابات المقترحة في الأسئلة ، لم يعمل أي شيء من هذا القبيل بالنسبة لي.

كان الحل بالنسبة لي هو تثبيت هذه الشهادة المفقودة. http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

وجدت الجواب هنا. https://.com/a/14495100/976628


كنت أواجه هذه المشكلة في تشغيل اختبارات سويفت (ولكن ليس على تطبيقي). وتبين أن الاختبار مطلوب للحصول على أكثر من @executable_path/Frameworks في إعداد إنشاء Runpath Search Paths في Runpath Search Paths لاستهداف الاختبار. إعداد مسارات البحث في مسار ردة الفعل لما يلي عمل سحر لي:

$(inherited)
@executable_path/Frameworks
@loader_path/Frameworks

للإضافة إلى حل شهادات توزيع Enterprise: يمكنك فتح Keychain وفحص الشهادة. إذا كان هناك أي نص أحمر يقول أنه لا يمكن التحقق من سلسلة الثقة أو يتم إبطاله ، فإنه لن يعمل! على جهاز الكمبيوتر الخاص بي ، تم عرض شهادة التوزيع الخاصة بنا كما تم إبطالها على الرغم من أن موقع الويب أظهر أنها لا تزال صالحة. حصلنا على شهادة توزيع جديدة ، والتي كانت خضراء (صالحة) في Keychain ، وهذا حل المشكلة.


لم يعمل أي من الحلول بالنسبة لي. إعادة تشغيل الهاتف الثابت. غريب لكنه نجح.


هناك الكثير من الأجوبة هناك ، لكن قد تكون إجابتي مساعدة بعض الأشخاص.

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

توقف التطبيق عن التعطيل عند تغيير اسم أصول صور الإطلاق لكل من التطبيقات. على سبيل المثال ، Target asset Launch asset name LaunchImage A. الهدف B الغداء Image اسم الأصول LaunchImage B وتعيينه بشكل صحيح في علامة التبويب العامة لكل هدف. تطبيقاتي تعمل بشكل جيد.


يبدو أن أيا من هذه الحلول لا يعمل ، ولكن عندما غيّرت إذن شهادة World Wide Developer Use System defaults فعندئذٍ نجحت. لقد ضمنت الخطوات ولقطات الشاشة في الرابط أدناه

أود أن أشجعكم على تسجيل التذكرة في تقرير أبل أبل كما هو مذكور هنا ، وينبغي أن تحل أبل هذا الخطأ الهائل: https://.com/a/41401354/559760