डिवाइस पर क्रैश हुए ढांचे के साथ iOS ऐप, dyld: लाइब्रेरी लोड नहीं, Xcode 6 बीटा


573

यह क्रैश एक अवरुद्ध समस्या रही है मैंने इस मुद्दे को पुन: उत्पन्न करने के लिए निम्नलिखित चरणों का उपयोग किया है:

  • कोको टच फ्रेमवर्क प्रोजेक्ट बनाएं
  • एक स्विफ्ट फ़ाइल और एक क्लास डॉग जोड़ें
  • डिवाइस के लिए एक फ्रेमवर्क बनाएं
  • स्विफ्ट में सिंगल व्यू एप्लिकेशन बनाएं
  • ऐप प्रोजेक्ट में इंपोर्ट फ्रेमवर्क
  • 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 डिवाइस पर निर्माण करने की कोशिश की है, वे दोनों एक ही दुर्घटना है। हालांकि, मैं एक ऐप बना सकता हूं और सिम्युलेटर फाइन पर चला सकता हूं। इसके अलावा, मुझे पता है कि मैं के रूप में ढांचे को बदल सकते हैं कर रहा हूँ आवश्यक करने के लिए वैकल्पिक में लिंक बाइनरी के साथ पुस्तकालय है, लेकिन यह पूरी तरह से जब मैं का एक उदाहरण बनाने के लिए, अनुप्रयोग दुर्घटनाग्रस्त समस्या हल नहीं होती कुत्ता । डिवाइस और सिम्युलेटर पर व्यवहार अलग है, मुझे संदेह है कि हम Xcode के बीटा संस्करण का उपयोग करके डिवाइस के लिए एक फ्रेमवर्क वितरित नहीं कर सकते। क्या कोई इसे स्पष्ट कर सकता है?


1
मुझे समझ में नहीं आता है कि अन्य सभी तीसरे पक्ष के ढांचे बॉक्स से बाहर क्यों काम करते हैं और आसानी से खींचे और गिराए जा सकते हैं Link Binary with Librariesऔर किसी तरह एक्सकोड उन्हें आपके ऐप बंडल में कॉपी करना जानता है, जबकि कस्टम फ्रेमवर्क के लिए यह बस नहीं होता है।
फतुहोकू

sazzad hissain khan का जवाब यहाँ stackoverflow.com/questions/26024100/… सबसे अच्छा उत्तर है ..
अंकित कुमार


आप एक मोटा पुस्तकालय बना सकते हैं, आप इस लिंक को देख सकते हैं: stackoverflow.com/a/54977145/3992606
mohsen

Xcode संस्करण मेल नहीं खाता , जिसे stackoverflow.com/a/55738882/5443510 के साथ हल किया गया है ।
जिमी यिन

जवाबों:


975

लक्ष्य के सामान्य टैब में, एंबेडेड बायनेरिज़ फ़ील्ड है। जब आप फ्रेमवर्क जोड़ते हैं तो दुर्घटना हल हो जाती है।

संदर्भ यहां Apple डेवलपर मंचों पर है।


73
मेरे पास एंबेडेड बायनेरिज़ में फ्रेमवर्क है और मेरे पास कॉपी फ़ेज़ के साथ-साथ "फ्रेमवर्क" पर सेट है। यह वैसे भी दुर्घटनाओं।
लोरेटोपारसी

11
यह केवल डिबगिंग मोड पर हल किया गया है। त्रुटि तब होगी जब आप संग्रह या एक परियोजना का निर्माण करेंगे
साद उर रहमान

13
'रनपथ सर्च पाथ' में @ एक्जीक्यूटेबल_पैथ / फ्रेमवर्क को जोड़कर इस समस्या को हल किया गया है, साथ ही 'एंबेडेड बायनेरिज़' में फ्रेमवर्क को जोड़ने के लिए
19

14
कोई भी PODs से एंबेडेड बायनेरिज़ में फ्रेमवर्क जोड़ने में मदद कर सकता है?
बॉनके जूल

3
डिट्टो। मैं भी चाहते पता करने के लिए की तरह कैसे फली से जोड़ने के लिए, यह देखते हुए कोई "सामान्य> एंबेडेड बाइनरी" XCode 6.4 में पाया जा सकता फली का उपयोग कर
ded

259

IOS से अधिक या 8 के बराबर

लक्ष्य के सामान्य टैब के तहत, एंबेडेड बायनेरिज़ अनुभाग में रूपरेखा जोड़ें। यह फ्रेमवर्क को संकलित करेगा ताकि इसे रनटाइम से जोड़ा जा सके।

यहाँ छवि विवरण दर्ज करें

ये क्यों हो रहा है? : क्योंकि जिस फ्रेमवर्क को आप लिंक कर रहे हैं, वह डायनामिकली लिंक्ड फ्रेमवर्क के रूप में संकलित है और इस प्रकार रनटाइम से जुड़ा हुआ है।

** नोट: ** कस्टम फ्रेमवर्क एंबेड करना केवल iOS> 8 में समर्थित है और इस प्रकार एक वैकल्पिक समाधान जो iOS के पुराने संस्करणों पर काम करता है।

IOS 8 से कम के लिए

यदि आप इस ढांचे को प्रभावित करते हैं (स्रोत कोड / निर्माण प्रक्रिया तक पहुंच है) तो आप गतिशील रूप से जुड़े होने के बजाय इस ढांचे को सांख्यिकीय रूप से लिंक करने के लिए बदल सकते हैं। यह रनटाइम पर लिंक होने के बजाय कोड को आपके संकलित ऐप में शामिल करने का कारण बनेगा और इस प्रकार रूपरेखा को एम्बेड नहीं करना पड़ेगा।

** कैसे - ** लिंकिंग सेक्शन में फ्रेमवर्क बिल्ड सेटिंग टैब के तहत, माच-ओ टाइप को स्टेटिक लाइब्रेरी में बदलें । अब आपको एम्बेडेड बायनेरिज़ के तहत फ्रेमवर्क को शामिल करने की आवश्यकता नहीं होनी चाहिए।

स्थैतिक ढाँचा

एसेट्स को शामिल करना : छवियों, ऑडियो, या xib / nib फ़ाइलों जैसी चीजों को शामिल करने के लिए मैं एक बंडल बनाने की सलाह देता हूं (मूल रूप से एक निर्देशिका, अधिक जानकारी यहां bit.ly/ios_bundle) और फिर NSDundle का उपयोग करके बंडल से संपत्ति लोड करें।


1
मैं एम्बेडेड बायनेरिज़ में फ्रेमवर्क कैसे जोड़ सकता हूं, अगर फ्रेम पॉड्स में है?
टॉमाज़सोतिल्ज़कोविक

"फली में है" का क्या मतलब है? आपका कस्टम फ्रेमवर्क कोकोआपॉड्स के माध्यम से वितरित किया गया है?
डॉसन

2
यह "ग्रेटर से या 8 के बराबर" होना चाहिए। मुझे यह iOS 8 पर भी करना है।
क्रूज़ह

त्रुटिSwift is not supported for static libraries
jose920405

@TomazStoiljkovic क्या आपने इसका पता लगाया? मेरे पास एक ही मुद्दा है, मेरे पास ढांचा है जिसे मैं बाइनरी के रूप में बनाना चाहता हूं, लेकिन यह कोको फली के माध्यम से अन्य रूपरेखाओं पर निर्भर करता है।
मेगामैनएक्स

125

बस अपनी परियोजना में ढांचे को खींचना काफी अच्छा नहीं है। यह उसी बॉलपार्क में होने जैसा है लेकिन अपने बच्चों को खोजने में सक्षम नहीं है। इन कदमों का अनुसरण करें:

1) अपना ढांचा बनाएं

  • अपना ढांचा विकसित करें।
  • एक बार आपका विकास पूरा हो जाने के बाद, COMMAND+ Bअपनी रूपरेखा बनाएं और सुनिश्चित करें कि आपको "निर्मित सफलता प्राप्त" हो।

यहाँ छवि विवरण दर्ज करें

2) अपने ढांचे तक पहुँचें

  • एक बार जब आपका फ्रेमवर्क प्रोजेक्ट सफलतापूर्वक बन जाता है तो यह Productsआपके प्रोजेक्ट में आपके फ़ोल्डर में पहुंचने के लिए तैयार हो जाएगा ।

यहाँ छवि विवरण दर्ज करें

  • अपने पर राइट क्लिक करें .frameworkऔर "खोजक में दिखाएँ" चुनें।

यहाँ छवि विवरण दर्ज करें

3) अपने प्रोजेक्ट में फ्रेमवर्क रखें

  • .frameworkअपने खोजक विंडो से अपने ऐप प्रोजेक्ट के "फ्रेमवर्क" फ़ोल्डर में खींचें और छोड़ें ।

यहाँ छवि विवरण दर्ज करें

4) फ्रेमवर्क के लिए ऐप प्रोजेक्ट को कॉन्फ़िगर करें

  • अपनी परियोजना में शीर्ष स्तर का चयन करें

यहाँ छवि विवरण दर्ज करें

  • अपना लक्ष्य चुनें

यहाँ छवि विवरण दर्ज करें

  • "बिल्ड चरणों" पर जाएं, फिर "लिंक बाइनरी विद लाइब्रेरीज़", और सुनिश्चित करें कि आपका फ्रेमवर्क वैकल्पिक चयनित के साथ शामिल है ।

यहाँ छवि विवरण दर्ज करें

  • अभी भी "बिल्ड चरणों" में, ऊपरी बाईं ओर जाएं और +बटन का चयन करें। ड्रॉप डाउन में "नई कॉपी फ़ाइलें चरण" चुनें।

यहाँ छवि विवरण दर्ज करें

  • नए "कॉपी फ़ाइलें" अनुभाग तक नीचे स्क्रॉल करें और सुनिश्चित करें कि आप Destination"फ्रेमवर्क" पर सेट हैं । उपपथ को खाली छोड़ दें। फिर +नीचे बाईं ओर बटन पर क्लिक करें।

यहाँ छवि विवरण दर्ज करें

  • आपको अपनी परियोजना पदानुक्रम के साथ प्रस्तुत किया जाएगा। "फ्रेमवर्क" फ़ोल्डर में स्क्रॉल करें जिसे आपने चरण 3 में फ्रेमवर्क जोड़ा था, या शीर्ष पर खोज बार में इसे खोजें। अपनी रूपरेखा चुनें और "जोड़ें" पर क्लिक करें।

यहाँ छवि विवरण दर्ज करें

  • सुनिश्चित करें कि आपका फ्रेमवर्क "कोड साइन ऑन कॉपी" चयनित है।

यहाँ छवि विवरण दर्ज करें

5) स्वच्छ, फिर अपना प्रोजेक्ट चलाएं

  • COMMAND+ SHIFT+K
  • COMMAND+R

5
अच्छी बात। यह लगभग मेरे लिए काम करता है। मैंने एक फ्रेमवर्क ए बनाया, जो अलमॉफायर को प्रेरित करता है। मेरा होस्ट ऐप (एम्बेडेड फ्रेमवर्क ए) सिमुलेटर में काम करता है। लेकिन जब मैं इसे असली iPhone में चलाने की कोशिश करता हूं, तो यह त्रुटि के साथ क्रैश हो जाता है: Alamofire: dyld: लाइब्रेरी लोड नहीं: @ rpath / Alamofire.framework / Alamofire कारण: कोई उपयुक्त छवि नहीं मिली। क्या पाया: xxx / ddcdemo.app / Frameworks / iddc.framework / चौखटे / Alamofire.framework / Alamofire: mach-o, लेकिन गलत आर्किटेक्चर
DàChún

1
@ फ्रेमवर्क के लिए वैकल्पिक बनाने से मेरी समस्या हल हो गई। लेकिन क्या आप मुझे समझा सकते हैं कि रूपरेखा को वैकल्पिक बनाने का व्यवहार क्या है?
मितेश डोबैरीया

2
धन्यवाद! आपके चरण 5 में, मेरे पास "कॉपी करते समय केवल" कॉपी किया गया था और यह मेरा मुद्दा था।
एंडी

48

मैंने Swift3 / Xcode 8.1 का उपयोग करके एक फ्रेमवर्क बनाया है और इसे Objective-C / Xcode 8.1 प्रोजेक्ट में उपभोग कर रहा है। इस समस्या को ठीक करने के लिए मुझे Always Embed Swift Standard Librariesविकल्प को सक्षम करना होगा Build Options

इस स्क्रीनशॉट पर एक नजर डालें:

यहाँ छवि विवरण दर्ज करें


3
इसने अब मेरे लिए काम किया। इस समस्या का समाधान BuildPhases -> कॉपी फ़ाइलों -> गंतव्य के तहत फ्रेमवर्क का चयन करें और अपने ढांचे को जोड़ने के लिए है। संभावना है कि यहां आपकी लाइब्रेरी गायब है।
हरीश

@ हरीश, आप जिस समाधान का सुझाव दे रहे हैं, वह पहले से ही कई लोगों द्वारा सुझाया गया है और निश्चित रूप से मैं पहले बिंदु पर इसका ध्यान रखता हूं। मेरे मामले में वहां ढांचा जोड़ा गया था लेकिन फिर भी वही मुद्दा सामने आया। फिर मैं इसे खुद से खोदता हूं। अगर आप इस समाधान को वोट कर चुके हैं तो मुझे नहीं पता कि जब आप मेरे मामले में काम नहीं कर रहे थे तो आप इस बारे में निश्चित क्यों हैं: S
NeverHopeless

@ हर्ष धन्यवाद। आपका जवाब मुझे मदद की और अधिक और बिल्कुल NeverHopeless भी किया :) धन्यवाद तुम लोग
मोहसिन Khubaib अहमद

यह केवल एक चीज थी जो मेरे लिए काम करती थी .. लेकिन मैं अपने लक्ष्य के Embedded Binariesअनुभाग में पहले से ही "एम्बेडिंग" कर रहा हूं । तो यह काम क्यों करता है?
गुप्त

बहुत बढ़िया यह बात काम करती है क्योंकि यदि उद्देश्य सी परियोजना में एम्बेड करने के लिए एक स्विफ्ट लाइब्रेरी या पॉड का उपयोग किया जाता है। ऑब्जेक्टिव C प्रोजेक्ट में अक्सर इस झंडे को नंबर
स्वरुप S

47

सबसे पहले Command + Option + Shift + K के बाद बनाने की कोशिश करें। अगर फिर भी फेल होते हैं तो नीचे दिए गए चरणों को करें।

यदि कोई Xcode 8 में इस त्रुटि का सामना कर रहा है, तो अपने लक्ष्य के सामान्य टैब के तहत आवश्यक के बजाय अपनी रूपरेखा स्थिति को वैकल्पिक में बदलें ।

यहाँ छवि विवरण दर्ज करें


3
यह फ्रेमवर्क से कक्षाओं को नहीं पहचानने के लिए रनटाइम बना देगा
टेस्ला

@azimov सही है। मैं इस दुविधा का सामना कर रहा हूँ। आवश्यक कारण "छवि नहीं मिली" त्रुटि है और अगर हम इसे वैकल्पिक रूप से सेट करने का प्रयास करते हैं तो यह "अपरिचित चयनकर्ता" के साथ रनटाइम पर क्रैश हो जाएगा
एडम मेंडोज़ा

1
हालांकि मेरा ढांचा पहले से ही लिंक बायनेरिज़ और एंबेड में था, फिर भी मुझे कॉपी फेज जोड़ना पड़ा। डाईल्ड: लाइब्रेरी लोड नहीं: @ rpath / AFNetworking.framework / AFNetworking से संदर्भित: / उपयोगकर्ता / {उपयोगकर्ता} / लाइब्रेरी / डेवलपर / कोरसिम्यूलेटर / डिवाइस / 6833A85C-5783-45FA-A4D5-991D286B28C2 / data / बंडल / अनुप्रयोग / B1A0A3B2-92A2-41B0-9884-6DB6995A0D7E / MyApp.app / MyApp कारण: छवि नहीं मिली (lldb) समाधान: प्रोजेक्ट -> लक्ष्य - बिल्ड चरणों -> नई कॉपी फ़ाइलें चरण जोड़ने के लिए शीर्ष पर - गंतव्य = फ्रेमवर्क फ्रेमवर्क चुनें। कि नकल की जरूरत है
एडम मेंडोज़ा

@AdamMendoza मैंने ऐसा करने के कारण अपना ऐप अस्वीकार कर दिया था।
jbouaziz

@jbouaziz, हाँ, एक त्रुटि जिसे आप चला सकते हैं .framework वसा होने के कारण है, जिसका अर्थ है कि इसमें आर्किटेक्चर हैं जो iOS पर समर्थित नहीं हैं जैसे कि i386 x86_64 इसके अलावा आवश्यक armv7 arm64। स्टोर आपको एक त्रुटि देगा, लेकिन आप Xcode में त्रुटि नहीं देख सकते हैं। लोडर का उपयोग Xcode -> ओपन डेवलपर टूल -> एप्लिकेशन लोडर के तहत करें। सॉल्यूशन इसे पतला देखें -> ikennd.ac/blog/2015/02/…
एडम मेंडोज़ा

28

मुझे iOS 9.x वर्जन में इसी तरह का मुद्दा मिला

ISSUE IS: जैसे ही मैं नीचे त्रुटि के साथ ऐप खोलता हूं, ऐप क्रैश हो जाता है।

dyld: पुस्तकालय लोड नहीं: / सिस्टम / सीमाएँ / नियम / कार्य / उपयोगिताएँ। सूचनाएँ / उपयोगिताएँ / प्रमाणपत्र से संदर्भित: /var/containers/Bundle/Application/######/TestApp.app/TestApp कारण: छवि नहीं मिली

मैं बदल कर इस समस्या सुलझा ली है Requiredकरने के लिए Optionalमें Linked Frameworks and Librariesके लिए UserNotifications.frameworkरूपरेखा।


यह काम। क्या किसी को पता है क्यों? Cuz कुछ डिवाइसेस को यह सेट करने की आवश्यकता होती है जो अन्य नहीं करते हैं।
NEO

मुझे "चेतावनी: प्रक्रिया में ऑब्जेक्टिव-सी श्रेणी के डेटा को पढ़ने के लिए समर्थन कोड निष्पादित नहीं कर सका। यह उपलब्ध प्रकार की गुणवत्ता को कम कर सकता है।" जब एक वैकल्पिक के रूप में मेरे काम को चिह्नित करें
BergP

यह काम किया है शायद कारण यह है कि कुछ फ्रेमवर्क सिम्युलेटर में नहीं चला, इसीलिए
गौतम सोयाराज

@ redent84 आपकी टिप्पणी के साथ इस जवाब ने मुझे पागल होने से बचा लिया। प्रामाणिकता के साथ इस मुद्दे पर
दौड़ें.फ़्रेमवर्क

26

मुझे बिल्ड सेटिंग्स टैब के तहत रनपथ सर्च पाथ्स में निम्नलिखित पंक्ति को यहाँ पर लिखा गया है :
@executable_path/Frameworks

यहाँ छवि विवरण दर्ज करें


यह मेरे लिए मुद्दा तय किया। मुझे अपने iOS 9 ऐप में ऐप एक्सटेंशन जोड़ने के बाद समस्या होने लगी। एक्सटेंशन जोड़ने से पहले, मेरा ढांचा ठीक पाया गया था। प्रतिलिपि फ़ाइलें बनाने के चरण को जोड़ने से कोई मदद नहीं मिली, और मैं पहले से ही फ्रेमवर्क को एम्बेड कर रहा था।
ग्रेग

यह बहुत अजीब है यह डिफ़ॉल्ट रूप से शामिल नहीं है। यदि आप अनज़िप करते हैं और अपने आईपीए को देखते हैं, तो आपको पेलोड / appname.app / चौखटे / में अपने ढांचे को ढूंढना चाहिए। हालाँकि, इस खोज पथ को जोड़ने के लिए एप्लिकेशन को रनटाइम के दौरान इस फ़ोल्डर में देखना होगा। अजीब।
मटकाव्ज़ १२

25

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

अधिक जानकारी के लिए मेरे लक्ष्य के लिए एक 'कॉपी फ़ाइल्स बिल्ड फ़ेज़' जोड़ने का तरीका देखें ।

आधिकारिक Apple डॉक्स: https://developer.apple.com/library/mac/recipes/xcode_help-project_editor/Articles/CreatingaCopyFilesBuildPhase.html


इतनी सारी चीजों को आजमाने के बाद, यही मेरे लिए इसका हल है। लिंक बाइनरी और एंबेड फ्रेमवर्क में मेरे पास पहले से ही ढांचा था। मुझे नहीं लगा कि मुझे एक कॉपी फेज भी जोड़ना है, लेकिन यह तय हो गया।
एडम मेंडोज़ा

14

यदि आप Xcode 11 या नए का उपयोग कर रहे हैं :

  1. अपने लक्ष्य की सेटिंग पर जाएं और सामान्य चुनें ।

लक्ष्य सेटिंग / सामान्य

  1. फ्रेमवर्क, लाइब्रेरी और एंबेडेड कंटेंट तक नीचे स्क्रॉल करें ।

  2. सुनिश्चित करें एम्बेड और साइन या प्रवेश किए बिना एम्बेड मूल्य के लिए चयन किया जाता है एम्बेड यदि आवश्यक हो तो विकल्प।

फ्रेमवर्क, लाइब्रेरी और एंबेडेड कंटेंट सेक्शन



11

हैरानी की बात है, सभी आवश्यक टुकड़े यहां प्रलेखित नहीं हैं, कम से कम Xcode 8 के लिए।

मेरा मामला उसी कार्यक्षेत्र के हिस्से के रूप में एक कस्टम-निर्मित ढांचा था। यह गलत तरीके से बनाया जा रहा था। इस धागे पर जेरेमी के अंतिम प्रतिक्रिया के आधार पर:

https://forums.developer.apple.com/thread/4687

मैं सेट करना पड़ा Dynamic Library Install Name Base( DYLIB_INSTALL_NAME_BASE) के तहत Build Settingsकी फ्रेमवर्क परियोजना और फिर इसे फिर से बनाना। इसे गलत तरीके से सेट किया गया था $(LOCAL_LIBRARY_DIR)और मुझे इसे बदलना पड़ा @rpath

इसलिए ऐप प्रॉजेक्ट में लिंक प्रोसेसिंग स्टेज में , यह पथ-अप-अप के/Library/Frameworks/fw.Framework/fw बजाय होस्ट ऐप को रनटाइम के दौरान (जैसे, रनटाइम फाइल सिस्टम की जड़) से फ्रेमवर्क को गतिशील रूप से लोड करने का निर्देश दे रहा था।/Frameworks/fw.Framework/fw

अन्य सभी सेटिंग्स के बारे में: यह करता है में 3 स्थानों पर होना जरूरी Build Phasesहै, लेकिन इन पर एक बार जब आप बस में जोड़ने के लिए पूरी तरह तैयार हैं Embedded Binariesकी स्थापना Generalकी मेजबानी App का टैब।

मुझे एक अतिरिक्त चरण स्थापित करने की आवश्यकता नहीं थी Copy Files, जो कि वैसे भी एम्बेडिंग चरण के संबंध में सहज रूप से बेमानी लगता है। बिल्ड ट्रांसक्रिप्ट के टेल एंड की जाँच करके हम यह आश्वस्त कर सकते हैं कि यह आवश्यक नहीं है।

PBXCp /Users/xyz/Library/Developer/Xcode/DerivedData/MyApp-cbcnqafhywqkjufwsvbzckecmjjs/Build/Products/Debug-iphoneos/MyFramework.framework

[कई वर्बोज़ लाइनें हटा दी गईं, लेकिन यह Xcode UI में सरलीकृत ट्रांस्क्रिप्ट से स्पष्ट है।]

मुझे अभी भी पता नहीं है कि Xcode ने DYLIB_INSTALL_NAME_BASEमुझ पर गलत तरीके से मूल्य क्यों निर्धारित किया ।


1
धन्यवाद, यह Xcode 11 में मेरा मुद्दा निकला। मैं अपने स्वयं के फ्रेमवर्क में से एक का आयात कर रहा था, जो पहले काम करता था, लेकिन "डाइल्ड: लाइब्रेरी लोडेड नहीं" त्रुटि जारी करना शुरू कर दिया। स्पष्ट होने के लिए, आप जिस रूपरेखा को आयात करने का प्रयास कर रहे हैं, उस परियोजना में "डायनामिक लाइब्रेरी इन्स्टॉल नेम बेस" का निर्माण "@rpath" पर करना चाहते हैं, कि उस परियोजना में जिसे आप आयात कर रहे हैं। किसी तरह यह "/ लाइब्रेरी / फ्रेमवर्क" पर सेट हो गया।
बेन स्टाल

खुशी है कि यह 3 साल बाद सहायक था। तदनुसार संपादित किया गया।
बेसजेन

9

मेरे मामले में समाधान एंबेडेड बायनेरिज़ से संकलित ढांचे को हटाने का था, जो कार्यक्षेत्र में एक स्टैंडअलोन प्रोजेक्ट था, इसे साफ और पुनर्निर्माण करना, और अंत में एंबेडेड बायनेरिज़ को फिर से जोड़ना।


8

मेरा वातावरण: Cocos2d 2.0, Box2d, Objective C

ऊपर दिए गए अन्य उत्तरों को करने के अलावा, मैं अंत में जनरल टैब पर गया और वॉच कीट को वैकल्पिक बना दिया।

टार्गेट जनरल लिंक्ड फ्रेमवर्क एंड लाइब्रेरीज़ वाचकिट.फ्रामवर्क वैकल्पिक


8

यदि आप एक तृतीय-पक्ष फ्रेमवर्क का उपयोग कर रहे हैं, और अपने निर्भरता प्रबंधक के रूप में कोकोपोड्स का उपयोग कर रहे हैं, तो pod installअपनी फली को ताज़ा करने के लिए प्रयास करें।

यह दुर्घटना मेरे द्वारा उपयोग की जा रही एक तृतीय-पक्ष लाइब्रेरी पर हो रही थी, इसलिए खुशी है कि उपरोक्त समाधान ने मेरे लिए काम किया, आशा है कि यह आपके लिए काम करेगा!


1
महान! मेरी समस्या ठीक कर दी। लेकिन क्या मेरे होस्ट ऐप में पॉड निर्भरता स्थापित करने से बचने का कोई तरीका है?
21

8

यहाँ छवि विवरण दर्ज करें

बिल्ड चरणों-> एंबेड फ़्रेमवर्क पर "कॉपी किए जाने पर ही इंस्टॉल करें" को अचयनित करके मेरे लिए हल किया गया


1
इस चेकबॉक्स के बिंदु को जानना अच्छा होगा यदि सिस्टम यह नहीं मानता है कि "डिबग इंस्टॉल" "इंस्टॉल" नहीं है। भले ही, अगर यह चेतावनी के साथ ऐप को चलाने पर रोक लगाने के बजाय हार्डवेयर पर ऐप के क्रैश का कारण बनता है, तो यह एक साफ-सुथरा दूसरा Xcode दोष है
विलियम सेर्नियुक

8

यह एक रनटाइम त्रुटि है, जो इसके कारण होता है Dynamic Linker

dyld: Library not loaded: @rpath/...
...
Reason: image not found

त्रुटि Library not loadedके साथ @rpathइंगित करता है कि Dynamic Linkerद्विआधारी नहीं मिल रहा।

  1. जांचें कि क्या डायनेमिक फ्रेमवर्क को जोड़ा गया था General -> Embedded Binaries

  2. @rpathउपभोक्ता (एप्लिकेशन) और निर्माता (डायनामिक फ्रेमवर्क) के बीच सेटअप की जाँच करें :

    • गतिशील ढांचा:
      • Build Settings -> Dynamic Library Install Name
    • आवेदन:
      • Build Settings -> Runpath Search Paths
      • Build Phases -> Embed Frameworks -> Destination, Subpath

गतिशील लिंकर

Dynamic Library Install Name(LD_DYLIB_INSTALL_NAME)जिसका उपयोग loadable bundle( Dynamic frameworkएक व्युत्पन्न के रूप में) किया जाता है, जहां बाइनरी फ़ाइल (नहीं .framework) के लिए dyldखेल में आते हैं
Dynamic Library Install Name। हाँ, वे एक ही नाम है, लेकिन MyFramework.frameworkएक है packaged bundleके साथ MyFrameworkबाइनरी फ़ाइल और संसाधनों के अंदर।
निर्देशिका में इस पथ पूर्ण या संबंधित हो सकता है (उदाहरण के लिए @executable_path, @loader_path, @rpath)। सापेक्ष पथ अधिक बेहतर होता है क्योंकि यह एक एंकर के साथ बदल दिया जाता है जो तब उपयोगी होता है जब आप अपने बंडल को एकल निर्देशिका के रूप में वितरित करते हैं

पूर्ण पथ - फ्रेमवर्क 1 उदाहरण

//Framework1 Dynamic Library Install Name
/some_path/Framework1.framework/subfolder1

@executable_path

@executable_path - प्रविष्टि बाइनरी के सापेक्ष - फ्रेमवर्क 2 उदाहरण
उपयोग मामला: Dynamic frameworkएक आवेदन में एम्बेड करें

//Application bundle(`.app` package) absolute path
/some_path/Application.аpp

//Application binary absolute path 
/some_path/Application.аpp/subfolder1

//Framework2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

//Framework2 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1

//Framework2 Dynamic Library Install Name 
@executable_path/../Frameworks/Framework2.framework/subfolder1

//Framework2 binary resolved absolute path by dyld
/some_path/Application.аpp/subfolder1/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

@loader_path

@loader_path - बंडल के सापेक्ष जो इस बाइनरी
उपयोग केस का मालिक है : एम्बेडेड फ्रेमवर्क के साथ फ्रेमवर्क - फ्रेमवर्क 2-3_1 जिसमें फ्रेमवर्क -2 अंदर है

//Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1

//Framework3_2 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1

//Framework3_1 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1

//Framework3_1 @loader_path == Framework3_1 @executable_path
/some_path/Application.аpp/subfolder1

//Framework3_2 @executable_path == Application binary absolute path
/some_path/Application.аpp/subfolder1

//Framework3_2 @loader_path == Framework3_1 binary absolute path
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1

//Framework3_2 Dynamic Library Install Name 
@loader_path/../Frameworks/Framework3_2.framework/subfolder1

//Framework3_2 binary resolved absolute path by dyld
/some_path/Application.аpp/Frameworks/Framework3_1.framework/subfolder1/../Frameworks/Framework3_2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework3_1.framework/Frameworks/Framework3_2.framework/subfolder1

@ रथ - रनपथ खोज पथ

फ्रेमवर्क 2 का उदाहरण

पहले हमें डाइल्ड के साथ काम करने के लिए एक रूपरेखा तैयार करनी थी। यह सुविधाजनक नहीं है क्योंकि एक ही फ्रेमवर्क का उपयोग विभिन्न कॉन्फ़िगरेशन के साथ नहीं किया जा सकता है

@rpath एक यौगिक अवधारणा है जो बाहरी (अनुप्रयोग) और नेस्टेड (डायनामिक फ्रेमवर्क) भागों पर निर्भर करती है:

  • आवेदन:

    • Runpath Search Paths(LD_RUNPATH_SEARCH_PATHS)- उन टेम्प्लेट की सूची को परिभाषित करता है जिन्हें प्रतिस्थापित किया जाता है @rpath
       @executable_path/../Frameworks
    • Build Phases -> Embed Frameworks -> Destination, Subpathशायर होने की समीक्षा करें जहां वास्तव में एंबेड फ़्रेमवर्क स्थित है
  • गतिशील रूपरेखा:

    • Dynamic Library Install Name(LD_DYLIB_INSTALL_NAME)- बिंदु जो @rpathस्थानीय बंडल पथ के साथ एक बाइनरी में उपयोग किया जाता है
      @rpath/Framework2.framework/subfolder1
//Application Runpath Search Paths
@executable_path/../Frameworks

//Framework2 Dynamic Library Install Name
@rpath/Framework2.framework/subfolder1

//Framework2 binary resolved absolute path by dyld
//Framework2 @rpath is replaced by each element of Application Runpath Search Paths
@executable_path/../Frameworks/Framework2.framework/subfolder1
/some_path/Application.аpp/Frameworks/Framework2.framework/subfolder1

* ../- वर्तमान निर्देशिका के जनक पर जाएं

otool - ऑब्जेक्ट फाइल डिस्प्ले टूल

//-L print shared libraries used
//Application otool -L
@rpath/Framework2.framework/subfolder1/Framework2

//Framework2 otool -L
@rpath/Framework2.framework/subfolder1/Framework2

//-l print the load commands
//Application otool -l
LC_LOAD_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2

LC_RPATH
@executable_path/../Frameworks

//Framework2 otool -l
LC_ID_DYLIB
@rpath/Framework2.framework/subfolder1/Framework2

install_name_tool डायनामिक शेयर्ड लाइब्रेरी इन्स्टॉल नाम का उपयोग करके बदलें -rpath

CocoaPodsका उपयोग करता है use_frameworks![के बारे में] को विनियमित करने के लिएDynamic Linker

[शब्दावली]


6

हाल ही में पुराने आईफ़ोन (जैसे iPhone 6) और Xcode (11.3.1) पर CoreNFC को आयात करने के साथ इस मुद्दे पर भाग गया। मैं इसे काम करने में सक्षम था

  1. अपनी परियोजनाओं में , लक्ष्य का चयन करें।
  2. शीर्ष पर गोटो जनरल टैब।
  3. ' फ्रेमवर्क, लाइब्रेरी एंड एंबेडेड कंटेंट ' सेक्शन के तहत, फ्रेमवर्क जोड़ें (मेरे लिए यह कोरएनएफसी था)। अन्य लक्ष्यों के लिए दोहराएं।
  4. शीर्ष पर बिल्ड चरणों पर क्लिक करें और ' लिंक बाइनरी विद लाइब्रेरीज़ ' का विस्तार करें
  5. परेशानी की रूपरेखा को वैकल्पिक बनाएं (आवश्यक से)।

इसने मुझे बिना किसी कोड परिवर्तन के पुराने / नए आईफ़ोन के लिए संकलन करने की अनुमति दी। मुझे उम्मीद है कि इससे अन्य मदद मिलेगी।


1
धन्यवाद। इसे वैकल्पिक बनाना मिसिंग लिंक था ...
fl034

काम नहीं करता है, ऐप क्रैश करता है और कुछ असेंबली कोड पर ब्रेकप्वाइंट के बजाय क्रैश टाइप का संकेत देने वाला कोई संदेश नहीं है।
न्यूज़ोनिक

वैकल्पिक बनाने के लिए इसकी आवश्यकता क्यों है?
रोहितवत्स

5

मेरी भी यही समस्या थी। मैंने एक iPhone के साथ अपनी परियोजना के निर्माण की कोशिश की जिसे मैंने पहले कभी इस्तेमाल नहीं किया और मैंने एक नया ढांचा नहीं जोड़ा। मेरे लिए, सफाई ने ठीक काम किया ( Shift + Command + K )। शायद ऐसा इसलिए है क्योंकि मैं Xcode 7 के बीटा 5 और iOS 9 बीटा के साथ iPhone 6 का उपयोग करता हूं, लेकिन यह काम कर गया।


और शायद एक क्लीन बिल्ड फोल्डर भी (CMD + Shift + Alt + K)
ग्रिफस

4

मेरे मामले में, मेरी परियोजना वस्तुनिष्ठ-सी द्वारा लिखी गई है और पुस्तकालय में स्विफ्ट फाइलें हैं। इसलिए मैंने अपने प्रोजेक्ट के बिल्ड सेटिंग्स टैब में "ऑलवेज एंबेड स्विफ्ट स्टैंडर्ड लाइब्रेरीज़" को हां में बदल दिया और यह पूरी तरह से ठीक हो गया।


4

Xcode में किसी भी प्रोजेक्ट या फ्रेमवर्क प्रोजेक्ट के लिए, जो पॉड्स का उपयोग करता है, डायनेमिक लाइब्रेरी (dylb) को लोड न करने का एक आसान तरीका है कि आप स्टैटिक मोड में स्याही से पॉड फ़ाइल सेट करें। ऐसा करने के लिए, बस अपनी पॉड फ़ाइल में निम्न पंक्ति न लिखें।

use_frameworks!

एक बार आपके द्वारा सेव की गई लाइन जो आपके द्वारा सेव की गई है, बस कंसोल को रन करें:

$ pod update

2

यदि आपके पास विकास पॉड है, तो अपने ऐप को सिम्युलेटर पॉड से इंस्टॉल करें -> साफ -> फिर से चलाएँ ...


2

यही बात तब थी जब मैंने एक नया कॉन्फ़िगरेशन और बिल्ड स्कीम बनाया है।

तो मेरे लिए हल चलाना था

pod install

इस नए बनाए गए कॉन्फ़िगरेशन के लिए।


1

इंटरनेट पर उपलब्ध सभी तरीकों और मेरे स्वयं के परीक्षण और त्रुटि की 100 बार कोशिश करने के बाद। अंत में मैं इसे हल करने में सक्षम था। - Apeksha Sahu 6 मिनट पहले
Goto iTunes in Mac -> खातों -> इस कंप्यूटर को अधिकृत करें - Apeksha Sahu 5 मिनट पहले
दूसरा चरण .... iPad और iPhone में सेटिंग्स में गोटो डेवलपर और पहचानकर्ताओं और स्पष्ट कंप्यूटर के साथ सब कुछ reindex। यह मेरे लिए काम करता है ........ ....... सभी प्रमाणपत्रों को अपडेट करने के बाद, Mac OS seirra बीटा लेटेस्ट वर्जन से Mac OSHigh seria 10.13.15 वर्जन को रीकोड करने के बाद, Xcode लेटेस्ट वर्जन को फिर से इंस्टॉल करने के लिए। आदि आदि ... जितने तरीके आप सोच सकते हैं मैंने किया। -यहाँ छवि विवरण दर्ज करें


1

NO (YES) से बिल्ड सेटिंग्स ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIESमें फ्लैग को बदलने की कोशिश करें (पहले के xcode वर्जन में Embedded Content Contains Swift Code)।


1

Xcode 11

  1. अपने लक्ष्य की सेटिंग पर जाएं और सामान्य चुनें।
  2. "फ्रेमवर्क, लाइब्रेरी और एंबेडेड कंटेंट" देखें
  3. "डू नॉट एंबेड" रखें और सुनिश्चित करें कि आपके सभी लक्ष्यों (यदि आपके पास एक से अधिक हैं) ने केवल यह निर्धारित किया है कि यह स्वयं का ढांचा है और अन्य लक्ष्य नहीं।

1

में Xcode 11

मैं उसी मुद्दे का सामना कर रहा था

जनरल टैब > "फ्रेमवर्क, लाइब्रेरी और एंबेडेड कंटेंट" में "डू नॉट एंबेड" को बदलना अब भी वही त्रुटि थी।

बिल्ड फेज टैब > एंबेड फ्रेमवर्क सेक्शन में फ्रेमवर्क को जोड़ने के लिए मेरे लिए क्या हल किया गया था

--Updated ---

मैंने देखा कि एक्सकोड 11 के पिछले संस्करणों में निर्मित परियोजनाओं में एक्सकोड 11 में चलने पर एंबेडेड फ्रेमवर्क सेक्शन उपलब्ध नहीं है, समाधान प्राप्त करने के लिए नीचे दिए गए चरणों का पता लगाएं:

1: सबसे पहले बिल्ड चरणों टैब के तहत नई कॉपी फ़ाइलें चरण को जोड़ने की आवश्यकता है ।

यहाँ छवि विवरण दर्ज करें

2: दूसरा एंबेडेड फ्रेमवर्क में जोड़े गए चरण का नाम बदल दें यहाँ छवि विवरण दर्ज करें

3: डेस्टिनेशन को फ्रेमवर्क में बदलें ।

यहाँ छवि विवरण दर्ज करें

4: वह फ्रेमवर्क जोड़ें जिसके लिए त्रुटि हुई थी।

यहाँ छवि विवरण दर्ज करें


1

हालांकि हर कोई एंबेडेड बायनेरिज़ के तहत फ्रेमवर्क को एम्बेड करने के लिए कह रहा है, लेकिन फिर भी यह काम नहीं कर रहा है, क्योंकि हम यहां एक महत्वपूर्ण कदम याद कर रहे हैं।

एंबेडेड बायनेरिज़ टैब के तहत बायनेरिज़ को जोड़ने के लिए दो सही चरण यहाँ दिए गए हैं:

  1. सामान्य टैब के तहत "लिंक्ड फ्रेमवर्क एंड लाइब्रेरी" से जो फ्रेमवर्क दे रहा है, उसे निकालें।

  2. अब हटाए गए ढांचे को एंबेडेड बायनेरिज़ टैब के तहत ही जोड़ें और यह सब करने की आवश्यकता होगी।

इसे उपकरण पर चलाएँ और उस मुस्कान को बनाए रखें;)


0
  1. Xcode -> कार्यक्षेत्र सेटिंग में फ़ाइल पर जाएँ
  2. दिखाई देने वाले तीर पर क्लिक करें / उपयोगकर्ता / सेब / लाइब्रेरी / डेवलपर / Xcode / DerivedData
  3. व्युत्पन्न डेटा का चयन करें और इसे कचरा में स्थानांतरित करें।
  4. एक्सकोड को कम करें और इसे फिर से खोलें।
  5. प्रोजेक्ट को साफ करें और फिर से चलाएं।

ऊपर दिए गए कदमों से मेरी समस्या का समाधान हो गया।


-5

यदि कोई व्यक्ति अभी भी इस समस्या का सामना कर रहा है, तो कई अन्य उत्तरों में उल्लिखित सभी चरणों का पालन करने के बावजूद, आपको निम्नलिखित के अनुसार अपने कोड हस्ताक्षर प्रमाण पत्र को रद्द करना और फिर से बनाना पड़ सकता है :

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


बिल्कुल सही। कोड हस्ताक्षर में इस त्रुटि के साथ कुछ भी नहीं है।
.ग्रेसचेंग
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.