प्रोजेक्ट खोलने में असमर्थ ... प्रोजेक्ट फ़ाइल को पार्स नहीं किया जा सकता क्योंकि खोला नहीं जा सकता


93

मैं iPhone ऐप बनाने के लिए कुछ समय से काम कर रहा हूं। आज जब मेरी बैटरी कम थी, मैं काम कर रहा था और लगातार अपने सोर्स फाइल्स को सेव कर रहा था तब बिजली चली गई ...

अब जब मैंने अपने कंप्यूटर को वापस प्लग इन किया और इसे अच्छी शक्ति मिल रही है तो मैं अपनी प्रोजेक्ट फ़ाइल खोलने की कोशिश कर रहा हूँ और मुझे एक त्रुटि मिली:

प्रोजेक्ट खोलने में असमर्थ

प्रोजेक्ट ... खोला नहीं जा सकता क्योंकि प्रोजेक्ट फ़ाइल पार्स नहीं की जा सकती।

क्या कोई ऐसा तरीका है जिससे लोग जानते हैं कि मैं इससे उबर सकता हूं? मैंने एक पुरानी परियोजना फ़ाइल का उपयोग करने की कोशिश की और उसे फिर से सम्मिलित किया और फिर संकलन किया। यह मुझे एक कायरतापूर्ण त्रुटि देता है जो शायद इसलिए है क्योंकि यह सभी फाइलों को नहीं ढूंढ रहा है जो इसे चाहिए ...

मैं वास्तव में यदि संभव हो तो खरोंच से अपनी परियोजना का पुनर्निर्माण नहीं करना चाहता।


संपादित करें

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

SVN के बारे में शानदार बातें। मेरे पास एक है, लेकिन इसके साथ एक्सकोड को सिंक करने की कोशिश में कुछ फनीनेस है। मैं निश्चित रूप से अब इसके साथ अधिक समय बिताऊंगा ... ;-)

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

जवाबों:


228

मुझे इस समस्या का सामना करना पड़ा और मेरे वरिष्ठ ने मुझे एक समाधान के बारे में बताया:

projectname.xcodeprojयहां अपनी फाइल पर राइट क्लिक करें projectnameआपके प्रोजेक्ट का नाम होगा। अब राइट क्लिक के बाद शो पैकेज कंटेंट चुनें । उसके बाद अपनी projectname.pbxprojफाइल को टेक्स्ट एडिटर में खोलें । अब युक्त लाइन को खोजें <<<<<<< .mine, =======और >>>>>>> .r। उदाहरण के लिए मेरे मामले में यह पसंद आया

<<<<<<< .mine
    9ADAAC6A15DCEF6A0019ACA8 .... in Resources */,
=======
    52FD7F3D15DCEAEF009E9322 ... in Resources */,
>>>>>>> .r269

अब उन <<<<<<< .mine, =======और >>>>>>> .rलाइनों को हटा दें ताकि यह इस तरह दिखे

    9ADAAC6A15DCEF6A0019ACA8 /* BuyPriceBtn.png in Resources */,

    52FD7F3D15DCEAEF009E9322 /* discussionForm.zip in Resources */,

अब अपने Xcode प्रोजेक्ट को सेव करें और खोलें और इसका निर्माण करें। सब कुछ ठीक हो जाएगा।


11
धन्यवाद। यह काम। मेरे मामले में यह ".mine" या ".r" नहीं था, लेकिन कुछ और कहा ... जगह खोजने के लिए "===" के लिए Ctrl-F।
ck_

इसे उत्तर के रूप में चिह्नित किया जाना चाहिए। वास्तव में अच्छा सामान, धन्यवाद
ओवेन gerig

12
बस यह कहने के लिए कि यह क्यों हो रहा है: आपका संस्करण नियंत्रण प्रोजेक्ट फ़ाइल के दो परस्पर विरोधी संस्करणों को मर्ज करने का प्रयास कर रहा है। आपको अपने संस्करण नियंत्रण को मैन्युअल रूप से बताना होगा कि उचित मर्ज क्या है। तथ्य यह है कि XCode इस इनायत को संभाल नहीं करता है मेरे लिए एक दैनिक आधार पर एक बड़ी झुंझलाहट है।
ठाणे ब्रिमहल

धन्यवाद। मेरा मुद्दा <<<<<<<<<< HEAD ======= >>>>>>> के रूप में आया। यह .pbxproj फ़ाइल के अंत की ओर दो स्थानों में था। एक बार जब मैंने इन वस्तुओं को हटा दिया तो मैं .xcodeproj फ़ाइल को फिर से निष्पादित करने में सक्षम था। बाकी फ़ाइल से जगह से हटकर इन वस्तुओं को देखें।
अज्ञेयदेव

1
मेरे मामले में इसका <<<<<<<< HEAD, ======, >>>>>>>> कुछ अल्फ़ान्यूमेरिक। इन तीन लाइनों को हटाएं फिर सहेजें और खोलें। एक जादू की तरह काम किया!!! बहुत - बहुत धन्यवाद।
गौरी सम्मन्धमूर्ति

47

मुहम्मद का जवाब बहुत मददगार था (और मेरे फिक्स होने में मदद की)। हालाँकि, बस >>>>>>> ======= <<<<<<<< को हटाने के लिए पर्याप्त नहीं था परियोजना में पार्स मुद्दे को ठीक करने के लिए। दोनों शाखाओं से परिवर्तन रखते हुए pbxproj (मेरे लिए) एक मर्ज के बाद।

मेरे पास PBXGroup अनुभाग में एक मर्ज संघर्ष था (जिसकी शुरुआत परियोजना की तरह एक ब्लॉक टिप्पणी द्वारा इंगित की गई है: / * प्रोजेक्ट का PBXGroup अनुभाग * /) प्रारंभ करें। pbxproj फ़ाइल। हालाँकि, मुझे जो समस्या आई है, वह प्रोजेक्ट में अन्य स्थानों पर भी हो सकती है। pbxproj फ़ाइल भी।

नीचे दिए गए मर्ज संघर्ष का एक सरलीकरण है:

    <<<<<<< HEAD
          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
    =======
          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
    >>>>>>> branch name
            sourceTree = "<group>";
          };

जब मैंने मर्ज संघर्ष मार्करों को हटा दिया, तो यह वही है जो मुझे छोड़ दिया गया था:

          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
            sourceTree = "<group>";
          };

सामान्यतया, मर्ज संघर्ष मार्करों को हटाने से प्रोजेक्ट में पार्स समस्या को ठीक किया जाएगा। Pbxproj फ़ाइल और कार्यक्षेत्र अखंडता को पुनर्स्थापित करेगा। इस बार ऐसा नहीं हुआ।

नीचे मैंने इस मुद्दे को हल करने के लिए क्या किया है:

          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
            sourceTree = "<group>";
          };

          id = {
            isa = PBXGroup;
            children = (
                 id
            );
            name = "Your Group Name";
            sourceTree = "<group>";
          };

मुझे वास्तव में पहले पीबीएक्सग्रुप के अंत में 2 लाइनें जोड़ना था।

आप देख सकते हैं कि अगर मैंने हेड या मर्जिंग ब्रांच में से बदलावों को छोड़ने के लिए चुना होता, तो कोई समस्या नहीं होती! हालाँकि, मेरे मामले में मैं प्रत्येक शाखा से जोड़े गए दोनों समूहों को रखना चाहता था और केवल मर्ज मार्करों को हटाना पर्याप्त नहीं था; मुझे सही स्वरूपण बनाए रखने के लिए Project.pbxproj फ़ाइल में अतिरिक्त लाइनें मिलानी थीं।

इसलिए, यदि आप विचार करने के बाद पार्सिंग के मुद्दों में भाग ले रहे हैं, तो आपको लगता है कि आप सभी मर्ज संघर्षों को हल कर चुके हैं, आप .pbxproj पर एक करीब से नज़र रखना चाहते हैं और सुनिश्चित कर सकते हैं कि कोई स्वरूपण समस्याएँ नहीं हैं!


आप शायद गलती से बृहदान्त्र और / या घुंघराले ब्रेस हटा दिया जब मर्ज संघर्ष का समाधान। आपको सावधानीपूर्वक मर्ज संघर्षों से उचित भाग (या दोनों) लेना चाहिए और मार्करों को हटा देना चाहिए। बस।
Stas

sourceTree जोड़ना = "<समूह>"; }; यह मेरे लिए हल! इतना मददगार! धन्यवाद!
नितिन अलबुर

बस इससे कुछ जोड़ना चाहते थे। मुझे भी यही समस्या थी लेकिन कोकोपोड्स और एक कार्यक्षेत्र के साथ काम करना। मुझे कार्यक्षेत्र को शून्य करना पड़ा और इसे ठीक करने के लिए Xcode के लिए फिर से बनाना पड़ा।
निको

@ निको: क्या आपको मन है कि इसे कैसे शेयर किया जाए? मैं इसी तरह के मुद्दे का सामना कर रहा हूँ और एक कठिन समय है
आइजैक

मैंने पाया कि .pbxproj फ़ाइल को ठीक करने के बाद, जिसे मुझे काम करने के लिए प्रोजेक्ट को बंद करने और फिर से खोलने की आवश्यकता थी, लेकिन यह काम नहीं कर पाया। धन्यवाद SnoopyProtocol!
कीथTheBiped

28

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


बहुत बहुत धन्यवाद यह जवाब था, मेरे पास एक स्थान था।
मैक्स

कॉर्डोवा फोनगैप 3.4 के साथ ही
माइल्स एम।

यह वास्तव में मैं कर रहा था मुद्दा था। धन्यवाद!

@ fray88 मैंने Xcode प्रोजेक्ट और कॉर्डोवा फ़ोल्डर दोनों के लिए अपने फ़ोल्डर नाम में जगह ले ली, लेकिन अब मुझे एक त्रुटि मिल रही है: ENOENT: ऐसी कोई फ़ाइल या निर्देशिका त्रुटि नहीं है। मैं अंतरिक्ष को कैसे निकाल सकता हूं और काम करने के लिए चीजें प्राप्त कर सकता हूं? धन्यवाद।
SaH

25

मेरा भी ऐसा ही मुद्दा था।

स्क्रीनशॉट 1

इसे हल करने के लिए नीचे चरण दिए गए हैं:

  1. फ़ोल्डर पर नेविगेट करें जहाँ आपका projectName.xcodeproj

    स्क्रीनशॉट 2

  2. राइट क्लिक करें और ' Show Package Contents' चुनें । आप .pbxprojएक्सटेंशन वाली फाइलों की सूची देख पाएंगे ।

    स्क्रीनशॉट 3

  3. का चयन करें project.pbxproj। ' Text Edit' का उपयोग करके इस फ़ाइल को राइट क्लिक करें और खोलें ।

    स्क्रीनशॉट 4

  4. आप देख पाएंगे <<<<<< .mine, ============और >>>>>>>>>> .r123। जब आप SVN से अपडेट लेते हैं तो ये आम तौर पर टकराव होते हैं। इन्हें डिलीट करें और फाइल को सेव करें।

    स्क्रीनशॉट 5

    स्क्रीनशॉट 6

  5. अब, आप किसी भी त्रुटि संदेश के बिना परियोजना को खोलने में सक्षम होंगे ।


23

Xcode प्रोजेक्ट फ़ाइल के दृश्य विश्लेषण ने विलय के बाद त्रुटि का पता लगाने में मेरी मदद नहीं की। Syslog देखने के बाद ऐसी लाइन मिली जब Xcode फ़ाइल को पार्स करने की कोशिश कर रहा था:

2/7/14 12:39:12.792 PM Xcode[9949]: CFPropertyListCreateFromXMLData(): Old-style plist parser: missing semicolon in dictionary on line 4426. Parsing will be abandoned. Break on _CFPropertyListMissingSemicolon to debug.

उस परियोजना को ठीक करने के बाद ठीक खोला जा सकता है।


2
धन्यवाद, आपने मेरा दिन बचा लिया :)
सेंचुरियन

धन्यवाद .. यह दृश्य निरीक्षण की तुलना में बहुत अधिक समझ में आता है
सिप्रियन

2
इससे काफी मदद मिली। मैं सिर्फ "पूंछ -f /var/log/system.log" और परियोजना को खोलने की कोशिश करता हूं। System.log में, यह एक त्रुटि ("Xcode" के लिए खोज) दिखाती है जिसमें लाइन नंबर दिखाया गया था जहां पार्स अपवाद हुआ। मैंने तब vi में फाइल खोली और फाइल में एक कंट्रोल-कैरेक्टर (^ H) देखा और बस उस सिंगल कैरेक्टर और वॉयला को हटा दिया! इसे खोला जा सका।
डस्टबिन

सबसे अच्छा जवाब, हिट और कोशिश करने के बजाय। कंसोल लॉग पढ़ें।
उर्मिल सेतिया

5
बस इसे xcodebuild -project Project.xcodeproj बिल्ड जैसे टर्मिनल से बनाने का प्रयास करें। आपको टर्मिनल में सही त्रुटि दिखाई देगी।
स्लावको कुलेसॉफ

6

अपनी प्रोजेक्ट फ़ाइल के सिंटैक्स का विश्लेषण करें। टर्मिनल में अपनी परियोजना के अंदर इसकी जाँच करें:

plutil -lint project.pbxproj

यह आपको पार्सर से त्रुटियों को दिखाएगा।

संभावित समस्या : कुछ प्रोजेक्ट्स unionप्रोजेक्ट फ़ाइलों के लिए git विलय रणनीति निर्धारित करते हैं। यह ज्यादातर समय के लिए काम करता है, लेकिन अगर यह विफल हो जाता है तो आपकी परियोजना फ़ाइल को चुपचाप मार देगा। यह रणनीति .gitattributesआपकी रिपॉजिटरी में फाइल में परिभाषित है।


3

मुझे हाल ही में उसी समस्या का सामना करना पड़ा जब मैंने अपनी शाखा को दूरस्थ शाखा के साथ मिलाने की कोशिश की। हालाँकि, उपरोक्त समाधानों में से कोई भी मेरी समस्या के लिए उपयुक्त नहीं था।

मेरी शाखा या दूरस्थ शाखा में project.pbxproj फ़ाइल के बीच कोई मर्ज विरोध नहीं थे। हालाँकि, मेरी ProjectName.xcodeproj फ़ाइल को उसी कारण से खोलने से इंकार कर दिया जाएगा जैसा कि पूछे गए प्रश्न में दिखाया गया है।

मेरा समाधान एक पाठ संपादक का उपयोग करके project.pbxproj को देखने और यह जानने के लिए था कि क्या फ़ाइल सिंटैक्स में कोई अनियमितता थी (उदाहरण के लिए एक अतिरिक्त घुंघराले ब्रैकेट)। मैंने मर्ज किए गए फ़ाइल की तुलना में पुरानी फ़ाइल में डाली गई या हटा दी गई लाइनों पर ध्यान केंद्रित करके इस प्रक्रिया को तैयार किया। करीब से जांच करने पर, मैंने पाया कि मेरी समस्या का कारण निम्न पंक्ति का दोहराव था:

xxxxxxxxxxxxx /* [CP] Check Pods Manifest.lock */ = {

मेरी मर्ज की गई फ़ाइल में। यह एक अस्पष्ट घुंघराले ब्रैकेट और परिणामस्वरूप अमान्य pbxproj सिंटैक्स का नेतृत्व किया। उपरोक्त लाइन हटाने से मेरी समस्या ठीक हो गई।


2

मैं बस एक ही समस्या में भाग गया। मैंने हमेशा की तरह git द्वारा उत्पन्न स्ट्रिंग्स को हटा दिया लेकिन Xcode ने अभी भी .xcodeproj फ़ाइल खोलने से इनकार कर दिया। लेकिन सब कुछ सही था, कोई गुमशुदा कोष्ठक आदि नहीं। अंत में मैंने Xcode छोड़ने और Xcode बंद होने पर प्रोजेक्ट को खोलने की कोशिश की .. तो यह काम कर गया। मुझे उम्मीद है इससे किसी को सहायता मिलेगी।

संपादित करें:

अपनी .xcodeproj फ़ाइल में विरोधों को हल करने के लिए आप इस आसान स्क्रिप्ट का उपयोग कर सकते हैं:

  1. अपनी प्रोजेक्ट डायरेक्टरी में खाली .sh फ़ाइल बनाएँ (उदाहरण के लिए res_conflicts.sh)
  2. यहाँ स्क्रिप्ट है:

    projectfile = find -d . -name 'project.pbxproj' projectdir = echo *.xcodeproj projectfile = "$ {projectdir} /project.pbxproj" tempfile = "$ {projectdir} /project.pbxproj.out" savefile = "$ {projectdir} /project.pbxproj.mergesave"।

    बिल्ली $ प्रोजेक्टफाइल | grep -v "<<<<<<<< HEAD" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ projectfile

  3. Sh कमांड का उपयोग करके इसे टर्मिनल से चलाएं: sh resolution_conflicts.sh


कहाँ से उत्पन्न तार है?
हर्षिल कोटेचा

ये तार संघर्ष मार्कर हैं: "<<<<<<<<", "=======" और ">>>>>>>"। Git विरोध को हल करने के बारे में अधिक जानकारी के लिए यहाँ देखें: help.github.com/articles/…
Vojta

@Vojta, क्या आप उस स्क्रिप्ट को एक जिस्ट में फेंक सकते हैं? मुझे यह त्रुटि मिल रही है:resolve_conflicts.sh: line 1: -d: command not found resolve_conflicts.sh: line 3: $tempfile: ambiguous redirect
डैनियल

हाय @ डैनियल, यहाँ यह है: gist.github.com/vojtaBelovsky/0be156ff37929e16f55f253258a97d808
Vojta


1

निम्नलिखित चरणों का पालन करें: - फ़ोल्डर में जाएँ जहाँ आपका प्रोजेक्टनाम है। xcodeproj 2. क्लिक करें और 'पैकेज सामग्री दिखाएँ' चुनें। आप .pbxproj एक्सटेंशन वाली फ़ाइलों की सूची देख पाएंगे। 3. चयन परियोजना। पीपीएक्सएक्सप्रोज। 'टेक्स्ट एडिट' का उपयोग करके इस फ़ाइल को राइट क्लिक करें और खोलें। 4. आप <<<<<<<, ============ और >>>>>>>>>>> देख सकेंगे। जब आप Sourcetree / SVN / GITLAB से अपडेट लेते हैं तो ये आम तौर पर टकराव होते हैं। इन्हें डिलीट करें और फाइल को सेव करें। 5.अब, आप किसी भी त्रुटि संदेश के बिना परियोजना खोलने में सक्षम होंगे।


0

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


1
बस Project.pbproject फ़ाइल की जाँच करें और प्रोजेक्ट फ़ाइल के कार्यशील संस्करण के विरुद्ध एक अंतर करें।
अता

0

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


मेरा पसंदीदा VCS हाल ही में गिट गया है।
लिली बॉलर

0

अपने वर्तमान प्रोजेक्ट फ़ोल्डर को नाम और चेकआउट मॉड्यूल को एक ही प्रोजेक्ट में बदलें। तब वर्तमान फ़ाइल परिवर्तन जोड़ें।


0

बस Project.pbproject फ़ाइल की जाँच करें और प्रोजेक्ट फ़ाइल के कार्यशील संस्करण के विरुद्ध एक अंतर करें।

अक्सर ऐसा तब होता है जब आपके पास यहां पोस्ट किए गए संस्करण नियंत्रण प्रणाली से संघर्ष होता है: उपयोगकर्ता फ़ाइल मैक iPhone एसडीके में तोड़फोड़ में पार्स नहीं किया जा सकता है


0

लाइनों के बीच HEAD और _HEAD खोजने की कोशिश करें और इस शब्द को project.pbxproj में हटा दें। ऐसा करने से पहले इस फाइल का बैकअप लें ।।


0

Goto PhoneGapTest >> प्लेटफार्म तब टर्मिनल पर जाने के बाद फ़ोल्डर ios को हटा दें, फिर टाइप करें: sudo phonegap बिल्ड ios उसके बाद आप प्रोजेक्ट चला सकते हैं


0

वापस लाकर, आप खींचे गए कोड को पूर्ववत कर सकते हैं।

यदि आप उस अनुरोध को पूर्ववत करना चाहते हैं, तो इस आदेश को प्रोजेक्ट पथ पर रखें

-> git merge --abort


0

अगर आपको टेक्स्ट === या <<< या >>>> में नहीं मिला था तो मेरे लिए समस्या वास्तव में बहुत सरल और मजेदार थी ... मैं Xcode में App का नाम बदल देता हूं, लेकिन इसे बनाने से पहले UnityProjectSettings में इसे नहीं बदलता - यही समस्या थी ...


-2

तोड़फोड़ एक लगभग साप्ताहिक आधार पर एक svn के बाद मेरी परियोजना फ़ाइल भ्रष्ट होगा। मैं यह पता लगाने की कोशिश कर रहा हूं कि यह अभी क्यों करता है और इस समस्या को लेकर आया है।


मेरा अनुमान है कि आपके पास Xcode में खोली गई परियोजना उसी समय है जब आप कोई अपडेट या कमिटमेंट करते हैं ... "IF" Xcode ऑटोसैव में होता है उसी समय मुझे लगता है कि कुछ भ्रष्टाचार हो सकता है
epatel

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