Je travaille depuis un moment pour créer une application iPhone. Aujourd'hui, lorsque ma batterie était faible, je travaillais et je sauvegardais constamment mes fichiers sources, puis le courant était coupé ...
Maintenant, quand je rebranche mon ordinateur et que je reçois une bonne alimentation, j'essaie d'ouvrir mon fichier de projet et j'obtiens une erreur:
Impossible d'ouvrir le projet
Projet ... ne peut pas être ouvert car le fichier de projet ne peut pas être analysé.
Y a-t-il un moyen que les gens sachent que je peux récupérer de cela? J'ai essayé d'utiliser un fichier de projet plus ancien, de le réinsérer puis de le compiler. Cela me donne une erreur géniale, probablement parce que ce n'est pas de trouver tous les fichiers qu'il veut ...
Je ne veux vraiment pas reconstruire mon projet à partir de zéro si possible.
Ok, j’ai fait une différence entre ce fichier et un fichier de projet légèrement plus ancien qui fonctionnait et qui a été corrompu. Après les avoir fusionnées (les bons et les plus récents), cela fonctionne maintenant.
Grands points sur le SVN. J'en ai un, mais il y a eu du funkiness essayant de synchroniser XCode avec. Je vais certainement passer plus de temps avec ça maintenant ... ;-)
Je suis tombé sur ce problème et mon supérieur m'a parlé d'une solution, à savoir:
Faites un clic droit sur votre projectname.xcodeproj
fichier ici projectname
sera le nom de votre projet. Maintenant, après avoir cliqué avec le bouton droit de la souris, sélectionnez Afficher le contenu des packages. Après cela, ouvrez votre projectname.pbxproj
fichier dans un éditeur de texte. Maintenant, recherchez la ligne contenant <<<<<<< .mine
, =======
et >>>>>>> .r
. Par exemple, dans mon cas, cela ressemblait à ceci
<<<<<<< .mine
9ADAAC6A15DCEF6A0019ACA8 .... in Resources */,
=======
52FD7F3D15DCEAEF009E9322 ... in Resources */,
>>>>>>> .r269
Maintenant, enlevez ces <<<<<<< .mine
, =======
et >>>>>>> .r
lignes pour que cela ressemble à ceci
9ADAAC6A15DCEF6A0019ACA8 /* BuyPriceBtn.png in Resources */,
52FD7F3D15DCEAEF009E9322 /* discussionForm.Zip in Resources */,
Maintenant, enregistrez et ouvrez votre projet Xcode et construisez-le. Tout ira bien.
La réponse de Muhammad a été très utile (et a aidé à mener à mon correctif). Cependant, supprimer simplement le >>>>>>> ======= <<<<<<< n'était pas suffisant pour résoudre le problème d'analyse dans le project.pbxproj (pour moi) tout en conservant les modifications des deux branches après une fusion.
J'ai eu un conflit de fusion dans la section PBXGroup (dont le début est indiqué par un commentaire de bloc comme celui-ci:/* Début de la section PBXGroup * /) du fichier project.pbxproj. Cependant, le problème rencontré peut également se produire à d’autres endroits du fichier project.pbxproj.
Vous trouverez ci-dessous une simplification du conflit de fusion rencontré:
<<<<<<< HEAD
id = {
isa = PBXGroup;
children = (
id
);
name = "Your Group Name";
=======
id = {
isa = PBXGroup;
children = (
id
);
name = "Your Group Name";
>>>>>>> branch name
sourceTree = "<group>";
};
Lorsque j'ai supprimé les marqueurs de conflit de fusion, voici ce qui me restait:
id = {
isa = PBXGroup;
children = (
id
);
name = "Your Group Name";
id = {
isa = PBXGroup;
children = (
id
);
name = "Your Group Name";
sourceTree = "<group>";
};
Normalement, la suppression des marqueurs de conflit de fusion résoudrait le problème d'analyse dans le fichier project.pbxproj et restaurait l'intégrité de l'espace de travail. Cette fois, ça n'a pas été le cas.
Voici ce que j'ai fait pour résoudre le problème:
id = {
isa = PBXGroup;
children = (
id
);
name = "Your Group Name";
sourceTree = "<group>";
};
id = {
isa = PBXGroup;
children = (
id
);
name = "Your Group Name";
sourceTree = "<group>";
};
En fait, j'ai dû ajouter 2 lignes à la fin du premier groupe PBX.
Vous pouvez voir que si j'avais choisi d'ignorer les modifications de Head ou de la branche fusionnée, il n'y aurait pas eu de problème d'analyse! Cependant, dans mon cas, je souhaitais conserver les deux groupes que j’avais ajoutés de chaque branche et supprimer les marqueurs de fusion ne suffisait pas; J'ai dû ajouter des lignes supplémentaires au fichier project.pbxproj afin de conserver un formatage correct.
Ainsi, si vous rencontrez des problèmes d’analyse après avoir pensé résoudre tous vos conflits de fusion, vous voudrez peut-être examiner de plus près le fichier .pbxproj et s’assurer qu’il n’ya pas de problème de formatage!
J'ai exactement la même erreur parce que Cordova vous permettra de créer un projet contenant des espaces et que Xcode ne sait pas comment traiter.
L'analyse visuelle du fichier de projet Xcode ne m'a pas aidé à localiser l'erreur après la fusion. Après avoir cherché à syslog trouver cette ligne lorsque Xcode essaie d’analyser le fichier:
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.
Après avoir corrigé ce projet, vous pouvez l’ouvrir correctement.
J'ai eu le même problème.
Voici les étapes pour le résoudre:
Accédez au dossier où votre projectName.xcodeproj
.
Faites un clic droit et sélectionnez 'Show Package Contents
'. Vous pourrez voir la liste des fichiers avec .pbxproj
_ extension.
Sélectionnez project.pbxproj
. Faites un clic droit et ouvrez ce fichier en utilisant 'Text Edit
'.
Vous pourrez voir <<<<<< .mine
, ============
et >>>>>>>>>> .r123
. Ce sont généralement des conflits qui surviennent lorsque vous prenez une mise à jour de SVN. Supprimez-les et enregistrez le fichier.
Maintenant, vous pourrez ouvrir un projet sans message d'erreur .
Analysez la syntaxe de votre fichier de projet. Vérifiez-le dans votre projet dans le terminal:
plutil -lint project.pbxproj
Cela vous montrera les erreurs de l'analyseur.
Problème possible: Certains projets définissent la stratégie de fusion git union
pour les fichiers de projet. Cela fonctionne la plupart du temps, mais tuera silencieusement votre fichier de projet s'il échoue. Cette stratégie est définie dans le .gitattributes
fichier dans votre référentiel.
J'ai récemment rencontré le même problème lors de la fusion de ma branche avec une branche distante. Cependant, aucune des solutions ci-dessus ne semblait appropriée à mon problème.
Il n'y a pas eu de conflit de fusion entre le fichier project.pbxproj de ma branche ou de la branche distante. Cependant, mon fichier nomProjet.xcodeproj refuserait de s'ouvrir pour la même raison que celle indiquée dans la question posée.
Ma solution consistait à parcourir le fichier project.pbxproj à l'aide d'un éditeur de texte et à rechercher des irrégularités dans la syntaxe du fichier (par exemple, une accolade supplémentaire). J'ai accéléré ce processus en me concentrant sur les lignes insérées ou supprimées dans l'ancien fichier par rapport au fichier fusionné. En regardant de plus près, j'ai trouvé que la cause de mon problème était la répétition de la ligne suivante:
xxxxxxxxxxxxx /* [CP] Check Pods Manifest.lock */ = {
dans mon fichier fusionné. Cela a conduit à une accolade non fermée et à la syntaxe pbxproj non valide. Supprimer la ligne ci-dessus a résolu mon problème.
Je viens de rencontrer le même problème. Comme toujours, j'ai supprimé les chaînes générées par git, mais Xcode a toujours refusé d'ouvrir le fichier .xcodeproj. Mais tout était correct, pas de crochets manquants, etc. Finalement, j'ai essayé de quitter Xcode et projet ouvert quand Xcode était fermé.. alors cela a fonctionné. J'espère que ça aidera quelqu'un.
MODIFIER:
pour résoudre les conflits dans votre fichier .xcodeproj, vous pouvez utiliser ce script pratique:
Voici le script:
fichierfichier = 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
Exécutez-le depuis le terminal à l'aide de la commande sh: sh resol_conflicts.sh
Revers le projet.pbxproj
svn revert --filename--
changez le nom de dossier actuel et le module de paiement du même projet, puis ajoutez les modifications de fichier actuelles.
Essayez de trouver HEAD et _HEAD entre les lignes et supprimez ces mots dans project.pbxproj. Sauvegardez ce fichier avant de le faire ..
Il semble que vous deviez créer un nouveau projet dans Xcode, accéder à l'ancien répertoire et faire glisser tous vos fichiers source, vos nibs et vos ressources dans la barre latérale de fichiers Xcode du nouveau projet. Cela ne devrait pas prendre plus de quelques minutes, sauf si vous avez vraiment beaucoup travaillé avec les paramètres de construction personnalisés ou les cibles. Ou bien, ou revenez au dernier enregistrement dans votre contrôle de code source et ajoutez manuellement les fichiers de code modifiés entre-temps.
En inversant, vous pouvez annuler le code extrait.
Si vous voulez annuler cette demande d'extraction, il suffit de mettre cette commande sur le chemin du projet
-> git merge --abort
Et une fois que les choses fonctionneront à nouveau, vous devriez envisager d'utiliser quelque chose comme Subversion ou Mercurial pour la sauvegarde et le contrôle des révisions. Rappelez-vous que les électrons ne vont pas toujours où ils sont supposés, sauvegardez tôt et souvent!
Il suffit de vérifier le fichier project.pbproject et d’effectuer une comparaison avec une version fonctionnelle du fichier de projet.
Cela arrive souvent lorsque vous avez des conflits avec un système de contrôle de version tel que posté ici: le fichier utilisateur ne peut pas être analysé dans Subversion dans MAC iphone SDK
Allez à PhoneGapTest >> plate-forme Ensuite, supprimez le dossier ios après cela, allez au terminal puis tapez: Sudo phonegap build ios après que vous puissiez exécuter le projet