it-swarm.com.ru

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

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

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

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

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

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

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


Правка

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

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

enter image description here

90
Chris Butler

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

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

222
Usuf

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

У меня возник конфликт при слиянии в разделе 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 и убедиться, что проблем с форматированием нет!

41
SnoopyProtocol

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

28
bwags

Визуальный анализ файла проекта 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.

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

23
Oleksiy Ivanov

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

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

22
Jayprakash Dubey

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

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

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

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

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

3
Abhi

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

plutil -lint project.pbxproj

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

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

3
beseder

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

Правка:

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

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

    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 "<<<<<<< ГОЛОВА" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ projectfile

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

2
Vojta

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

svn revert --filename--

1
mondousage

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

0
suresh

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

0
Avi Shim.

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

0
Marc Charbonneau

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

0
Brian C. Lane

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

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

0
Atma

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

0
Ranch