私はしばらくの間、iPhoneアプリの作成に取り組んできました。バッテリーが少なくなった今日、私は働いていてソースファイルを絶えず保存していたので、電力が切れました...
今、コンピューターを再び接続し、それが十分な電力を得ているとき、プロジェクトファイルを開こうとするとエラーが発生します。
プロジェクトを開けません
プロジェクト...を開けません。プロジェクトファイルを解析できないためです。
私がこれから回復できることを人々が知っている方法はありますか?古いプロジェクトファイルを使用して再挿入し、コンパイルしてみました。おそらく、必要なすべてのファイルが見つからないために、ファンキーなエラーが発生します...
可能であれば、プロジェクトを最初から再構築したくないのです。
[OK]を、私はこれとわずかに古いプロジェクトファイルとの間の差分を行い、動作し、ファイルにいくつかの破損があることがわかりました。それら(良い部分と最新の部分)をマージした後、現在動作しています。
SVNの素晴らしい点。私は1つ持っていますが、XCodeと同期しようとするファンキーさがありました。今は間違いなくもっと時間を費やします... ;-)
私はこの問題に遭遇し、私の先輩は解決策について私に言った、すなわち:
ここで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プロジェクトを保存して開き、ビルドします。何もかも良くなるだろう。
Muhammadの答えは非常に役に立ちました(そして、私の修正につながりました)。ただし、単に>>>>>>> ======= <<<<<<<<を削除するだけでは、両方のブランチからの変更を保持するときにproject.pbxprojの解析の問題を修正するには不十分でした。マージ後。
Project.pbxprojファイルのPBXGroupセクション(開始は次のようなブロックコメントで示されています:/ * Begin PBXGroupセクション* /)でマージの競合がありました。ただし、私が遭遇した問題は、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を詳しく調べて、フォーマットの問題がないことを確認してください。
Cordovaを使用すると、スペースを含むプロジェクトを作成でき、Xcodeには対処方法がわからないため、これとまったく同じエラーが発生しました。
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.
そのプロジェクトを修正したら、OKを開くことができます。
同様の問題がありました。
以下はそれを解決する手順です。
プロジェクトファイルの構文を分析します。ターミナルのプロジェクト内で確認してください:
plutil -lint project.pbxproj
これにより、パーサーからのエラーが表示されます。
考えられる問題:一部のプロジェクトは、プロジェクトファイルにgitマージ戦略union
を設定します。これはほとんどの場合に機能しますが、プロジェクトファイルが失敗した場合は静かに終了します。この戦略は.gitattributes
リポジトリ内のファイル。
ブランチをリモートブランチとマージしようとしたときに、最近同じ問題に直面しました。しかし、上記の解決策はどれも私の問題にふさわしくないと思われました。
私のブランチまたはリモートブランチのproject.pbxprojファイル間にマージの競合はありませんでした。ただし、projectName.xcodeprojファイルは、質問に示されているのと同じ理由で開くことを拒否します。
私の解決策は、テキストエディターを使用してproject.pbxprojを調べ、ファイルの構文に異常があるかどうかを確認することです(たとえば、余分な中かっこ)。マージされたファイルと比較して、古いファイルで挿入または削除された行に注目することで、このプロセスを高速化しました。よく調べてみると、問題の原因は次の行の繰り返しであることがわかりました。
xxxxxxxxxxxxx /* [CP] Check Pods Manifest.lock */ = {
マージしたファイルに。これにより、閉じられていない中括弧と、その結果として無効なpbxproj構文が発生しました。上記の行を削除すると問題が解決しました。
私は同じ問題に遭遇しました。いつものようにgitで生成された文字列を削除しましたが、Xcodeは.xcodeprojファイルを開くことを拒否しました。しかし、すべてが正しかった、欠けているブラケットなどはありませんでした。最後に私はしようとしました xcodeを終了 プロジェクトを開くとき Xcodeが閉じられました..それは働いた。これが誰かの助けになることを願っています。
編集:
.xcodeprojファイルの競合を解決するには、次の便利なスクリプトを使用できます。
スクリプトは次のとおりです。
projectfile = find -d . -name 'project.pbxproj'
projectdir = echo *.xcodeproj
projectfile = "$ {projectdir} /project.pbxproj" tempfile = "$ {projectdir} /project.pbxproj.out" savefile = "$ {projectdir} /project.pbxproj.mergesave"
cat $ projectfile | grep -v "<<<<<<<< HEAD" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ projectfile
Shコマンドを使用して端末から実行します:sh resolve_conflicts.sh
Project.pbxprojを元に戻します
svn revert --filename--
現在のプロジェクトフォルダー名とチェックアウトモジュールを同じプロジェクトに変更し、現在のファイルの変更を追加します。
行間のHEADおよび_HEADを見つけて、project.pbxprojでこの単語を削除してください。これを行う前に、このファイルをバックアップしてください。
Xcodeで新しいプロジェクトを作成し、古いディレクトリに移動し、すべてのソースファイル、ニブ、およびリソースを新しいプロジェクトのXcodeファイルサイドバーにドラッグする必要があるようです。カスタムビルド設定またはターゲットで実際に多くの作業を行った場合を除き、数分以上かかることはありません。それとも、ソース管理の最後のチェックインに戻り、時々変更されるコードファイルを手動で追加します。
元に戻すことで、プルしたコードを元に戻すことができます。
そのプルリクエストを元に戻したい場合は、このコマンドをプロジェクトパスに置くだけです
-> git merge --abort
そして、物事が再び機能するようになったら、SubversionやMercurialのようなものをバックアップとリビジョン管理に使用することを検討する必要があります。彼の電子は、想定された場所に常に移動するとは限らないことを忘れないでください。
Project.pbprojectファイルを確認し、プロジェクトファイルの作業バージョンに対してdiffを実行するだけです。
多くの場合、これは次のようなバージョン管理システムとの競合がある場合に発生します。 MAC iphone SDKのSubversionではユーザーファイルを解析できません
PhoneGapTest >> platformに移動します。その後、ターミナルに移動してiosフォルダーを削除し、次のように入力します。sudophonegap build iosその後、プロジェクトを実行できます。