プロジェクトを開けません...プロジェクトファイルを解析できないため、開けません


93

しばらくの間、iPhoneアプリの作成に取り組んでいます。今日、バッテリーが少なくなったとき、私は作業していて、常にソースファイルを保存していたので、電源が切れました...

コンピューターを接続し直して、電源が正常になったら、プロジェクトファイルを開こうとするとエラーが発生します。

プロジェクトを開けません

プロジェクトファイルを解析できないため、プロジェクト...を開けません。

私がこれから回復できることを人々が知っている方法はありますか?古いプロジェクトファイルを使用して再挿入し、コンパイルしてみました。それは私がファンキーなエラーを与えます、それはおそらくそれが望むすべてのファイルを見つけていないためです...

できれば、プロジェクトを最初から再構築したくありません。


編集する

わかりました。これと少し古いプロジェクトファイルを比較してみましたが、ファイルが破損していることがわかりました。それらをマージした後(正常で最新の部品)、現在は機能しています。

SVNの素晴らしい点。私はそれを持っていますが、XCodeをそれと同期しようとするいくつかのファンキーさがありました。私は間違いなく今より多くの時間を費やすつもりです... ;-)

ここに画像の説明を入力してください

回答:


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_ 2012年

これは答えとしてマークする必要があります。本当に良いもの、ありがとう
オーウェンゲリグ

12
なぜこれが起こっているのかを言うだけです:バージョン管理は、プロジェクトファイルの2つの競合するバージョンをマージしようとしています。適切なマージとは何かをバージョンコントロールに手動で通知する必要があります。XCodeがこれを適切に処理しないという事実は、日常的に私に大きな不快感を与えています。
Thane Brimhall 2013年

ありがとうございました。私の問題は、<<<<<<<<<< HEAD ======= >>>>>>>の形式で発生しました。.pbxprojファイルの終わり近くの2つの場所にありました。これらのアイテムを削除すると、.xcodeprojファイルを再度実行することができました。これらのアイテムを探して、ファイルの残りの部分から外れていることを確認してください。
AgnosticDev 2014年

1
私の場合、その<<<<<<< HEAD、======、>>>>>>>英数字です。これらの3行を削除して、保存して開きます。魅力のように働いた!!! アロット、ありがとう。
Gowrie Sammandhamoorthy

47

ムハンマドの答えは非常に役に立ちました(そして私の修正につながりました)。ただし、>>>>>>> ======= <<<<<<<を削除するだけでは、両方のブランチからの変更を保持するときに、project.pbxproj(私にとって)の解析の問題を修正するには不十分でしたマージ後。

project.pbxprojファイルのPBXGroupセクション(先頭は次のようなブロックコメントで示されます:/ * Begin PBXGroup section * /)でマージの競合がありました。ただし、発生した問題は、project.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>";
          };

通常、マージ競合マーカーを削除すると、project.pbxprojファイルの解析の問題が修正され、ワー​​クスペースの整合性が復元されます。今回はしませんでした。

以下は私が問題を解決するためにしたことです:

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

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

実際には、最初のPBXGroupの最後に2行追加する必要がありました。

Headまたはマージブランチのいずれかからの変更を破棄することを選択した場合、解析の問題はなかったことがわかります。ただし、私の場合は、各ブランチから追加した両方のグループを保持する必要があり、マージマーカーを削除するだけでは不十分でした。正しいフォーマットを維持するために、project.pbxprojファイルに行を追加する必要がありました。

したがって、マージの競合をすべて解決したと思った後で解析の問題が発生している場合は、.pbxprojを詳しく調べて、フォーマットの問題がないことを確認してください。


マージの競合を解決するときに、誤ってコロンや中括弧を削除した可能性があります。マージの競合から適切な部分(または両方)を慎重に取り、マーカーを削除する必要があります。それでおしまい。
Stas

sourceTree = "<group>";を追加します。}; 私のためにそれを解決しました!とても役に立ちました!ありがとう!
Nitin Alabur 2016年

これに何かを追加したかっただけです。これと同じ問題がありましたが、CocoaPodsとワークスペースを使用しています。Xcodeが修正を取得するために、ワークスペースを核にして再作成する必要がありました。
Nico

@ニコ:それを核にする方法を共有してもよろしいですか?私はここで同様の問題に直面していて、苦労しています
Isaac

.pbxprojファイルを修正した後、プロジェクトを機能させるためにプロジェクトを閉じて再度開く必要がありましたが、機能しました。SnoopyProtocolに感謝します。
KeithTheBiped

28

Cordovaではスペースを含むプロジェクトを作成でき、Xcodeは対処方法を知らないため、これとまったく同じエラーが発生しました。


どうもありがとう、これが答えでした、私にはスペースがありました。
最大

Cordova Phonegap 3.4と同じ
Miles M.

これはまさに私が抱えていた問題でした。ありがとう!
fray88

@ fray88 Xcodeプロジェクトとcordovaフォルダーの両方のフォルダー名のスペースを削除しましたが、エラーが発生しました:ENOENT:そのようなファイルまたはディレクトリのエラーはありません。どうすればスペースを取り除き、機能させることができますか?
SaH 2016

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プロジェクトファイルを視覚的に分析しても、マージ後のエラーの特定には役立ちませんでした。Xcodeがファイルを解析しようとしたときにsyslogを調べた後、そのような行を見つけました:

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
ありがとう、あなたは私の日を保存しました:)
Centurion

ありがとう..これは目視検査よりもはるかに理にかなっています
Ciprian '26

2
これは非常に役立ちました。私は「tail -f /var/log/system.log」を実行し、プロジェクトを開こうとしました。system.logに、解析例外が発生した行番号を示すエラー(「Xcode」を検索)が表示されました。次に、ファイルをviで開き、ファイルに制御文字(^ H)があるのを確認して、その単一の文字と出来上がりを削除しました!開けることができました。
DustinB 2016年

ヒットアンドトライを試みるのではなく、最良の答え。コンソールログを読み取ります。
Urmil Setia

5
xcodebuild -project Project.xcodeproj buildのように、ターミナルからビルドしてみてください。ターミナルにエラーが表示されます。
Slavko Coolesoff 2017年

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ファイルを作成します(例:resolve_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"

    猫$ projectfile | grep -v "<<<<<<<ヘッド" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ projectfile

  3. shコマンドを使用してターミナルから実行します。shresolve_conflicts.sh


gitによって生成された文字列はどこにありますか?
Harshil Kotecha 2017

これらの文字列は競合マーカーです:「<<<<<<<」、「======= "and" >>>>>>>」。解決に関する詳細情報についてはgitの競合がここを見て:help.github.com/articles/...
Vojta

@ヴォイタ、あのスクリプトを要旨に入れてくれませんか?このエラーが発生します:resolve_conflicts.sh: line 1: -d: command not found resolve_conflicts.sh: line 3: $tempfile: ambiguous redirect
ダニエル

こんにちは@Daniel、ここにあります:gist.github.com/vojtaBelovsky/0be156ff37929e16f55f253d8a97d808
Vojta


1

実行する手順:-1. projectName.xcodeprojがあるフォルダーに移動します。2。右クリックして[パッケージの内容を表示]を選択します。拡張子が.pbxprojのファイルのリストが表示されます。3. project.pbxprojを選択します。右クリックして、「テキスト編集」を使用してこのファイルを開きます。4。<<<<<<、============と>>>>>>>>>>が表示されます。これらは通常、Sourcetree / SVN / GITLABから更新を取得するときに発生する競合です。これらを削除してファイルを保存してください。5.これで、エラーメッセージなしでプロジェクトを開くことができます。


0

Xcodeで新しいプロジェクトを作成し、古いディレクトリに移動して、すべてのソースファイル、nib、およびリソースを新しいプロジェクトのXcodeファイルのサイドバーにドラッグする必要があるようです。カスタムビルド設定またはターゲットで実際に多くの作業を行わない限り、数分以上かかることはありません。または、ソース管理の最後のチェックインに戻って、時々変更されたコードファイルを手動で追加します。


1
project.pbprojectファイルを確認して、プロジェクトファイルの作業バージョンと比較するだけです。
Atma

0

そして、物事が再び機能するようになったら、バックアップとリビジョン管理にsubversionやmercurialなどを使用することを検討する必要があります。彼の電子は常に想定された場所に移動するとは限らないことを忘れないでください。


私のお気に入りのVCSは最近gitです。
リリーバラード

0

現在のプロジェクトフォルダーの名前とチェックアウトモジュールを同じプロジェクトに変更し、現在のファイルの変更を追加します。



0

行の間のHEADと_HEADを見つけて、project.pbxprojでこの単語を削除してください。これを行う前に、このファイルをバックアップしてください。


0

Goto PhoneGapTest >> platformその後、フォルダiosを削除してからターミナルに移動し、次のように入力します。sudo phonegap build iosその後、プロジェクトを実行できます


0

元に戻すと、プルされたコードを元に戻すことができます。

そのプルリクエストを元に戻したい場合は、このコマンドをプロジェクトパスに置いてください

-> git merge --abort


0

Text ===または<<<または>>>>のように見つからなかった場合、問題は本当に単純で楽しいものでした... Xcodeでアプリの名前を変更しますが、ビルド前にUnityProjectSettingsで変更しません-それが問題でした...


-2

Subversionは、ほぼ毎週SVNを起動した後、プロジェクトファイルを破損します。私はそれがなぜ今これをするのかを理解しようとしています、そしてこの問題に出くわしました。


私の推測では、更新またはコミットを実行すると同時にプロジェクトをXcodeで開いていると思います... "IF" Xcodeが自動保存されると同時に、いくつかの破損が発生する可能性があると思います
epatel 2009年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.