2014-09-26 12 views
9

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

enter image description here

लेकिन, परियोजना बनाता ठीक - लक्ष्य निर्भरता पाया जाता है, इसलिए कोई संकलन समस्या नहीं है। यह केवल परिणामी निर्मित ढांचा है - और लॉन्च करने पर पर्याप्त यकीन है, मेरे पास एक लिंकर त्रुटि है, यह छवि नहीं मिल सकती है। निर्माण लॉग को देखते हुए, इसे यहाँ देख रहा है:

/Users/Craig/Projects/Fluffy/build/Debug-iphoneos/ 

कौन समझ में आता है - कि क्या मेरी ढांचे के लिए सेटिंग्स बिल्ड में परिभाषित किया जाता है:

enter image description here

लेकिन प्रतिलिपि स्रोत के रूप में, विफल रहता है ढांचा मौजूद नहीं है:

PBXCp /Users/Craig/projects/Fluffy/build/Debug-iphoneos/Fluffy_iOS.framework /Users/Craig/Library/Developer/Xcode/DerivedData/MyApp-dcjfhcnyzkwzxiejuuxqlsgajreb/Build/Products/Debug-iphoneos/MyApp/Frameworks/Fluffy_iOS.framework 
... 
error: /Users/Craig/projects/Fluffy/build/Debug-iphoneos/Fluffy_iOS.framework: No such file or directory 

लेकिन, मेरा ढांचे के लिए निर्माण लॉग को देखते हुए, मैं देख रहा हूँ कि यह वास्तव में यहाँ समाप्त:

/Users/Craig/Library/Developer/Xcode/DerivedData/Fluffy-fuuewsvogdkycegheyrsabkiicxc/Build/Products/Debug-iphonesimulator/Fluffy_iOS.framework 

मुझे लगता है कि समझ में आता है - DerivedData थोड़ी देर के लिए अब किसी भी बनाया उत्पादों के लिए डिफ़ॉल्ट स्थान दिया गया है।

और जब मैं उम्मीद निर्माण फ़ोल्डर पर एक नज़र डालें, वहाँ ज्यादा नहीं है, यह का एक बहुत पुराना है, और यह से कोई भी डीबग विन्यास से संबंधित है:

enter image description here

तो मेरी प्रश्न हैं: DerivedData फ़ोल्डर में मेरा ढांचा क्यों रखा जा रहा है, जब प्रोजेक्ट के सापेक्ष build फ़ोल्डर में बिल्ड सेटिंग्स में रखा जा रहा है? क्या ये पैरामीटर (प्रति कॉन्फ़िगरेशन बिल्ड उत्पाद पथ इत्यादि) बिल्कुल परामर्शित हैं?

और, मुझे इसे सुलझाने के लिए क्या करना चाहिए? मेरे अनुप्रयोग को ढांचे के लिए सही DerivedData फ़ोल्डर में कैसे दिख सकता है, सही कॉन्फ़िगरेशन (डीबग बनाम रिलीज) के लिए एक्स्टेंसिबल तरीके से और मेरे बिना काम करने के लिए मैन्युअल रूप से पूर्ण पथ निर्दिष्ट करने के लिए काम करेगा?

+0

मैं बिल्कुल वैसा ही समस्या हो रही है। क्या आप एक फिक्स ढूंढने में कामयाब रहे हैं? – olive

+0

नहीं, दुर्भाग्य से कोई भाग्य नहीं। :-(बस जिज्ञासा से बाहर –

+0

, आप एक कार्यक्षेत्र है और Fluffy_iOS एक निर्भरता के रूप में है कि कार्यक्षेत्र में बनाया जा रहा है कर –

उत्तर

25

ठीक है, इसलिए मुझे पता चला कि इस के आसपास कैसे काम करना है। यह मानता है कि आपके पास वर्कस्पेस है और आपने वर्कस्पेस में एक प्रोजेक्ट के रूप में ढांचा शामिल किया है और आप वर्कस्पेस में किसी अन्य प्रोजेक्ट से उत्पाद बनाने की कोशिश कर रहे हैं जिसमें ढांचा शामिल है।

आपको क्या करना है यह पता लगाना है कि ढांचा तैयार किया जा रहा है। यह आमतौर पर DeriveData निर्देशिका के तहत कुछ पागल निर्देशिका है। खोजक पर जाएं और उस कॉन्फ़िगरेशन के लिए ढूंढें जिसे आपने अभी बनाने की कोशिश की है।

उत्पाद लक्ष्य की General सेटिंग्स में, Embedded Binaries के तहत, उस फ़ाइल को उसमें खींचें। इसे अब Project Navigator में रखना चाहिए। आपको इसे Linked Frameworks and Libraries में भी देखना चाहिए जो Embedded Binaries के नीचे था।

Project Navigator पर जाएं और फ़ाइल का चयन करें और इसे File Inspector के अंतर्गत देखें।वहाँ, Relative to Build Products करने के लिए Location बदल जाते हैं।

Build Settings में Framework Search Paths के लिए, $(BUILT_PRODUCTS_DIR) जोड़ें और इसे रिकर्सिव बनाएं। जब आप ढांचे को जोड़ते हैं तो स्वचालित रूप से प्रविष्टि को हटाएं। यह एक स्पष्ट मार्ग होगा जिसमें इसमें DerivedData पथ है।

एक गहरी साफ करो और अच्छा उपाय DerivedData निर्देशिका को हटा दें।

बिल्ड।

अब आप ढांचे का रंग काला हो देखना चाहिए और यह ठीक से काम करना चाहिए।

+0

हुर्रे अधिकांश अस्पष्ट और महत्वपूर्ण:?! ** परियोजना नेविगेटर में जाओ और फ़ाइल का चयन करें और के तहत इसे देखने फाइल इंस्पेक्टरवहां, उत्पादों को बनाने के लिए संबंधित में स्थान बदलें ** – skywinder

+0

क्या प्रविष्टि? "जब आप ढांचे को जोड़ते हैं तो स्वचालित रूप से उस प्रविष्टि को हटाएं।" – lespommes

+0

आमतौर पर जब आप एक फ्रेमवर्क जोड़ते हैं, तो एक्सकोड फ्रेमवर्क खोज पथ में इसके लिए पथ में प्रवेश डाल देगा। वह पथ आपकी पथ निर्देशिका का उपयोग करके एक स्पष्ट पथ होगा। यह दूसरों के साथ अच्छा नहीं खेलता है क्योंकि उनके पास आपकी पथ संरचना नहीं है (जिसमें आपका उपयोगकर्ता नाम शामिल है) –

0
ऊपर जवाब जो सिम्युलेटर पर पूरी तरह से काम करता है के अलावा

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

परियोजना है कि इस ढांचे पर निर्भर करता है में: निर्माण सेटिंग्स के अंतर्गत:

यहाँ उस के लिए हल है एक प्रतिलिपि फ़ाइलों चरण जोड़ें और प्रतिलिपि फ़ाइल चरण में 'फ़्रेमवर्क' फ़ोल्डर में इस ढांचे में जोड़ें।

+0

एक कॉपी फाइल चरण बनाते समय इसे हल करता है, अगर ढांचा पहले से ही एम्बेड फ्रेमवर्क में है, तो इसका पहले से ही मतलब है कि एक्सकोड इसे फ्रेमवर्क फ़ोल्डर में कॉपी करेगा। फ्रेमवर्क विकल्प के साथ कॉपी फाइल चरण का उपयोग आमतौर पर एक्सकोड के बाहर बनाए गए ढांचे के लिए किया जाता है, यानी कमांड लाइन उपकरण। – chrisamanse

0

ये थोड़ा संशोधित कर रहे हैं @Mobile बेन द्वारा प्रदान किए गए चरणों

मान लें, तो आपको निम्न Xcode प्रोजेक्ट संरचना है

-YourWorkspace 
--YourFramework project 
--YourApp project 

चरण 1 साफ़ Cmd+Shift+K और Cmd+Option+Shift+K साथ सभी लक्ष्यों (में से प्रत्येक का चयन करके उन्हें योजना चयनकर्ता में और हॉटकी संयोजन)

कदम 2. चयन YourFramework परियोजना दबाने। Generic iOS Device चुनें और निर्माण (Cmd+B) YourFramework ढांचे लक्ष्य

चरण 5:

कदम 3. एक सिम्युलेटर (Cmd+B) YourFramework ढांचे लक्ष्य

चरण 4 चुनें और निर्माण YourApp प्रोजेक्ट चुनें। Embedded Binaries में + दबाएं और चुनें YourFramework परियोजना के तहत ढांचे

चरण 6: अब परियोजना नेविगेटर में हाल ही में जोड़े ढांचे (बाईं ओर) का पता लगाने। फ़ाइल इंस्पेक्टर (दाईं ओर) में स्थान Relative to build product का चयन करें।

नोट: मेरा मानना ​​है कि चरण 6 को एक्सकोड में कुछ बग के बी/सी की आवश्यकता है। लेकिन, हालांकि, डिफ़ॉल्ट रूप से Relative to build product का चयन नहीं एक विचार अधिनियम हो सकता है

युपीडी # 1: Xcode 8.0 (8A218a) के बाद से, चरण 6 अब कोई आवश्यकता नहीं है - आईडीई Relative to Build Products स्वचालित रूप से सेट।

संबंधित मुद्दे