Proje açılamıyor… proje dosyası ayrıştırılamadığı için açılamıyor


95

Bir süredir bir iPhone uygulaması oluşturmak için çalışıyorum. Bugün pilim azaldığında, çalışıyordum ve sürekli kaynak dosyalarımı kaydediyordum sonra güç kesildi ...

Şimdi bilgisayarımı tekrar taktığımda ve iyi bir güç aldığında proje dosyamı açmaya çalışıyorum ve bir hata alıyorum:

Proje Açılamıyor

Proje dosyası ayrıştırılamadığı için proje ... açılamıyor.

İnsanların bundan kurtulabileceğimi bilmesinin bir yolu var mı? Daha eski bir proje dosyası kullanmayı ve yeniden eklemeyi ve sonra derlemeyi denedim. Bana acayip bir hata veriyor, çünkü muhtemelen istediği tüm dosyaları bulamıyor ...

Mümkünse projemi sıfırdan yeniden inşa etmek istemiyorum.


DÜZENLE

Tamam, bununla işe yarayan biraz daha eski bir proje dosyası arasında bir fark yaptım ve dosyada bazı bozulmalar olduğunu gördüm. Onları birleştirdikten sonra (iyi ve en yeni kısımlar) şimdi çalışıyor.

SVN ile ilgili harika noktalar. Bir tane var, ancak XCode'u onunla senkronize etmeye çalışırken bazı tuhaflıklar oldu. Artık onunla daha çok vakit geçireceğim ... ;-)

görüntü açıklamasını buraya girin

Yanıtlar:


231

Bu problemle karşılaştım ve kıdemli bana bir çözümden bahsetti, yani:

projectname.xcodeprojDosyanıza sağ tıklayın burada projectnameprojenizin adı olacaktır. Şimdi sağ tıkladıktan sonra Paket İçeriğini Göster'i seçin . Bundan sonra projectname.pbxprojdosyanızı bir metin düzenleyicide açın. Şimdi <<<<<<< .mine, =======ve içeren satırı arayın >>>>>>> .r. Örneğin benim durumumda böyle görünüyordu

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

Şimdi bunları kaldırırsanız <<<<<<< .mine, =======ve >>>>>>> .rçizgiler bu şekilde görünecektir böylece

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

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

Şimdi Xcode projenizi kaydedin ve açın ve oluşturun. Her şey iyi olacak.


11
TEŞEKKÜR EDERİM. Bu çalışıyor. Benim durumumda bu ".mine" veya ".r" değildi ama başka bir şey söyledi ... Ctrl-F, yeri bulmak için "===" için.
ck_

bu cevap olarak işaretlenmelidir. Gerçekten güzel şeyler, teşekkürler
owen gerig

12
Bunun NEDEN olduğunu söylemek için: Sürüm kontrolünüz proje dosyasının iki çakışan sürümünü birleştirmeye çalışıyor. Sürüm kontrolünüze doğru birleştirmenin ne olduğunu manuel olarak söylemelisiniz. XCode'un bunu incelikle ele almaması, günlük bazda benim için büyük bir sıkıntı.
Thane Brimhall

Teşekkür ederim. Sorunum <<<<<<<<< HEAD ======= >>>>>>> şeklinde geldi. .Pbxproj dosyasının sonuna doğru iki noktadaydı. Bu öğeleri kaldırdıktan sonra .xcodeproj dosyasını tekrar çalıştırabildim. Bu öğelerin dosyanın geri kalanından gözle görülür şekilde yerinde olmadığına bakın.
AgnosticDev

1
Benim durumumda <<<<<<< HEAD, ======, >>>>>>> biraz alfanümerik. Bu üç satırı kaldırın, ardından kaydedin ve açın. Bir Cazibe Gibi Çalıştı !!! Çok teşekkürler.
Gowrie Sammandhamoorthy

47

Muhammed'in cevabı çok yardımcı oldu (ve düzeltmeme yardımcı oldu). Bununla birlikte, >>>>>>> ======= <<<<<<< 'nin kaldırılması, projedeki ayrıştırma sorununu düzeltmek için yeterli değildi. Her iki daldan da değişiklikleri korurken. bir birleşmeden sonra.

Project.pbxproj dosyasının PBXGroup bölümünde (başlangıcı şuna benzer bir blok yorumuyla belirtilir: / * Begin PBXGroup bölümü * /) bir birleştirme çakışması vardı. Ancak karşılaştığım sorun project.pbxproj dosyasında başka yerlerde de ortaya çıkabilir.

Aşağıda karşılaştığım birleştirme çakışmasının bir basitleştirmesi var:

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

Birleştirme çakışması işaretleyicilerini kaldırdığımda, bana kalan şey buydu:

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

Normalde, birleştirme çakışması işaretleyicilerini kaldırmak, project.pbxproj dosyasındaki ayrıştırma sorununu çözer ve çalışma alanı bütünlüğünü geri yükler. Bu sefer olmadı.

Sorunu çözmek için yaptığım şey aşağıdadır:

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

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

Aslında ilk PBXGroup'un sonuna 2 satır eklemek zorunda kaldım.

Gördüğünüz gibi, değişiklikleri Head'den veya birleştirme dalından atmayı seçseydim, bir ayrıştırma sorunu olmayacaktı! Ancak benim durumumda, her daldan eklediğim her iki grubu da korumak istedim ve sadece birleştirme işaretlerini kaldırmak yeterli değildi; Doğru biçimlendirmeyi korumak için project.pbxproj dosyasına fazladan satırlar eklemem gerekiyordu.

Bu nedenle, tüm birleştirme çatışmalarını çözdüğünüzü düşündükten sonra ayrıştırma sorunlarıyla karşılaşıyorsanız, .pbxproj dosyasına daha yakından bakmak ve herhangi bir biçimlendirme sorunu olmadığından emin olmak isteyebilirsiniz!


büyük olasılıkla birleştirme çakışmalarını çözerken yanlışlıkla iki nokta üst üste ve / veya kaşlı ayracı kaldırdınız. Birleştirme çatışmalarından doğru kısmı (veya her ikisini) dikkatlice almalı ve işaretleri kaldırmalısınız. Bu kadar.
Stas

sourceTree = "<group>" ekleme; }; benim için çözdü! Çok yardımsever! Teşekkürler!
Nitin Alabur

Sadece buna bir şey eklemek istedim. Aynı sorunu yaşadım ama CocoaPods ve bir çalışma alanıyla çalışıyordum. Xcode'un düzeltmeyi alması için çalışma alanını bombalamak ve yeniden oluşturmak zorunda kaldım.
Nico

@Nico: Nasıl bombalanacağını paylaşır mısın? Burada benzer bir sorunla karşı karşıyayım ve zor anlar yaşıyorum
Isaac

.Pbxproj dosyasını düzelttikten sonra, çalışması için projeyi kapatıp yeniden açmam gerektiğini buldum, ancak işe yaradı. Teşekkürler SnoopyProtocol!
KeithTheBiped

28

Aynı hatayı aldım çünkü Cordova, içinde boşluklar olan bir proje oluşturmanıza izin verecek ve Xcode nasıl başa çıkılacağını bilmiyor.


Çok teşekkürler cevap buydu, bir yerim vardı.
Maksimum

Cordova Phonegap 3.4 ile aynı
Miles M.

İşte yaşadığım sorun buydu. Teşekkürler!
fray88

@ fray88 Klasör adımda hem Xcode projesi hem de cordova klasörü için yer aldım, ancak şimdi bir Hata alıyorum: ENOENT: böyle bir dosya veya dizin hatası yok. Alanı nasıl çıkarabilirim ve işlerin çalışmasını nasıl sağlayabilirim?
SaH

25

Benzer bir sorun yaşadım.

Ekran görüntüsü 1

Bunu çözmek için aşağıdaki adımlar:

  1. Klasörünüze gidin projectName.xcodeproj.

    Ekran görüntüsü 2

  2. Sağ tıklayın ve seçin ' Show Package Contents'. .pbxprojUzantılı dosyaların listesini görebileceksiniz .

    Ekran görüntüsü 3

  3. Seçin project.pbxproj. Sağ tıklayın ve bu dosyayı ' Text Edit' kullanarak açın .

    Ekran görüntüsü 4

  4. Sen görmek mümkün olacak <<<<<< .mine, ============ve >>>>>>>>>> .r123. Bunlar genellikle SVN'den güncelleme aldığınızda ortaya çıkan çakışmalardır. Bunları silin ve dosyayı kaydedin.

    Ekran görüntüsü 5

    Ekran görüntüsü 6

  5. Artık herhangi bir hata mesajı olmadan projeyi açabileceksiniz .


23

Xcode proje dosyasının görsel analizi, birleştirmeden sonra hatayı bulmama yardımcı olmadı. Syslog'a baktıktan sonra, Xcode dosyayı ayrıştırmaya çalışırken böyle bir satır buldu:

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.

O proje düzelttikten sonra tamam açılabilir.


2
Teşekkürler, günümü kurtardınız :)
Centurion

Teşekkürler .. bu görsel incelemeden çok daha mantıklı
Ciprian

2
Bu çok yardımcı oldu. Sadece "tail -f /var/log/system.log" projesini açmaya çalıştım. System.log dosyasında, ayrıştırma istisnasının oluştuğu satır numarasını gösteren bir hata ("Xcode" araması) gösterdi. Daha sonra dosyayı vi'de açtım ve dosyada (^ H) bir kontrol karakteri gördüm ve o tek karakteri ve işi kaldırdım! açılabildi.
DustinB

Vurup denemeye çalışmaktansa en iyi cevap. Konsol Günlüğünü Okuyun.
Urmil Setia

6
Xcodebuild -project Project.xcodeproj build gibi Terminal'den oluşturmaya çalışın. Hatayı doğrudan Terminal'de göreceksiniz.
Slavko Coolesoff

6

Proje dosyanızın sözdizimini analiz edin. Terminaldeki projenizde kontrol edin:

plutil -lint project.pbxproj

Bu size ayrıştırıcıdan gelen hataları gösterecektir.

Olası sorun : Bazı projeler unionproje dosyaları için git birleştirme stratejisi belirler . Bu çoğu zaman işe yarar, ancak başarısız olursa proje dosyanızı sessizce öldürecektir. Bu strateji, deponuzdaki .gitattributesdosyada tanımlanmıştır .


3

Son zamanlarda şubemi uzak bir dalla birleştirmeye çalışırken aynı sorunla karşılaştım. Ancak yukarıdaki çözümlerden hiçbiri sorunuma uygun görünmüyordu.

Dalımdaki project.pbxproj dosyası veya uzak daldaki birleştirme çakışması yoktu. Ancak, projectName.xcodeproj dosyam, sorulan soruda gösterilenle aynı nedenle açılmayı reddediyor.

Benim çözümüm, bir metin düzenleyicisi kullanarak project.pbxproj dosyasını incelemek ve dosya sözdiziminde herhangi bir düzensizlik olup olmadığını (örneğin, ekstra küme parantezi) bulmaktı. Birleştirilen dosyaya kıyasla eski dosyaya eklenen veya silinen satırlara odaklanarak bu süreci hızlandırdım. Daha yakından incelendiğinde, sorunumun nedeninin aşağıdaki satırın tekrarı olduğunu buldum:

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

birleştirilmiş dosyamda. Bu, kapatılmamış bir küme parantezine ve dolayısıyla geçersiz pbxproj sözdizimine yol açtı. Yukarıdaki satırı silmek sorunumu çözdü.


2

Ben de aynı problemle karşılaştım. Git ile üretilen dizeleri her zaman olduğu gibi kaldırdım ancak Xcode .xcodeproj dosyasını açmayı hala reddetti. Ama her şey doğruydu, eksik parantez yok vs. Sonunda Xcode kapatıldığında Xcode'dan çıkıp projeyi açmaya çalıştım .. sonra çalıştı. Umarım bu birine yardımcı olur.

DÜZENLE:

.xcodeproj dosyanızdaki çakışmaları çözmek için şu kullanışlı komut dosyasını kullanabilirsiniz:

  1. Proje dizininizde boş .sh dosyası oluşturun (örneğin, resol_conflicts.sh)
  2. İşte senaryo:

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

    kedi $ proje dosyası | grep -v "<<<<<<< KAFA" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ proje dosyası

  3. Sh komutunu kullanarak terminalden çalıştırın: sh resol_conflicts.sh


git tarafından nerede üretilir?
Harshil Kotecha

Bu dizeler çakışma işaretleridir: "<<<<<<<", "=======" ve ">>>>>>>". Git çakışmalarını çözme hakkında daha fazla bilgi için buraya bakın: help.github.com/articles/…
Vojta

@Vojta, bu senaryoyu bir öze atabilir misin? Bu hatayı alıyorum:resolve_conflicts.sh: line 1: -d: command not found resolve_conflicts.sh: line 3: $tempfile: ambiguous redirect
Daniel


2

İzlenecek adımlar: - 1. projectName.xcodeproj dosyanızın bulunduğu klasöre gidin 2. Sağ tıklayın ve 'Paket İçeriğini Göster'i seçin. .Pbxproj uzantılı dosyaların listesini görebileceksiniz. 3. project.pbxproj öğesini seçin. Sağ tıklayın ve 'Metin Düzenleme'yi kullanarak bu dosyayı açın. 4. <<<<<<, ============ ve >>>>>>>>>> 'yi görebileceksiniz. Bunlar genellikle Sourcetree / SVN / GITLAB'dan güncelleme aldığınızda ortaya çıkan çakışmalardır. Bunları silin ve dosyayı kaydedin. 5. Artık herhangi bir hata mesajı olmadan projeyi açabileceksiniz.


1

Project.pbxproj dosyasını geri alın

svn revert - dosya adı--


0

Xcode'da yeni bir proje oluşturmanız, eski dizine gitmeniz ve tüm kaynak dosyalarınızı, uçlarınızı ve kaynaklarınızı yeni projedeki Xcode dosyaları kenar çubuğuna sürüklemeniz gerekecek gibi görünüyor. Özel derleme ayarları veya hedefleriyle gerçekten çok fazla çalışma yapmadıysanız, birkaç dakikadan fazla sürmemelidir. Ya bu, ya da kaynak kontrolünüzdeki son girişe geri dönün ve şimdi ve o zaman arasında değişen kod dosyalarını manuel olarak ekleyin.


1
Sadece project.pbproject dosyasını kontrol edin ve proje dosyasının çalışan bir sürümüne göre bir fark oluşturun.
Atma

0

Ve işleri tekrar çalıştırdığınızda, yedekleme ve revizyon kontrolü için yıkım veya değişken gibi bir şey kullanmaya başlamalısınız. Elektronların her zaman olması gereken yere gitmediğini, erken ve sıklıkla yedeklendiğini unutmayın!


Son zamanlarda en sevdiğim VCS git oldu.
Lily Ballard

0

mevcut proje klasörü adınızı ve kontrol modülünüzü aynı projeyi değiştirin. sonra mevcut dosya değişikliklerini ekleyin.



0

HEAD ve _HEAD satırlarını bulmaya çalışın ve bu kelimeleri project.pbxproj içinde silin. Bunu yapmadan önce bu dosyayı yedekleyin ..


0

Goto PhoneGapTest >> platform Ardından, terminale gittikten sonra ios klasörünü silin ve şunu yazın: sudo phonegap build ios bundan sonra projeyi çalıştırabilirsiniz


0

Geri döndürerek alınan kodu geri alabilirsiniz.

Bu çekme isteğini geri almak istiyorsanız bu komutu proje yoluna koymanız yeterlidir.

-> git merge --abort


0

Metin === veya <<< veya >>>> içinde bulamadıysanız, sorun benim için gerçekten basit ve eğlenceliydi ... Xcode'da Uygulamanın adını değiştirdim, ancak bunu oluşturmadan önce UnityProjectSettings'de değiştirmedim - sorun buydu ...


0

Eğer bir araya gelirseniz ve ne olduklarını bilmeyen problemler yaşarsanız, farkın bariz işaretleri değil

<<<<<
....
======
>>>>>>

Ardından proje dosyalarınızı https://github.com/Karumi/Kin ile analiz edebilir , kurabilir ve kullanabilirsiniz.

kin project.pbxproj

Projenin anlaşılmasını ve çözülmesini daha kolay açmaya izin vermeyen fazladan hatalar (hash'ler, gruplar vb.)


Ve bu arada, bu da yardımcı olabilir, düşündüm de kullanmadım proje dosyalarınızın 2 versiyonunu ayırmaya çalışıyorum https://github.com/bloomberg/xcdiff, bu size gerçekten neler olup bittiğini verecektir.


-2

subversion, neredeyse haftalık olarak bir svn'den sonra proje dosyamı bozacak. Bunu neden şimdi yaptığını anlamaya çalışıyorum ve bu problemle karşılaştım.


Tahminim, projeyi aynı anda
Xcode'da açmış olmanızdır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.