Невозможно открыть проект ... невозможно открыть, потому что файл проекта не может быть проанализирован

Некоторое время я работал над созданием приложения для iPhone. Сегодня, когда у меня разрядился аккумулятор, я работал и постоянно сохранял исходные файлы, потом отключилось электричество ...

Теперь, когда я снова подключил свой компьютер и он набирает достаточную мощность, я пытаюсь открыть файл проекта и получаю сообщение об ошибке:

Unable to Open Project

Project ... cannot be opened because the project file cannot be parsed.

Есть ли способ, которым люди знают, что я могу оправиться от этого? Я попытался использовать старый файл проекта и повторно вставить его, а затем скомпилировать. Это вызывает у меня неприятную ошибку, которая, вероятно, связана с тем, что он не находит все файлы, которые ему нужны ...

Я действительно не хочу перестраивать свой проект с нуля, если это возможно.


РЕДАКТИРОВАТЬ

Хорошо, я провел различие между этим и немного более старым файлом проекта, который работал, и увидел, что в файле есть некоторые повреждения. После их объединения (хорошей и новейшей частей) он теперь работает.

Замечательные моменты о SVN. У меня есть один, но были некоторые забавные попытки синхронизировать с ним XCode. Я определенно проведу с ним больше времени ... ;-)

Невозможно открыть проект ... невозможно открыть, потому что файл проекта не может быть проанализирован

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
96
0
101 979
21

Ответы 21

Похоже, вам придется создать новый проект в Xcode, перейти в старый каталог и перетащить все исходные файлы, перья и ресурсы на боковую панель файлов Xcode в новом проекте. Это не должно занять больше нескольких минут, если вы действительно не много работали с пользовательскими настройками или целями сборки. Либо так, либо вернитесь к последней регистрации в исходном элементе управления и вручную добавьте любые файлы кода, которые изменились с этого момента.

Просто проверьте файл project.pbproject и сравните его с рабочей версией файла проекта.

Atma 03.07.2012 22:06

И как только вы снова начнете работать, вам следует подумать об использовании чего-то вроде subversion или mercurial для резервного копирования и контроля версий. Помните, что электроны не всегда уходят туда, куда должны, резервные копии рано и часто!

Моим любимым VCS в последнее время был git.

Lily Ballard 13.12.2008 13:31

subversion повредит мой файл проекта после svn-up почти еженедельно. Я пытаюсь понять, почему он это делает прямо сейчас, и столкнулся с этой проблемой.

Я предполагаю, что у вас есть проект, открытый в Xcode, в то же время, когда вы выполняете обновление или фиксируете ... "ЕСЛИ" Xcode происходит автосохранение в то же время, я предполагаю, что может произойти какое-то повреждение

epatel 18.03.2009 02:25

измените название папки текущего проекта и модуль проверки на тот же проект. затем добавьте изменения в текущий файл.

Просто проверьте файл project.pbproject и сравните его с рабочей версией файла проекта.

Часто это случается, когда у вас есть конфликты с системой контроля версий, как написано здесь: Пользовательский файл не может быть проанализирован в Subversion в MAC iphone SDK

Я столкнулся с этой проблемой, и мой старший рассказал мне о решении, а именно:

Щелкните правой кнопкой мыши файл 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 и создайте его. Все будет хорошо.

СПАСИБО. Это работает. В моем случае это были не «.mine» или «.r», а что-то еще ... Ctrl-F для «===», чтобы найти место.

ck_ 31.10.2012 21:22

это должно быть отмечено как ответ. Действительно хороший материал, спасибо

owen gerig 10.05.2013 19:10

Просто чтобы сказать, ПОЧЕМУ это происходит: ваш контроль версий пытается объединить две конфликтующие версии файла проекта. Вы должны вручную указать системе управления версиями, что такое правильное слияние. Тот факт, что XCode не справляется с этим изящно, ежедневно меня очень раздражает.

Thane Brimhall 23.05.2013 00:33

Спасибо. Моя проблема возникла в виде <<<<<<<<< HEAD ======= >>>>>>>. Он был в двух местах ближе к концу файла .pbxproj. После удаления этих элементов я снова смог запустить файл .xcodeproj. Обратите внимание на то, чтобы эти элементы были явно не на своем месте по сравнению с остальной частью файла.

AgnosticDev 23.06.2014 16:43

Это была такая палочка-выручалочка. Я думал, что полностью испортил весь проект. Спасибо!

Zack Shapiro 08.02.2015 23:11

Просто так выразите мою благодарность за это простое исправление. Были серьезные проблемы с объединением двух веток. Спасибо!!

Robert J. Clegg 19.06.2015 14:56

В моем случае это <<<<<<< HEAD, ======, >>>>>>> какие-то буквенно-цифровые. Удалите эти три строки, затем сохраните и откройте. Работал как шарм !!! Спасибо, Алло.

Gowrie Sammandhamoorthy 17.10.2016 23:07

Спасибо Господу за этот ответ. Спас меня от поражения от моей команды.

Chad Lewis 25.04.2017 08:52

Приветствую @Usuf, чей ответ актуален и годы спустя!

Rethunk 14.01.2021 23:09

Восстановите project.pbxproj

svn revert --filename--

У меня точно такая же ошибка, потому что Кордова позволит вам создать проект с пробелами в нем, а Xcode не знает, что делать.

Большое спасибо, это был ответ, у меня было место.

Max 18.07.2013 18:26

То же самое с Cordova Phonegap 3.4

Miles M. 01.07.2014 11:42

Это была именно та проблема, с которой я столкнулся. Спасибо!

fray88 29.09.2015 12:58

@ fray88 Я вынул пространство в имени своей папки как для проекта Xcode, так и для папки Cordova, но теперь я получаю сообщение об ошибке: ENOENT: нет такого файла или ошибки каталога. Как я могу выделить место и заставить все работать? Спасибо.

SaH 19.07.2016 19:31

Визуальный анализ файла проекта Xcode не помог мне обнаружить ошибку после слияния. Посмотрев в системный журнал, обнаружил такую ​​строку, когда Xcode пытался проанализировать файл:

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.

После исправления этот проект можно открыть нормально.

Спасибо, вы спасли мне день :)

Centurion 03.05.2015 13:05

Спасибо .. в этом гораздо больше смысла, чем визуальный осмотр

Ciprian 26.11.2015 13:27

Это очень помогло. Я просто "tail -f /var/log/system.log" и попытался открыть проект. В системном журнале была обнаружена ошибка (поиск «Xcode»), в которой был указан номер строки, в которой произошло исключение синтаксического анализа. Затем я открыл файл в vi и увидел управляющий символ в файле (^ H) и просто удалил этот единственный символ и вуаля! его удалось открыть.

DustinB 10.05.2016 17:46

Лучший ответ, чем пытаться ударить и попробовать. Прочтите журнал консоли.

Urmil Setia 26.08.2016 05:10

Просто попробуйте собрать его из терминала, например xcodebuild -project Project.xcodeproj build. Вы увидите ошибку прямо в Терминале.

Slavko Coolesoff 23.11.2017 14:32

Попробуйте найти между строками HEAD и _HEAD и удалите эти слова в project.pbxproj. Сделайте резервную копию этого файла перед этим ..

Goto PhoneGapTest >> платформа Затем удалите папку ios после этого перейдите в терминал затем введите: sudo phonegap build ios после этого вы можете запустить проект

Ответ Мухаммеда был очень полезным (и помог мне исправить). Однако простого удаления >>>>>>> ======= <<<<<<< было недостаточно, чтобы исправить проблему синтаксического анализа в project.pbxproj (для меня) при сохранении изменений из обеих веток после слияния.

У меня возник конфликт слияния в разделе PBXGroup (начало которого обозначено таким комментарием блока: / * Begin PBXGroup section * /) файла project.pbxproj. Однако проблема, с которой я столкнулся, может возникнуть и в других местах файла 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>";
          };

На самом деле мне пришлось добавить 2 строки в конце первой PBXGroup.

Вы можете видеть, что, если бы я решил отменить изменения либо из Head, либо из ветки слияния, не было бы проблемы с синтаксическим анализом! Однако в моем случае я хотел сохранить обе группы, которые я добавил из каждой ветки, и простого удаления маркеров слияния было недостаточно; Мне пришлось добавить дополнительные строки в файл project.pbxproj, чтобы сохранить правильное форматирование.

Итак, если у вас возникли проблемы с синтаксическим анализом после того, как вы подумали, что разрешили все конфликты слияния, вы можете поближе взглянуть на .pbxproj и убедиться, что нет никаких проблем с форматированием!

вы, вероятно, случайно удалили двоеточие и / или фигурную скобку при разрешении конфликтов слияния. Вы должны осторожно выбрать нужную часть (или и то, и другое) из конфликтов слияния и удалить маркеры. Вот и все.

Stas 27.04.2016 15:15

добавление sourceTree = "<группа>"; }; решил это для меня! Так полезно! Спасибо!

Nitin Alabur 20.06.2016 21:32

Просто хотел что-то добавить к этому. У меня была такая же проблема, но я работал с CocoaPods и рабочим пространством. Мне пришлось уничтожить рабочую область и воссоздать ее, чтобы Xcode подобрал исправление.

Nico 12.06.2017 22:28

@Nico: Не могли бы вы рассказать о том, как взорвать его? Я столкнулся с аналогичной проблемой здесь, и мне трудно

Isaac 21.12.2018 10:57

Я обнаружил, что после исправления файла .pbxproj мне нужно было закрыть и снова открыть проект, чтобы заставить его работать, но это сработало. Спасибо, SnoopyProtocol!

KeithTheBiped 23.04.2019 17:32

Дай бог здоровья тебе, брат!

MihaiL 13.08.2020 11:36

У меня была аналогичная проблема.

Screenshot 1

Ниже приведены шаги по ее устранению:

  1. Перейдите в папку, в которой находится ваш projectName.xcodeproj.

    Screenshot 2

  2. Щелкните правой кнопкой мыши и выберите «Show Package Contents». Вы сможете увидеть список файлов с расширением .pbxproj.

    Screenshot 3

  3. Выберите project.pbxproj. Щелкните правой кнопкой мыши и откройте этот файл с помощью «Text Edit».

    Screenshot 4

  4. Вы сможете увидеть <<<<<< .mine, ============ и >>>>>>>>>> .r123. Обычно это конфликты, возникающие при обновлении через SVN. Удалите их и сохраните файл.

    Screenshot 5

    Screenshot 6

  5. Теперь вы сможете открыть проект без сообщения об ошибке.

Это связано с тем, что в названиях проектов не должно быть пробелов между ними.

Я столкнулся с той же проблемой. Я удалил сгенерированные строки с помощью 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 = "$ {каталог проекта} /project.pbxproj.out" savefile = "$ {projectdir} /project.pbxproj.mergesave"

    cat $ projectfile | grep -v "<<<<<<< HEAD" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ файл проекта

  3. Запустите его из терминала с помощью команды sh: sh resolve_conflicts.sh

где генерируются строки с помощью git?

Harshil Kotecha 22.04.2017 08:50

Эти строки являются маркерами конфликта: «<<<<<<<», «=======» и «>>>>>>>». Для получения дополнительной информации о разрешении конфликтов git смотрите здесь: help.github.com/articles/…

Vojta 26.04.2017 09:53

@Vojta, не могли бы вы рассказать об этом сценарии? Я получаю эту ошибку: resolve_conflicts.sh: line 1: -d: command not found resolve_conflicts.sh: line 3: $tempfile: ambiguous redirect

Daniel 27.07.2019 02:52

Привет @Daniel, вот он: gist.github.com/vojtaBelovsky/0be156ff37929e16f55f253d8a97d8‌ 08

Vojta 29.07.2019 14:17

Недавно я столкнулся с той же проблемой при попытке объединить свою ветку с удаленной веткой. Однако ни одно из вышеперечисленных решений не казалось подходящим для моей проблемы.

Не было конфликтов слияния между файлом project.pbxproj в моей или удаленной ветке. Однако мой файл projectName.xcodeproj отказывался открываться по той же причине, что и в заданном вопросе.

Мое решение заключалось в том, чтобы просмотреть project.pbxproj с помощью текстового редактора и выяснить, есть ли какие-либо нарушения в синтаксисе файла (например, лишняя фигурная скобка). Я ускорил этот процесс, сосредоточив внимание на строках, которые были вставлены или удалены в старом файле, по сравнению с объединенным файлом. При ближайшем рассмотрении я обнаружил, что причиной моей проблемы было повторение следующей строки:

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

в моем объединенном файле. Это привело к незакрытой фигурной скобке и, как следствие, к недопустимому синтаксису pbxproj. Удаление указанной выше строки устранило мою проблему.

Проанализируйте синтаксис файла вашего проекта. Проверьте это внутри своего проекта в терминале:

plutil -lint project.pbxproj

Это покажет вам ошибки парсера.

Возможная проблема: некоторые проекты устанавливают стратегию слияния git union для файлов проекта. Это работает в большинстве случаев, но незаметно уничтожит файл вашего проекта в случае сбоя. Эта стратегия определена в файле .gitattributes в вашем репозитории.

Вернувшись, вы можете отменить извлеченный код.

Если вы хотите отменить этот запрос на перенос, просто поместите эту команду в путь к проекту.

-> git merge --abort

Действия, которые необходимо выполнить: - 1. перейдите в папку, где находится ваш projectName.xcodeproj. 2. Щелкните правой кнопкой мыши и выберите «Показать содержимое пакета». Вы увидите список файлов с расширением .pbxproj. 3. Выберите project.pbxproj. Щелкните правой кнопкой мыши и откройте этот файл с помощью «Редактировать текст». 4. Вы сможете увидеть <<<<<<, ============ и >>>>>>>>>>. Обычно это конфликты, которые возникают, когда вы загружаете обновления из Sourcetree / SVN / GITLAB. Удалите их и сохраните файл. 5.Теперь вы сможете открыть проект без сообщений об ошибке.

В случае, если вы не нашли в тексте === или <<< или >>>>, как это было для меня, проблема была действительно простой и интересной ... Я меняю имя приложения в Xcode, но не меняю его в UnityProjectSettings перед сборкой - это была проблема ...

Если вы когда-нибудь сливаетесь и по-прежнему получаете проблемы, которые не знают, в чем они заключаются, я имею в виду не очевидные следы разницы.

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

Затем вы можете проанализировать файлы своего проекта с помощью https://github.com/Karumi/Kin, установить его и использовать

kin project.pbxproj

В нем есть дополнительные ошибки, которые не позволяют легче понять и решить открытый проект (хеши, группы и т. д.).


И, кстати, это также может быть полезно, хотя я не использовал его, попробуйте сравнить 2 версии ваших файлов проекта https://github.com/bloomberg/xcdiff, так что это действительно даст вам то, что происходит.

Другие вопросы по теме