xcode - एक्सकोड चेतावनी: "आउटपुट फ़ाइल के लिए एकाधिक निर्माण आदेश"




build warnings (12)

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

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

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

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

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


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


असल में इसका जवाब बहुत आसान है।

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

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

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


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


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

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

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


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


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

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


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

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


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

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

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


मुझे कुछ मिनट पहले एक ही समस्या थी। मैंने अपनी समस्या को ठीक करने के लिए 'तैनाती लक्ष्य' को बदलने का उल्लेख किया है।


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

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

मैंने इस सटीक व्यवहार को कई बार पुन: उत्पन्न किया।

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

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


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


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

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


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


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

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





warnings