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




download development (25)

في حالتي،

لقد قمت بتعيين @executable_path/Frameworks

ولكن يجب علي أيضًا تعيين "مسارات بحث الإطار"

$(PROJECT_DIR)/Frameworks

تغيير recursive

الذي يعمل بالنسبة لي.

أحاول تشغيل تطبيق 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

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

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

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


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

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

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


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


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

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


بالنسبة للجهاز ، تحتاج أيضًا إلى إضافة إطار ديناميكي إلى قسم Embedded binaries في علامة التبويب عام للمشروع.


أنا حل بحذف البيانات المشتقة وهذه المرة عملت بشكل صحيح. حاول مع Xcode 7.3.1GM


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

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

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


أستخدم 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. ليس حلا ولكن على الأقل يتيح لي المضي قدما في عملي.


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

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


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


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



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


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


أعتقد أن Apple قد لخصها بالفعل تحت تعطل تطبيق Swift عند محاولة الرجوع إلى مكتبة Swift libswiftCore.dylib

تم الاستشهاد بها من الأسئلة الفنية Q & A QA1886 :

تعطل التطبيق السريع عند محاولة الرجوع إلى مكتبة Swift libswiftCore.dylib.

س: ما الذي يمكنني فعله بشأن خطأ تحميل libswiftCore.dylib في وحدة تحكم الجهاز الخاصة بي الذي يحدث عندما أحاول تشغيل تطبيق اللغة Swift الخاص بي؟

ج: لتصحيح هذه المشكلة ، ستحتاج إلى توقيع التطبيق الخاص بك باستخدام شهادات توقيع الشفرة مع ضبط الوحدة التنظيمية للموضوع (OU) على معرف الفريق الخاص بك. جميع شهادات Enterprise و Standard iOS للمؤسسات التي تم إنشاؤها بعد إصدار iOS 8 ، تحتوي على حقل معرف الفريق الجديد في المكان المناسب للسماح بتشغيل تطبيقات لغة Swift.

عادة ما يظهر هذا الخطأ في سجل وحدة التحكم في الجهاز برسالة مشابهة لواحدة مما يلي:

[....] [deny-mmap] mapped file has no team identifier and is not a platform binary:
/private/var/mobile/Containers/Bundle/Application/5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1/YourAppNameHere.app/Frameworks/libswiftCore.dylib

Dyld Error Message:
  Library not loaded: @rpath/libswiftCore.dylib

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000120021088
Triggered by Thread: 0

Referenced from: /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/TestApp
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x1001D8000, size=0x00194000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib
Dyld Version: 353.5

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

هام: يُرجى توخي الحذر إذا كنت تريد إبطال شهادة توزيع Enterprise جديدة وإعدادها. إذا كنت من مطوري Enterprise في الشركة ، فستحتاج إلى توخي الحذر من عدم إبطال شهادة توزيع تم استخدامها لتوقيع تطبيق ما ، حيث لا يزال أحد موظفي Enterprise يستخدم مثل أي تطبيقات موقعة بشهادة توزيع المؤسسة هذه سوف تتوقف عن العمل على الفور. ينطبق ما سبق على شهادات توزيع Enterprise فقط. تعتبر برامج التطوير آمنة لإلغاء مطوري iOS / المؤسسات.

كما ذكر رجال AirSign المشكلة جذور من السمة OU المفقودة في حقل الموضوع من شهادة داخل البيت .

الموضوع: UID = 269J2W3P2L ، CN = توزيع iPhone: اسم الشركة ، OU = 269J2W3P2L ، O = اسم الشركة ، C = FR

لدي شهادة تطوير المؤسسة ، وإنشاء واحدة جديدة تحل المشكلة.


بدأت أتلقى هذا الخطأ عندما أزلت:

@executable_path/Frameworks

من Runpath Search Paths في إعدادات Runpath Search Paths بي. استبدالها إصلاح كل شيء مرة أخرى (شكرا لله للتحكم بالمصدر!)

لا أعرف كيف وصل إلى هناك ، ولكن يبدو أن هناك حاجة إلى ثنائي لإيجاد وقت تشغيله السريع.


أعتقد أنه خطأ عندما يتم إنشاء الشهادات مباشرة من 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 الخاص بك>> انقر نقرًا مزدوجًا فوق اسم فريقك> زر تحديث الضبط لتحديث الشهادات وملفات التوفير

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



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

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


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

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

إلى:

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

في Xcode 8 لم يعد خيار الخيار Embedded Content Contains Swift Code متاحًا.

تمت إعادة تسميته إلى "Always Embed Swift Standard Libraries = YES"






ios xcode swift