Xcode चेतावनी: "आउटपुट फ़ाइल के लिए कई बिल्ड कमांड"


494

मुझे इस तरह एक त्रुटि मिल रही है:

[चेतावनी] चेतावनी: आउटपुट फ़ाइल /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png के लिए कई बिल्ड कमांड

[चेतावनी] चेतावनी: आउटपुट फ़ाइल /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png के लिए कई बिल्ड कमांड

[चेतावनी] चेतावनी: आउटपुट फ़ाइल /Developer/B/Be/build/Release-iphonesimulator/BB.app/n.png के लिए कई बिल्ड कमांड

लेकिन मैंने Xcode की जाँच की है और मुझे ऐसी फ़ाइलों की कोई भी डुप्लिकेट दिखाई नहीं दे रही है। जैसा कि Apple मेलिंग लिस्ट में इस पोस्ट में कहा गया है, कोई डुप्लिकेट नहीं है।

जवाबों:


809

प्रोजेक्ट नेविगेटर में, अपनी Xcode प्रोजेक्ट फ़ाइल चुनें। यह आपको प्रोजेक्ट सेटिंग्स के साथ-साथ प्रोजेक्ट में लक्ष्य भी दिखाएगा। "कॉपी बंडल रिसोर्सेस" बिल्ड फेज में देखें। आपको उस सूची में दो बार अपमानजनक फाइलें मिलनी चाहिए। डुप्लिकेट संदर्भ हटाएं।

Xcode शिकायत कर रही है कि आप एक ही फाइल को दो बार अपने आवेदन के साथ बंडल करने का प्रयास कर रहे हैं।


1
मुझे तब होता है जब मैंने बिल्ड फ़ोल्डर (फाइंडर का उपयोग करके) से कुछ संपत्ति हटा दी थी। एसेट्स को उसी नाम से अपडेट करने वाले लोगों के साथ बदल दिया गया और XCode को "लक्ष्य में जोड़ें" विकल्पों को चिह्नित करते हुए उन्हें खींच दिया गया। ऐसा लगता है कि XCode कॉपी
बंड

1
मैं इसमें एक बात जोड़ना चाहता था। यदि आप किसी भी तरह के डुप्लिकेट संदर्भों की एक टन के साथ समाप्त करते हैं (जैसे मैंने किया), तो आप बस "मान्य सेटिंग्स" पर क्लिक कर सकते हैं और यह स्वचालित रूप से डुप्लिकेट संदर्भ हटा देगा। मैन्युअल रूप से उन्हें ढूंढने की तुलना में बहुत आसान है
जॉन मैटिंगली

1
मेरा मुद्दा भी ऐसा ही था। यह उत्तर निकटतम था। <ProjName> .xcodeproj / project.pbxproj फ़ाइल में डुप्लिकेट प्रविष्टियाँ थीं, भले ही परियोजना ने फ़ाइलों को एक बार दिखाया हो। यह एक विलय मुद्दा था। vi के साथ संपादन ने चाल
चली

11
वर्थ नोटिंग कि अगर आपके पास कॉपी बंडल रिसोर्स चरण में बड़ी मात्रा में डुप्लिकेट फ़ाइलें हैं, तो आप इस पृष्ठ के निचले भाग पर 'मान्य सेटिंग्स' पर क्लिक कर सकते हैं और XCode आपको डुप्लिकेट के बारे में संकेत देगा और यदि आप क्लिक करते हैं, तो वे सभी को हटा देंगे परिवर्तन करें ’। व्यक्तिगत रूप से उनके लिए शिकार करने की तुलना में बहुत तेज नरक।
यति ०४

1
जब मैंने प्रोजेक्ट में "प्रकाशित-आईओएस" को फिर से जोड़ा, तो मुझे स्प्राइटब्यूटल टेम्पलेट्स के साथ एक समान मुद्दा मिला। पता चलता है कि यह "फ़ोल्डर संदर्भ" होना चाहता है और समूह नहीं, और उस पूरे फ़ोल्डर को "कॉपी बंडल संसाधन" में जोड़ दिया है। इसलिए भले ही व्यक्तिगत संसाधन उस सूची में दिखाई न दें, यह सुनिश्चित करने के लिए जांचें कि यह फ़ोल्डर से नहीं जोड़ा जा रहा है।
समकास

127

यह आसानी से होता है जब आप गिट आधारित उपप्रोजेक्ट जोड़ते हैं। Xcode पर्याप्त स्मार्ट नहीं है। भले ही आप इसे खोजक से नहीं देख सकते। भले ही इसे खोजने वाले को बहुत भ्रम हो, क्योंकि "मास्टर" या "बहिष्कृत", (मानक गिट रेपो फाइलें) नाम की कई फाइलें हैं। Xcode4 के साथ, प्रोजेक्ट पर जाएं (बाएं पेड़ की जड़) फिर अपने एप्लिकेशन लक्ष्य पर क्लिक करें और "कॉपी बंडल रिसोर्सेस" का विस्तार करें, फिर .it के सभी संदर्भों को हटा दें, आपको उन्हें वैसे भी अपने ऐप में बेक करने की आवश्यकता नहीं होनी चाहिए।


43
मैं एक दूसरे के बारे में निराश हो गया, इसलिए यह किसी की मदद कर सकता है: ऐप टारगेट -> बिल्ड फेज -> कॉपी बंडल रिसोर्सेस
jaime

2
मेरे Xcode प्रोजेक्ट में एक ही नाम (लेकिन विभिन्न निर्देशिकाओं में) के साथ कई फाइलें थीं। अकस्मात मेरे एक के पास कॉपी बंडल रिसोर्स स्टेप में दोनों थे, जिसके परिणामस्वरूप उनमें से एक को परिणामी ऐप बंडल में ओवरराइट किया जाएगा। बस उनमें से एक को हटा दें।
बस्तीबेन जू २६'१२

112

दरअसल, इसका जवाब काफी सरल है।

अपने Xcode प्रोजेक्ट में उन फाइलों को खोजें जो चेतावनी उठाती हैं, और उनमें से एक को हटा दें।

खोज परिणामों में Xcode उस फ़ाइल का केवल एक संदर्भ दिखाएगा, लेकिन वहाँ रुकना नहीं है, आगे बढ़ें और इसे हटा दें। (इसे हटाने से पहले अपनी परियोजना फ़ाइल का बैकअप बनाना बेहतर होगा)

अब फिर से प्रोजेक्ट बनाएं। चेतावनी अब गायब हो जानी चाहिए। (यह उत्तर xcode के पिछले संस्करण के लिए है)


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

1
यदि आप इससे परेशान रहते हैं, तो Xcode से सभी फ़ाइलों को हटा दें (डिस्क पर उन्हें हटाएं नहीं)। फिर उन सभी को वापस खींचें। यदि आपके पास अभी भी समस्या है, तो आपके पास वास्तव में एक ही नाम के साथ कुछ संसाधन हैं (शायद अलग-अलग फ़ोल्डरों में) - खोजें और नाम बदलें / हटाएं। Xcode आउटपुट एक फ्लैट फ़ोल्डर में जाता है, इसलिए डायरेक्टरी स्ट्रक्चर को अनदेखा किया जाता है।
n13

52

यह एक Xcode बग नहीं है, हालांकि वास्तविक कारण का वर्णन करने के लिए चेतावनी संदेश पर्याप्त सहायक नहीं है।

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


1
हां, यह सही उत्तर है। और स्थिति आसानी से आ सकती है जब आपके पास संसाधन फाइलें होती हैं, जैसे कि एक ही नाम के साथ pngs लेकिन आपकी फाइल सिस्टम पर अलग-अलग dirs में - निर्माण प्रक्रिया के दौरान वे सभी 1 dir को कॉपी किए जाते हैं, अर्थात् ऐप बंडल।
ब्रिंजर

@ ब्रीज़र एक ही नाम के साथ छवियों को अनुमति देने के लिए एक काम है? या छवियों को एक साथ बंडल होने से रोकने के लिए?
एंडी

वास्तव में मुझे पता चला है कि आप बंडलिंग से बचने के लिए फ़ोल्डर संदर्भ बना सकते हैं।
एंडी

डुप्लिकेट नाम के साथ फ़ाइलों को खोजने का एक तरीका यहां है, निर्देशिका की परवाह किए बिना find . | grep -v \.git | rev | cut -d/ -f1 | rev | sort | uniq -c | sort, लेकिन इससे मेरी समस्या हल नहीं हुई
विलियम एंट्रीकेन

26

यह तब होता है जब आपके पास प्रोजेक्ट में समान नाम वाली 2 फाइलें हों। भले ही फाइलें XCode में समूहों में हों, जब परियोजना को संकलित किया जाता है, तो सभी फाइलें एक ही निर्देशिका में समाप्त होती हैं। दूसरे शब्दों में यदि आपके पास /group1/image.jpg और /group2/image.jpg संकलित परियोजना में केवल दो image.jpg फ़ाइलों में से एक होगा।


17

जैसा कि पहले उल्लेख किया गया है, यह समस्या देखी जा सकती है यदि आपके पास एक ही नाम के साथ कई फाइलें हैं, लेकिन प्रोजेक्ट नाविक में विभिन्न समूहों (पीले फ़ोल्डर) में हैं। मेरे मामले में, यह जानबूझकर था क्योंकि मेरे पास एक "प्रीव्यू.जेपीजी" के साथ कई उपनिर्देशिकाएं थीं जिन्हें मैं ऐप बंडल में कॉपी करना चाहता था:

समूह संदर्भ

इस स्थिति में, आपको यह सुनिश्चित करने की आवश्यकता है कि Xcode निर्देशिका को पहचानता है संदर्भ (नीला फ़ोल्डर आइकन) को , न कि केवल समूहों को।

आपत्तिजनक फ़ाइलों को निकालें और "संदर्भ निकालें" चुनें (ताकि हम उन्हें पूरी तरह से हटा न दें):

समूह संदर्भ निकालें


उन्हें प्रोजेक्ट नेविगेटर में वापस खींचकर प्रोजेक्ट में पुनः जोड़ें। दिखाई देने वाले संवाद में, "किसी भी जोड़े गए फ़ोल्डर के लिए फ़ोल्डर संदर्भ बनाएँ" चुनें:

फ़ोल्डर संदर्भ के रूप में जोड़ें


ध्यान दें कि प्रोजेक्ट नाविक में फ़ाइलों में अब एक नीला फ़ोल्डर आइकन है:

फ़ोल्डर संदर्भ


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


15

यह एक बग नहीं है। Xcode सहायताकर्ता आपकी सहायता कर सकते हैं। प्रोजेक्ट नेविगेटर में बाईं ओर लक्ष्य का चयन करें। सेटिंग्स के निचले भाग में "Validate settings" पर क्लिक करें। Xcode सेटिंग्स की जाँच करेगा और यदि संभव हो तो डुप्लिकेट को हटा देगा।


14

इस स्थिति का एक और संस्करण तब हो सकता है जब हेडर में डुप्लिकेट हों बिल्ड चरण ।

इसे ठीक करने के लिए…

  1. अपने प्रोजेक्ट लक्ष्य पर जाएं
  2. चुनें Build Phases
  3. चुनना Headers निर्माण चरण
  4. चेतावनी में दिखाया गया नाम दर्ज करें
  5. दो (या अधिक) आइटम देखें
  6. +|-निचले बाएं कोने में बक्से ढूंढें
  7. किसी एक आइटम का चयन करें, और -बटन पर क्लिक करें

7

मेरे मामले में समस्या एक समूह के अंदर लक्ष्य और फ़ोल्डर के समान नाम के कारण हुई थी।

समस्या को हल करने के लिए बस विवादित फ़ाइल या फ़ोल्डर का नाम बदलें।


6

मुझे इसके लिए एक बहुत आसान उपाय मिला:

  1. प्रोजेक्ट नेविगेटर से समस्या के कारण फ़ाइल का चयन करें
  2. फ़ाइल निरीक्षक से लक्ष्य सदस्यता को अनचेक करें
  3. प्रोजेक्ट बनाएं
  4. फ़ाइल के लिए लक्ष्य सदस्यता फिर से जाँचें

चेतावनी दी गई है! संदर्भ के लिए इस छवि की जाँच करें।

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


5

मुझे पूरा यकीन है कि यह XCode 4 बग के कारण हो सकता है, कम से कम उन मामलों में जो मैंने इसमें सामना किया है।

यदि आप एक ही समय में प्रोजेक्ट में कई भाषा निर्भर फ़ाइलों को जोड़ते हैं तो यह होता है। मुझे यह गिट अंतर के माध्यम से पता चला। मैंने कमिट में कुछ नहीं किया लेकिन कुछ नई स्थानीयकृत निब फाइलें जोड़ दीं। लेकिन प्रोजेक्ट के अंतर को देखते हुए। पीपीबीएक्सप्रोज फाइल ने उन फाइलों के लिए जोड़े गए नए डुप्लिकेट संदर्भों का एक गुच्छा दिखाया जो पहले से ही परियोजना में थे। यह किया फ़ाइलों को भी मेरे लिए यादृच्छिक लग रहा था।

मैंने एक ही सटीक व्यवहार को कई बार दोहराया।

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

Xcode 4 मेरे लिए सिर्फ एक बड़ी निराशा है।


ऐसा लगता है कि XCode 4.2 में यह तय है। पहले के संस्करणों में आप इस बग से बच सकते हैं, जिस फाइल को आप स्थानीय बनाना चाहते हैं उसे पहले "ग्रुप" (प्रोजेक्ट में वर्चुअल फ़ोल्डर) में जोड़कर। एक बार जब आप स्थानीयकरण जोड़ लेते हैं तो आप इसे वापस वहीं रख सकते हैं जहां यह था और आपके द्वारा बनाए गए अस्थायी समूह को हटा दें।
स्टीव

यह एक बग नहीं है। यह आपके प्रोजेक्ट में समान नाम वाली एक से अधिक फ़ाइल होने के कारण है।
टोड हॉपकिंसन

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

4

यह ख़ुशी इसलिए है क्योंकि उर "no.png" "d.png" और "n.png" संसाधनों में डुप्लिकेट हैं। बस हटाए गए फ़ाइलों को हटाने और हटाने के लिए देखें।


3

त्रुटि तब प्रतीत होती है जब u में एक ही फ़ाइल का एक से अधिक संदर्भ होता है। मेरे पास एक ही नाम की 2 फाइलें थीं और मुझे यह त्रुटि मिली। जब मैं उनमें से एक को हटाता हूं तो त्रुटि गायब हो जाती है।


2

फिर भी इस मुद्दे पर एक और बदलाव। मेरे पास एक ही संदेश था कि पहले से सुझाए गए समाधानों में से कोई भी समस्या हल नहीं हुई (मेरे पास निश्चित रूप से केवल उदाहरण के लिए आपत्तिजनक फ़ाइल की एक प्रति थी)।

मेरा समाधान एक टेक्स्ट एडिटर में प्रोजेक्ट.पीबीएक्सप्रोज फाइल को संपादित करने के बाद (एक्सकोड को छोड़ने और कोर्स की फाइल का बैकअप लेने के बाद) था और आपत्तिजनक फ़ाइल के सभी संदर्भों को हटा दें। फिर, XCode को फिर से शुरू करने के बाद, मैंने मैन्युअल रूप से परियोजना में फ़ाइल को वापस जोड़ा और सब कुछ ठीक था।

(मेरा संदेह यह है कि यह समस्या मुझे एक मैनुअल के कारण हुई थी, अर्थात: गैर-एक्सकोड, प्रोजेक्ट फ़ाइल का विलय।)


1

अपनी परियोजना में चौखटे फ़ोल्डर खोलें और सुनिश्चित करें कि अंदर केवल चौखटे हैं। मैंने गलती से पूरे डेवलपर फ़ोल्डर को जोड़ दिया!


1

मिनटों पहले मुझे भी यही समस्या थी। मैंने उल्लेख किया है कि 'परिनियोजन लक्ष्य' को बदलने से मेरी समस्या ठीक हो गई है।


1

मेरे लिए टारगेट> बिल्ड सेटिंग्स> पैकेजिंग> उत्पाद का नाम उसी चीज़ के लिए सेट किया गया था, जो किसी अन्य .plist फ़ाइल में संदर्भित होती है, जो मेरे ऐप के लिए कस्टम थी। अंततः हमारी निर्माण प्रक्रिया के कारण यह डुप्लिकेट फ़ाइलें बनाता है।


1
यह मेरे लिए मुद्दा था, धन्यवाद!
लियोन

0

स्विफ्ट 3 : (लेकिन पुराने संस्करण भी) यह तब होता है जब मेरे पास डुप्लिकेट के साथ संपत्ति होती है। बस इस मुद्दे के साथ फ़ाइलों का नाम बदलें और सभी अच्छी तरह से जाना।

यह तब भी हो सकता है जब आपने एक बनाया है Assets.xcassetsऔर आपने नए नामों के साथ डुप्लिकेट का नाम बदल दिया है ताकि समय के बाद आप इसे भूल गए और फ़ोल्डर संदर्भ जोड़ने के लिए इसे हटा दें लेकिन यह डुप्लिकेट फ़ाइलों की समस्या पर वापस आ जाता है ..


0

एक सरल तरीका है,

  • App लक्ष्य पर जाएं
  • निर्माण चरणों पर जाएं
  • आउटपुट फ़ाइलें
  • बाहर रखी फ़ाइलों का पथ हटाएं, फिर प्रोजेक्ट बनाएं। यह सफलतापूर्वक चलेगा।

0

कुंजी pod deintegrateऔर rm *.workspaceफ़ाइल करना था ! क्या समय की बर्बादी है !


0

प्रतिक्रियाशील-मूल निवासी उपयोगकर्ता। गोटो फाइल -> कार्यक्षेत्र सेटिंग्स -> बिल्ड सिस्टम -> इसे लीगेसी बिल्ड सिस्टम में बदलें। और यह अब ठीक होना चाहिए। React-Native अभी तक नई फ़ाइल प्रणाली के साथ संगत नहीं है।


0

Use_frameworks पर टिप्पणी करना! पॉडफाइल में मेरे लिए काम किया।

#use_frameworks!

नोट: यह XCode 10.1, फली संस्करण 1.8.4 पर किया गया


-1

जबकि मुझे यकीन है कि एक बेहतर तरीका है, केवल nuking ने मुझे 60 सेकंड से कम समय दिया, और केवल एक चीज थी जो मुझे मिल सकती थी।

  1. रेपो को ट्रैश में खींचें।
  2. अपने रेपो को फिर से क्लोन करें।
  3. सही रिमोट ट्रैकिंग के साथ अपना रेपो सेट करें। git remote add <url.git>, याgit remote set-url <url.git>
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.