ios - dyld: पुस्तकालय लोड नहीं किया गया: @ rpath/libswiftCore.dylib




xcode (20)

मैं अपने आईफोन 4 एस पर एक स्विफ्ट ऐप चलाने की कोशिश कर रहा हूं। यह सिम्युलेटर पर ठीक काम करता है, और मेरा दोस्त इसे अपने आईफोन 4 एस पर सफलतापूर्वक चला सकता है। मेरे पास आईओएस 8 और एक्सकोड 6 की आधिकारिक रिलीज है।

मैं प्रयास कर चुका हूं

  • एक्सकोड, आईफोन, कंप्यूटर को पुनरारंभ करना
  • सफाई और पुनर्निर्माण
  • नए प्रमाणपत्र / प्रावधान प्रोफाइल को रद्द करना और बनाना
  • रनपाथ सर्च पथ $(inherited) @executable_path/Frameworks execable_path $(inherited) @executable_path/Frameworks
  • एम्बेडेड सामग्री में स्विफ्ट कोड है 'हां'
  • कोड हस्ताक्षर पहचान डेवलपर है

नीचे पूरी तरह से त्रुटि है

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

आइए प्रोजेक्ट पी कस्टम लाइब्रेरी एल आयात कर रहा है, तो आपको एल को जोड़ना होगा

P -> Build Phases -> Embed Frameworks -> + । ये मेरे लिए सही है।


आश्चर्यजनक रूप से पर्याप्त, मैंने जो कुछ किया वह मेरी परियोजना (शिफ्ट + सेमीडी + के) "साफ" था और यह काम करता था। प्रतीत होता है कि प्रमाण पत्र से संबंधित प्रतीत होता है।


उपर्युक्त समाधान मेरे लिए काम नहीं करते थे। मैं निम्नलिखित चरणों से समस्या को ठीक करता हूं:

  1. मुझे फोन (सेटिंग्स> प्रोफाइल) पर जाना था और फोन में मौजूद प्रोफाइल को हटा देना था (उन प्रोफाइल / प्रावधानों से जुड़े सभी ऐप्स सहित)।
  2. उसके बाद, सुनिश्चित करें कि आप एक्सकोड में सेब प्रावधान डाउनलोड करते हैं। एक्सकोड सेटिंग्स> खाते पर जाएं और अपने सेब डेवलपर खाते में साइन इन करें।

एंटरप्राइज़ वितरण प्रमाण समाधान में जोड़ने के लिए: आप कीचेन खोल सकते हैं और प्रमाण का निरीक्षण कर सकते हैं। यदि कोई लाल पाठ कह रहा है कि ट्रस्ट चेन को सत्यापित नहीं किया जा सकता है या इसे रद्द कर दिया जा रहा है, तो यह काम नहीं करेगा! मेरे कंप्यूटर पर, हमारे वितरण प्रमाण को निरस्त कर दिया गया था, भले ही वेब पोर्टल ने इसे अभी भी वैध बताया। हमें एक नया वितरण प्रमाण मिला, जो कीचेन में हरा (वैध) था, और इसने इस मुद्दे को हल किया।


एक्सकोड 8 में Embedded Content Contains Swift Code विकल्प में Embedded Content Contains Swift Code विकल्प Embedded Content Contains Swift Code नहीं है।

इसका नाम बदलकर "Always Embed Swift Standard Libraries = YES"


जब एक्सकोड आपको नोट्स रीसेट करने के लिए कहता है, तो आप इसे रीसेट करते हैं। और ऐप को वास्तविक डिवाइस पर उस त्रुटि संदेशों के साथ क्रैश किए बिना चलाया जा सकता है। एक बार यह समस्या एक तेज परियोजना में तय हो जाने के बाद। इस समस्या के साथ अन्य त्वरित परियोजनाओं को भी तय किया गया है।

मैंने इन दिनों आधा दिन संघर्ष किया है और मैंने पाया है कि प्रावधान पोर्टल में बार-बार रीसेट करने में मदद नहीं मिलती है।


ठीक है, इस त्रुटि का एक और कारण साझा करना। इसे हल करने में मुझे कुछ घंटे लगे।

मेरे मामले में कीचैन एक्सेस में मेरे प्रमाण पत्र की ट्रस्ट पॉलिसी हमेशा ट्रस्ट थी , इसे वापस हल करने के लिए डिफ़ॉल्ट रूप से बदलना समस्या हल हो गई।

सर्टिफिकेट सेटिंग्स विंडो खोलने के लिए सर्टिफिकेट की कीचेन एक्सेस सूची में सर्टिफिकेट पर डबल क्लिक करें।


डिवाइस के लिए, आपको परियोजना के General टैब में Embedded binaries सेक्शन में डायनामिक फ्रेमवर्क जोड़ने की भी आवश्यकता है।


मुझे अपने स्विफ्ट परीक्षण चलाने के साथ यह समस्या थी (लेकिन मेरा ऐप नहीं)। यह पता चला है कि टेस्ट लक्ष्य के लिए Runpath Search Paths सेटिंग बनाने में परीक्षण @executable_path/Frameworks Runpath Search Paths @executable_path/Frameworks से अधिक होने की आवश्यकता है। निम्नलिखित में रनपाथ खोज पथ सेट करने के लिए मेरे लिए एक आकर्षण काम किया:

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

मुझे एक नए मैक में जाने के बाद, और घंटों के बाद, प्रश्नों में सभी सुझाए गए उत्तरों की कोशिश करने के बाद भी यही समस्या थी, इनमें से कोई भी मेरे लिए काम नहीं करता था।

मेरे लिए समाधान इस लापता प्रमाण पत्र को स्थापित कर रहा था। http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

यहां जवाब मिला। https://.com/a/14495100/976628


मुझे लगता है कि यह एक बग है जब प्रमाणपत्र सीधे एक्सकोड से उत्पन्न होते हैं। हल करने के लिए (कम से कम Xcode 6.1 / 6A1052d में):

  1. ऐप्पल डेवलपर वेबसाइट पर जाएं जहां प्रमाण पत्र प्रबंधित किए जाते हैं: https://developer.apple.com/account/ios/certificate/certificateList.action
  2. अपने प्रमाणपत्र (ओं) का चयन करें (जो "स्थिति" के अंतर्गत "एक्सकोड द्वारा प्रबंधित" दिखाना चाहिए) और "इसे रद्द करें"
  3. मैन्युअल रूप से नया प्रमाणपत्र उत्पन्न करने के लिए निर्देशों का पालन करें: https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW32
  4. एक्सकोड> वरीयताएँ> खाते> [अपनी ऐप्पल आईडी]>> अपने टीम के नाम पर डबल-क्लिक करें> प्रमाण पत्र अपडेट करने और प्रोफाइल प्रावधान करने के लिए रीफ्रेश बटन दबाएं

मेरे पास एक ही समय में एक्सकोड का एक से अधिक संस्करण स्थापित है। ढांचा एक्सकोड के एक नए संस्करण के साथ बनाया गया था। जिस ऐप को मैंने संकलित करने का प्रयास किया वह एक्सकोड के पुराने संस्करण के साथ था। जब मैंने एक्सकोड के उसी संस्करण के साथ ढांचे और ऐप दोनों को साफ़ और संकलित किया तो चीजें काम करती थीं।


मेरे मामले में, मेरे परीक्षण लक्ष्यों में से एक काम कर रहा था लेकिन दूसरा नहीं था। यह उपरोक्त त्रुटि को लापता पुस्तकालय या जो कुछ भी दे रहा था। मैंने दोनों परीक्षण लक्ष्यों के लिए सेटिंग्स की तुलना की और पाया कि एक "टेस्ट होस्ट" के लिए कॉन्फ़िगरेशन खो रहा था, इसलिए मैंने कामकाजी परीक्षण लक्ष्य से इसकी प्रतिलिपि बनाई और यह मेरे टूटे परीक्षण लक्ष्य को ठीक कर दिया!


मेरे मामले में, यह सिर्फ मेरे लक्ष्य का नाम था:

मैंने इसका नाम बदल दिया: MyApp.something और एक ही समस्या दिखाई दी। लेकिन मैंने बिल्ड सेटिंग्स विंडो में देखा, मेरा उत्पाद मॉड्यूल नाम इस मायएप-कुछ की तरह बदला गया है । इसलिए, मैंने अपने लक्ष्य नाम ( MyAppSomething ) में डॉट हटा दिया और समस्या समाप्त हो गई।


मेरे लिए पिछले समाधानों में से कोई भी काम नहीं किया। हमने पाया कि बिल्ड सेटिंग्स में "हमेशा एम्बेड स्विफ्ट मानक लाइब्रेरीज़" ध्वज है जिसे YES पर सेट करने की आवश्यकता है। यह डिफ़ॉल्ट रूप से नहीं था!

Build Settings > Always Embed Swift Standard Libraries

इसे स्थापित करने के बाद, फिर से निर्माण से पहले परियोजना को साफ करें।

उत्सुक पाठकों के लिए कुछ स्पष्टीकरण सबसे महत्वपूर्ण हिस्सा है:

एंबेडेड सामग्री को स्विफ्ट कोड (EMBEDDED_CONTENT_CONTAINS_SWIFT) सेट करें, जैसा कि चित्र 2 में दिखाया गया है, आपके ऐप में YES को सेटिंग सेट करना। यह बिल्ड सेटिंग, जो निर्दिष्ट करती है कि लक्ष्य के उत्पाद ने स्विफ्ट कोड के साथ सामग्री एम्बेड की है, आपके ऐप में स्विफ्ट मानक लाइब्रेरी एम्बेड करने के लिए एक्सकोड को बताता है जब हाँ सेट करें।

ध्वज को पहले Embedded Content Contains Swift Code कहा जाता था जिसमें Embedded Content Contains Swift Code था


मेरे लिए, सफलता के बिना सब कुछ करने की कोशिश की, Packaging section से @executable_path/Frameworks को हटाने के लिए क्या काम किया गया था (यह नहीं पता कि यह पहली जगह में कैसे हुआ था)


मैं एक्सकोड 8.3.3 और एक्सकोड 9.2 का उपयोग कर रहा हूं। मेरे लिए समाधान एक्सकोड चयन का उपयोग कर 8 से 9 तक अपना डिफ़ॉल्ट एक्सकोड स्विच करना था:

$ xcode-select - प्रिंट-पथ

$ sudo xcode-select -switch / अनुप्रयोग /Xcode-9.2.app

संपादित करें: असल में यहां क्या मदद करना प्रतीत होता था कि एक्सकोड 9.2 ने एक्सकोड 8.3.3 से व्युत्पन्न डेटा का उपयोग किया था। समाधान नहीं है लेकिन कम से कम यह मुझे अपने काम के साथ आगे बढ़ने की अनुमति देता है।


मैंने व्युत्पन्न डेटा को हटाकर हल किया और इस बार यह सही ढंग से काम किया। एक्सकोड 7.3.1 जीएम के साथ कोशिश की


वहां बहुत सारे जवाब हैं लेकिन शायद मेरा जवाब किसी की मदद करेगा।

मुझे एक ही समस्या है, मेरा ऐप सिम्युलेटर पर ठीक काम करता है लेकिन डिवाइस पर क्रैश हो गया है क्योंकि मैं ऐप लॉन्च करता हूं और ऊपर की तरह त्रुटि देता हूं। मैंने सभी उत्तरों और समाधानों का प्रयास किया है। माई केस में, मेरी परियोजना में मेरे पास कई लक्ष्य हैं। मैंने लक्ष्य ए से डुप्लिकेट लक्ष्य बी बनाया है। लक्ष्य बी ठीक काम करता है जबकि लक्ष्य ए क्रैश हो गया है। मैं प्रत्येक लक्ष्य के लिए अलग-अलग छवि संपत्तियों का उपयोग कर रहा हूं। Google खोजने और करने के बाद मुझे कुछ ऐसा मिला है जो किसी की मदद कर सकता है।

जब मैं दोनों ऐप्स के लिए लॉन्च छवियों की संपत्ति का नाम बदलता हूं तो ऐप क्रैश हो जाता है। उदाहरण के लिए लक्ष्य एक लॉन्च छवि संपत्ति का नाम लॉन्च इमेज ए। लक्ष्य बी लंच छवि संपत्ति का नाम लॉन्च इमेज बी और प्रत्येक लक्ष्य के सामान्य टैब में ठीक से असाइन किया गया। मेरे एप्स ठीक काम करता है।


सब कुछ करने की कोशिश करने के बाद, मुझे अंततः पता चला कि निर्माण में हमेशा हर बार शामिल नहीं होता है। शायद प्रक्रिया को तेज करने के लिए ... किसी डिवाइस पर चलने से पहले पूर्ण पैकेजिंग सुनिश्चित करने के लिए, पहले क्लीन करें: Shift-Cmd-K। फिर के साथ निर्माण: सीएमडी-बी। उसके बाद इसे अपने डिवाइस पर चलाएं। आसान। उस जगह में आप सभी अच्छे लोगों का दयालु संबंध है!