Projekt kann nicht geöffnet werden… kann nicht geöffnet werden, da die Projektdatei nicht analysiert werden kann

93

Ich habe eine Weile daran gearbeitet, eine iPhone-App zu erstellen. Heute, als meine Batterie schwach war, arbeitete ich und speicherte ständig meine Quelldateien, dann ging der Strom aus ...

Wenn ich meinen Computer wieder angeschlossen habe und er eine gute Leistung erhält, versuche ich, meine Projektdatei zu öffnen, und es wird eine Fehlermeldung angezeigt:

Projekt kann nicht geöffnet werden

Projekt ... kann nicht geöffnet werden, da die Projektdatei nicht analysiert werden kann.

Gibt es eine Möglichkeit, dass die Leute wissen, dass ich mich davon erholen kann? Ich habe versucht, eine ältere Projektdatei zu verwenden, sie erneut einzufügen und dann zu kompilieren. Es gibt mir einen funky Fehler, der wahrscheinlich daran liegt, dass nicht alle gewünschten Dateien gefunden werden ...

Ich möchte mein Projekt wirklich nicht von Grund auf neu erstellen, wenn dies möglich ist.


BEARBEITEN

Ok, ich habe einen Unterschied zwischen dieser und einer etwas älteren Projektdatei gemacht, die funktioniert hat und festgestellt hat, dass die Datei beschädigt ist. Nach dem Zusammenführen (der guten und neuesten Teile) funktioniert es jetzt.

Tolle Punkte zum SVN. Ich habe eine, aber es gab einige Probleme, XCode damit zu synchronisieren. Ich werde jetzt definitiv mehr Zeit damit verbringen ... ;-)

Geben Sie hier die Bildbeschreibung ein

Gemeinschaft
quelle

Antworten:

227

Ich bin auf dieses Problem gestoßen und mein Senior hat mir von einer Lösung erzählt, dh:

Klicken Sie mit der rechten Maustaste auf Ihre projectname.xcodeprojDatei. Hier projectnamewird der Name Ihres Projekts angezeigt. Nachdem Sie mit der rechten Maustaste geklickt haben, wählen Sie Paketinhalt anzeigen . Danach öffnen Sie Ihre projectname.pbxprojDatei in einem Texteditor. Jetzt für die Linie suchen enthält <<<<<<< .mine, =======und >>>>>>> .r. In meinem Fall sah es zum Beispiel so aus

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

Entfernen Sie nun diejenigen <<<<<<< .mine, =======und >>>>>>> .rLinien , so dass es würde wie folgt aussehen

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

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

Speichern und öffnen Sie nun Ihr Xcode-Projekt und erstellen Sie es. Alles wird gut.

Usuf
quelle
11
DANKE. Das funktioniert. In meinem Fall war es nicht ".mine" oder ".r", sondern sagte etwas anderes ... Strg-F für "===", um den Ort zu finden.
ck_
Dies sollte als Antwort markiert werden. Wirklich gutes Zeug, danke
Owen Gerig
12
Um nur zu sagen, WARUM dies geschieht: Ihre Versionskontrolle versucht, zwei widersprüchliche Versionen der Projektdatei zusammenzuführen. Sie müssen Ihrer Versionskontrolle manuell mitteilen, um welche Zusammenführung es sich handelt. Die Tatsache, dass XCode dies nicht ordnungsgemäß handhabt, ist für mich täglich ein großer Ärger.
Thane Brimhall
Danke dir. Mein Problem kam in Form von <<<<<<<<< HEAD ======= >>>>>>>. Es befand sich an zwei Stellen gegen Ende der .pbxproj-Datei. Nachdem ich diese Elemente entfernt hatte, konnte ich die .xcodeproj-Datei erneut ausführen. Achten Sie darauf, dass diese Elemente im Rest der Datei sichtbar nicht am richtigen Ort sind.
AgnosticDev
1
In meinem Fall ist es <<<<<<< HEAD, ======, >>>>>>> etwas alphanumerisch. Entfernen Sie diese drei Zeilen, speichern Sie sie und öffnen Sie sie. Lief wie am Schnürchen!!! Vielen Dank.
Gowrie Sammandhamoorthy
47

Mohammeds Antwort war sehr hilfreich (und führte zu meiner Lösung). Das einfache Entfernen des >>>>>>> ======= <<<<<<< reichte jedoch nicht aus, um das Analyseproblem in der project.pbxproj (für mich) zu beheben, wenn Änderungen aus beiden Zweigen beibehalten wurden nach einer Zusammenführung.

Ich hatte einen Zusammenführungskonflikt im Abschnitt PBXGroup (dessen Anfang durch einen Blockkommentar wie diesen angezeigt wird: / * Abschnitt PBXGroup beginnen * /) der Datei project.pbxproj. Das aufgetretene Problem kann jedoch auch an anderen Stellen in der Datei project.pbxproj auftreten.

Im Folgenden finden Sie eine Vereinfachung des Zusammenführungskonflikts, auf den ich gestoßen bin:

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

Als ich die Markierungen für Zusammenführungskonflikte entfernte, blieb mir Folgendes übrig:

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

Normalerweise würde das Entfernen der Markierungen für Zusammenführungskonflikte das Analyseproblem in der Datei project.pbxproj beheben und die Integrität des Arbeitsbereichs wiederherstellen. Diesmal nicht.

Folgendes habe ich getan, um das Problem zu lösen:

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

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

Ich musste am Ende der ersten PBXGroup tatsächlich 2 Zeilen hinzufügen.

Sie können sehen, dass es kein Analyseproblem gegeben hätte, wenn ich die Änderungen von Head oder dem zusammengeführten Zweig verworfen hätte! In meinem Fall wollte ich jedoch beide Gruppen behalten, die ich aus jedem Zweig hinzugefügt hatte, und das einfache Entfernen der Zusammenführungsmarkierungen reichte nicht aus. Ich musste der Datei project.pbxproj zusätzliche Zeilen hinzufügen, um die korrekte Formatierung beizubehalten.

Wenn Sie also auf Analyseprobleme stoßen, nachdem Sie dachten, Sie hätten alle Zusammenführungskonflikte gelöst, sollten Sie sich die .pbxproj genauer ansehen und sicherstellen, dass keine Formatierungsprobleme vorliegen!

SnoopyProtocol
quelle
Sie haben wahrscheinlich versehentlich den Doppelpunkt und / oder die geschweifte Klammer entfernt, als Sie Zusammenführungskonflikte gelöst haben. Sie sollten den richtigen Teil (oder beide) sorgfältig aus den Zusammenführungskonflikten nehmen und Markierungen entfernen. Das ist es.
Stas
Hinzufügen des sourceTree = "<Gruppe>"; }; hat es für mich gelöst! So hilfreich! Vielen Dank!
Nitin Alabur
Ich wollte nur etwas hinzufügen. Ich hatte das gleiche Problem, arbeitete aber mit CocoaPods und einem Arbeitsbereich. Ich musste den Arbeitsbereich nuklearisieren und neu erstellen, damit Xcode das Update übernehmen konnte.
Nico
@Nico: Hast du etwas dagegen zu teilen, wie man es nuklearisiert? Ich stehe hier vor einem ähnlichen Problem und habe es schwer
Isaac
Ich habe festgestellt, dass ich nach dem Reparieren der .pbxproj-Datei das Projekt schließen und erneut öffnen musste, damit es funktioniert, aber es hat funktioniert. Danke SnoopyProtocol!
KeithTheBiped
28

Ich habe genau den gleichen Fehler erhalten, weil Sie mit Cordova ein Projekt mit Leerzeichen erstellen können und Xcode nicht weiß, wie Sie damit umgehen sollen.

bwags
quelle
Vielen Dank, das war die Antwort, ich hatte einen Platz.
Max
Gleiches gilt für Cordova Phonegap 3.4
Miles M.
Dies war genau das Problem, das ich hatte. Vielen Dank!
fray88
@ fray88 Ich habe den Speicherplatz in meinem Ordnernamen sowohl für das Xcode-Projekt als auch für den Cordova-Ordner entfernt, aber jetzt wird ein Fehler angezeigt: ENOENT: Kein solcher Datei- oder Verzeichnisfehler. Wie kann ich den Raum herausnehmen und die Dinge zum Laufen bringen? Danke.
SaH
25

Ich hatte ein ähnliches Problem.

Screenshot 1

Im Folgenden finden Sie Schritte, um das Problem zu beheben:

  1. Navigieren Sie zu dem Ordner, in dem sich Ihr Ordner befindet projectName.xcodeproj.

    Screenshot 2

  2. Klicken Sie mit der rechten Maustaste und wählen Sie ' Show Package Contents'. Sie können eine Liste der Dateien mit der .pbxprojErweiterung anzeigen.

    Screenshot 3

  3. Wählen Sie project.pbxproj. Klicken Sie mit der rechten Maustaste und öffnen Sie diese Datei mit ' Text Edit'.

    Screenshot 4

  4. Sie werden sehen können <<<<<< .mine, ============und >>>>>>>>>> .r123. Dies sind im Allgemeinen Konflikte, die auftreten, wenn Sie ein Update von SVN übernehmen. Löschen Sie diese und speichern Sie die Datei.

    Screenshot 5

    Screenshot 6

  5. Jetzt können Sie das Projekt ohne Fehlermeldung öffnen .

Jayprakash Dubey
quelle
23

Die visuelle Analyse der Xcode-Projektdatei hat mir nicht geholfen, Fehler nach dem Zusammenführen zu finden. Nach dem Blick auf Syslog fand eine solche Zeile, als Xcode versuchte, die Datei zu analysieren:

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.

Nach dem Reparieren kann das Projekt ok geöffnet werden.

Oleksiy Ivanov
quelle
2
Danke, du hast meinen Tag gerettet :)
Centurion
Vielen Dank .. das ist viel sinnvoller als visuelle Inspektion
Ciprian
2
Das hat enorm geholfen. Ich habe gerade "tail -f /var/log/system.log" und versucht, das Projekt zu öffnen. In der Datei system.log wurde ein Fehler angezeigt (Suche nach "Xcode"), der die Zeilennummer anzeigt, in der die Analyse-Ausnahme aufgetreten ist. Ich öffnete dann die Datei in vi und sah ein Steuerzeichen in der Datei (^ H) und entfernte gerade dieses einzelne Zeichen und voila! es konnte geöffnet werden.
DustinB
Die beste Antwort, anstatt zu versuchen, zu schlagen und zu versuchen. Konsolenprotokoll lesen.
Urmil Setia
5
Versuchen Sie einfach, es vom Terminal aus wie xcodebuild -project Project.xcodeproj build zu erstellen. Sie sehen den Fehler direkt im Terminal.
Slavko Coolesoff
6

Analysieren Sie die Syntax Ihrer Projektdatei. Überprüfen Sie es in Ihrem Projekt im Terminal:

plutil -lint project.pbxproj

Dies zeigt Ihnen die Fehler aus dem Parser.

Mögliches Problem : Einige Projekte legen die Git-Zusammenführungsstrategie unionfür Projektdateien fest. Dies funktioniert meistens, beendet jedoch Ihre Projektdatei stillschweigend, wenn dies fehlschlägt. Diese Strategie ist in der .gitattributesDatei in Ihrem Repository definiert.

beseder
quelle
3

Ich hatte kürzlich das gleiche Problem, als ich versuchte, meinen Zweig mit einem Remote-Zweig zusammenzuführen. Keine der oben genannten Lösungen schien jedoch meinem Problem angemessen zu sein.

Es gab keine Zusammenführungskonflikte zwischen der Datei project.pbxproj in meinem Zweig oder dem Remote-Zweig. Meine Datei projectName.xcodeproj würde sich jedoch aus demselben Grund wie in der gestellten Frage gezeigt nicht öffnen lassen.

Meine Lösung bestand darin, mit einem Texteditor in der Datei project.pbxproj nach Unregelmäßigkeiten in der Dateisyntax zu suchen (z. B. eine zusätzliche geschweifte Klammer). Ich habe diesen Prozess beschleunigt, indem ich mich auf die Zeilen konzentriert habe, die in der alten Datei im Vergleich zur zusammengeführten Datei eingefügt oder gelöscht wurden. Bei näherer Betrachtung stellte ich fest, dass die Ursache meines Problems die Wiederholung der folgenden Zeile war:

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

in meiner zusammengeführten Datei. Dies führte zu einer nicht geschlossenen geschweiften Klammer und einer daraus resultierenden ungültigen pbxproj-Syntax. Das Löschen der obigen Zeile hat mein Problem behoben.

Abhi
quelle
2

Ich bin gerade auf dasselbe Problem gestoßen. Ich habe wie immer generierte Strings von git entfernt, aber Xcode hat sich immer noch geweigert, die .xcodeproj-Datei zu öffnen. Aber alles war korrekt, keine fehlenden Klammern usw. Schließlich habe ich versucht, Xcode zu beenden und das Projekt zu öffnen, als Xcode geschlossen wurde . Dann hat es funktioniert. Ich hoffe das hilft jemandem.

BEARBEITEN:

Zur Lösung von Konflikten in Ihrer .xcodeproj-Datei können Sie dieses praktische Skript verwenden:

  1. Erstellen Sie eine leere .sh-Datei in Ihrem Projektverzeichnis (z. B. resolve_conflicts.sh).
  2. Hier ist das Skript:

    Projektdatei = find -d . -name 'project.pbxproj' Projektverzeichnis =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

  3. Führen Sie es vom Terminal mit dem Befehl sh aus: sh resolve_conflicts.sh

Vojta
quelle
Wo werden Strings von Git generiert?
Harshil Kotecha
Diese Zeichenfolgen sind Konfliktmarkierungen: "<<<<<<<", "=======" und ">>>>>>>". Weitere Informationen zum Lösen von Git-Konflikten finden Sie hier: help.github.com/articles/…
Vojta
@Vojta, könnten Sie dieses Skript in einem Kern werfen? Ich erhalte diesen Fehler:resolve_conflicts.sh: line 1: -d: command not found resolve_conflicts.sh: line 3: $tempfile: ambiguous redirect
Daniel
1

Setzen Sie die Datei project.pbxproj zurück

svn revert --filename--

Mondousage
quelle
1

Zu befolgende Schritte: - 1. Navigieren Sie in den Ordner, in dem sich Ihr projectName.xcodeproj befindet. 2. Klicken Sie mit der rechten Maustaste und wählen Sie "Paketinhalt anzeigen". Sie können eine Liste der Dateien mit der Erweiterung .pbxproj anzeigen. 3.Wählen Sie project.pbxproj. Klicken Sie mit der rechten Maustaste und öffnen Sie diese Datei mit 'Textbearbeitung'. 4.Sie können <<<<<<, ============ und >>>>>>>>>> sehen. Dies sind im Allgemeinen Konflikte, die auftreten, wenn Sie ein Update von Sourcetree / SVN / GITLAB übernehmen. Löschen Sie diese und speichern Sie die Datei. 5. Jetzt können Sie das Projekt ohne Fehlermeldung öffnen.

Akash Singh
quelle
0

Es hört sich so an, als müssten Sie ein neues Projekt in Xcode erstellen, in das alte Verzeichnis wechseln und alle Ihre Quelldateien, Schreibfedern und Ressourcen in die Seitenleiste der Xcode-Dateien im neuen Projekt ziehen. Es sollte nicht länger als ein paar Minuten dauern, es sei denn, Sie haben wirklich viel mit benutzerdefinierten Build-Einstellungen oder Zielen gearbeitet. Entweder das, oder kehren Sie zum letzten Einchecken in Ihrer Quellcodeverwaltung zurück und fügen Sie manuell alle Codedateien hinzu, die sich bis dahin geändert haben.

Marc Charbonneau
quelle
1
Überprüfen Sie einfach die Datei project.pbproject und führen Sie einen Unterschied zu einer funktionierenden Version der Projektdatei durch.
Atma
0

Und sobald Sie die Dinge wieder zum Laufen bringen, sollten Sie versuchen, etwas wie Subversion oder Quecksilber für die Sicherungs- und Revisionskontrolle zu verwenden. Denken Sie daran, dass die Elektronen nicht immer dorthin gehen, wo sie sollen, früh und oft sichern!

Brian C. Lane
quelle
Mein Lieblings-VCS war in letzter Zeit Git.
Lily Ballard
0

Ändern Sie den Namen Ihres aktuellen Projektordners und das Checkout-Modul im selben Projekt. Fügen Sie dann die aktuellen Dateiänderungen hinzu.

suresh
quelle
0

Überprüfen Sie einfach die Datei project.pbproject und führen Sie einen Unterschied zu einer funktionierenden Version der Projektdatei durch.

Dies ist häufig der Fall, wenn Konflikte mit einem Versionskontrollsystem wie dem hier angegebenen auftreten: Die Benutzerdatei kann im MAC iphone SDK nicht in Subversion analysiert werden

Atma
quelle
0

Versuchen Sie, HEAD und _HEAD zwischen den Zeilen zu finden, und löschen Sie diese Wörter in project.pbxproj. Sichern Sie diese Datei, bevor Sie dies tun.

Avi Shim.
quelle
0

Gehe zu PhoneGapTest >> Plattform Lösche dann den Ordner ios danach gehe zum Terminal und tippe: sudo phonegap build ios danach kannst du das Projekt ausführen

Ranch
quelle
0

Durch Zurücksetzen können Sie den gezogenen Code rückgängig machen.

Wenn Sie diese Pull-Anforderung rückgängig machen möchten, setzen Sie diesen Befehl einfach in den Projektpfad

-> git merge --abort

Subramani
quelle
0

Falls Sie nicht in Text === oder <<< oder >>>> gefunden haben, wie es für mich war, war das Problem wirklich einfach und hat Spaß gemacht ... Ich ändere den Namen der App in Xcode, aber nicht in UnityProjectSettings vor dem Erstellen - das war das Problem ...

Anton Konoplianchenko
quelle
-2

subversion beschädigt meine Projektdatei nach einem SVN fast wöchentlich. Ich versuche herauszufinden, warum dies gerade geschieht, und bin auf dieses Problem gestoßen.


quelle
Ich vermute, dass Sie das Projekt in Xcode geöffnet haben, während Sie ein Update durchführen oder ein Commit durchführen ... "WENN" Xcode zur gleichen Zeit automatisch gespeichert wird, würde ich vermuten, dass eine Beschädigung auftreten kann
Epatel
-3

Dies liegt daran, dass Projektnamen keine Leerzeichen dazwischen haben sollen

Mohsin Muzawar
quelle