Невозможно открыть проект ... не может быть открыт, потому что файл проекта не может быть проанализирован - PullRequest
90 голосов
/ 12 декабря 2008

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

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

Невозможно открыть проект

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

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

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


EDIT

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

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

enter image description here

Ответы [ 17 ]

220 голосов
/ 16 августа 2012

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

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

39 голосов
/ 27 марта 2015

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

У меня был конфликт слияния в секции PBXGroup (начало которой обозначено комментарием блока, например: / * Начать секцию PBXGroup * /) файла 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 строки в конце первой группы PBX.

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

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

28 голосов
/ 06 июня 2013

Я получил точно такую ​​же ошибку, потому что Cordova позволит вам создать проект с пробелами в нем, а Xcode не знает, как с этим справиться.

23 голосов
/ 07 февраля 2014

Визуальный анализ файла проекта Xcode не помог мне найти ошибку после слияния. Посмотрев в syslog нашел такую ​​строку, когда 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.

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

21 голосов
/ 25 февраля 2016

У меня была похожая проблема.

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. Теперь вы сможете открыть проект без сообщения об ошибке .

3 голосов
/ 22 марта 2018

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

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

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

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

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

2 голосов
/ 01 июня 2018

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

plutil -lint project.pbxproj

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

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

2 голосов
/ 23 января 2017

Я просто столкнулся с той же проблемой. Я удалил сгенерированные строки с помощью git, как всегда, но Xcode все еще отказывался открывать файл .xcodeproj. Но все было правильно, без пропущенных скобок и т. Д. Наконец я попытался выйти из Xcode и открыть проект, когда Xcode был закрыт .. тогда это сработало. Надеюсь, это кому-нибудь поможет.

EDIT:

для разрешения конфликтов в вашем файле .xcodeproj вы можете использовать этот удобный скрипт:

  1. Создать пустой .sh файл в каталоге вашего проекта (например, resol_conflicts.sh)
  2. Вот сценарий:

    projectfile = find -d . -name 'project.pbxproj' ProjectDir = echo *.xcodeproj projectfile = "$ {} ProjectDir /project.pbxproj" временный файл = "$ {} ProjectDir /project.pbxproj.out" SaveFile = "$ {} ProjectDir /project.pbxproj.mergesave"

    cat $ projectfile | grep -v "<<<<<<< ГОЛОВА" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ projectfile

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

1 голос
/ 24 сентября 2012

Вернуть проект .pbxproj

svn revert --filename -

0 голосов
/ 12 декабря 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...