Não é possível abrir o projeto ... não pode ser aberto porque o arquivo do projeto não pode ser analisado

93

Estou trabalhando há algum tempo para criar um aplicativo para iPhone. Hoje, quando minha bateria estava fraca, eu estava trabalhando e salvando constantemente meus arquivos de origem, então a energia caiu ...

Agora, quando eu conectei meu computador novamente e ele está recebendo energia boa, tento abrir meu arquivo de projeto e obtenho um erro:

Incapaz de abrir o projeto

Projeto ... não pode ser aberto porque o arquivo do projeto não pode ser analisado.

Existe uma maneira de as pessoas saberem que eu posso me recuperar disso? Tentei usar um arquivo de projeto mais antigo, inseri-lo novamente e compilá-lo. Isso me dá um erro estranho, provavelmente porque não está encontrando todos os arquivos que deseja ...

Eu realmente não quero reconstruir meu projeto do zero, se possível.


EDITAR

Ok, eu fiz uma diferença entre este e um arquivo de projeto um pouco mais antigo que funcionou e vi que havia alguma corrupção no arquivo. Depois de mesclá-los (as partes boas e as mais novas) agora está funcionando.

Grandes pontos sobre o SVN. Eu tenho um, mas tem havido alguma preocupação ao tentar sincronizar o XCode com ele. Definitivamente vou passar mais tempo com ele agora ... ;-)

insira a descrição da imagem aqui

Comunidade
fonte

Respostas:

228

Eu me deparei com esse problema e meu sênior me falou sobre uma solução, ou seja:

Clique com o botão direito no seu projectname.xcodeprojarquivo e aqui projectnameestará o nome do seu projeto. Agora, depois de clicar com o botão direito, selecione Mostrar conteúdo dos pacotes . Depois disso, abra seu projectname.pbxprojarquivo em um editor de texto. Agora procure a linha que contém <<<<<<< .mine, =======e >>>>>>> .r. Por exemplo, no meu caso parecia assim

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

Agora remover aqueles <<<<<<< .mine, =======e >>>>>>> .rlinhas de modo que seria parecido com este

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

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

Agora salve e abra seu projeto Xcode e construa-o. Tudo vai ficar bem.

Usuf
fonte
11
OBRIGADO. Isso funciona. No meu caso não era ".mine" ou ".r", mas dizia outra coisa ... Ctrl-F para "===" para encontrar o lugar.
ck_
isso deve ser marcado como a resposta. Muito bom, obrigado
owen gerig de
12
Apenas para dizer POR QUE isso está acontecendo: Seu controle de versão está tentando mesclar duas versões conflitantes do arquivo de projeto. Você deve informar manualmente ao seu controle de versão qual é a mesclagem adequada. O fato de que o XCode não lida com isso normalmente é um grande aborrecimento para mim diariamente.
Thane Brimhall de
Obrigado. Meu problema veio na forma de <<<<<<<<<HEAD ======= >>>>>>>>. Estava em dois pontos no final do arquivo .pbxproj. Depois de remover esses itens, fui capaz de executar o arquivo .xcodeproj novamente. Observe se esses itens estão visivelmente deslocados do resto do arquivo.
AgnosticDev
1
No meu caso é <<<<<<< HEAD, ======, >>>>>>> alguns alfanuméricos. Remova essas três linhas, salve e abra. Funcionou como um encanto !!! Obrigado Allot.
Gowrie Sammandhamoorthy
47

A resposta de Muhammad foi muito útil (e ajudou a levar à minha correção). No entanto, simplesmente remover o >>>>>>> ======= <<<<<<< não foi suficiente para corrigir o problema de análise no project.pbxproj (para mim) ao manter as alterações de ambos os ramos após uma fusão.

Tive um conflito de mesclagem na seção PBXGroup (cujo início é indicado por um comentário de bloco como este: / * Iniciar seção PBXGroup * /) do arquivo project.pbxproj. No entanto, o problema que encontrei pode ocorrer em outros lugares no arquivo project.pbxproj também.

Abaixo está uma simplificação do conflito de mesclagem que encontrei:

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

Quando removi os marcadores de conflito de mesclagem, fiquei com o seguinte:

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

Normalmente, a remoção dos marcadores de conflito de mesclagem corrige o problema de análise no arquivo project.pbxproj e restaura a integridade do espaço de trabalho. Desta vez, não.

Abaixo está o que fiz para resolver o problema:

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

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

Na verdade, tive que adicionar 2 linhas no final do primeiro PBXGroup.

Você pode ver que se eu tivesse optado por descartar as alterações do Head ou do branch de mesclagem, não teria havido um problema de análise! No entanto, no meu caso, eu queria manter os dois grupos que adicionei de cada ramificação e simplesmente remover os marcadores de mesclagem não era suficiente; Tive que adicionar linhas extras ao arquivo project.pbxproj para manter a formatação correta.

Portanto, se você tiver problemas de análise depois de pensar que teria resolvido todos os seus conflitos de mesclagem, convém dar uma olhada mais de perto no .pbxproj e certificar-se de que não há problemas de formatação!

SnoopyProtocol
fonte
você provavelmente removeu acidentalmente os dois pontos e / ou a chave ao resolver conflitos de mesclagem. Você deve tomar cuidadosamente a parte apropriada (ou ambas) dos conflitos de mesclagem e remover os marcadores. É isso aí.
Stas de
adicionando o sourceTree = "<grupo>"; }; resolveu para mim! Tão útil! Obrigado!
Nitin Alabur de
Só queria acrescentar algo a isso. Eu tive o mesmo problema, mas trabalhando com CocoaPods e um espaço de trabalho. Eu tive que destruir o espaço de trabalho e recriá-lo para que o Xcode pegasse a correção.
Nico
@Nico: Você se importa em compartilhar sobre como detoná-lo? Estou enfrentando um problema semelhante aqui e tendo dificuldades
Isaac
Descobri que, depois de corrigir o arquivo .pbxproj, precisava fechar e reabrir o projeto para fazê-lo funcionar, mas funcionou. Obrigado SnoopyProtocol!
KeithTheBiped
28

Recebi exatamente o mesmo erro porque o Cordova permitirá que você crie um projeto com espaços e o Xcode não sabe como lidar.

bwags
fonte
Muito obrigado, esta foi a resposta, eu tinha um espaço.
Máximo de
Mesmo com Cordova Phonegap 3.4
Miles M.
Esse era exatamente o problema que eu estava tendo. Obrigado!
fray88
@ fray88 Retirei o espaço no nome da minha pasta para o projeto Xcode e a pasta cordova, mas agora estou recebendo um erro: ENOENT: nenhum arquivo ou diretório de erro. Como posso retirar o espaço e fazer as coisas funcionarem? Obrigado.
SaH de
25

Eu tive um problema semelhante.

Captura de tela 1

Abaixo estão as etapas para resolver isso:

  1. Navegue até a pasta onde está seu projectName.xcodeproj.

    Captura de tela 2

  2. Clique com o botão direito e selecione ' Show Package Contents'. Você poderá ver uma lista de arquivos com .pbxprojextensão.

    Captura de tela 3

  3. Selecione project.pbxproj. Clique com o botão direito e abra este arquivo usando ' Text Edit'.

    Captura de tela 4

  4. Você será capaz de ver <<<<<< .mine, ============e >>>>>>>>>> .r123. Geralmente, são conflitos que surgem quando você faz uma atualização do SVN. Exclua-os e salve o arquivo.

    Captura de tela 5

    Captura de tela 6

  5. Agora você poderá abrir o projeto sem nenhuma mensagem de erro .

Jayprakash Dubey
fonte
23

A análise visual do arquivo de projeto Xcode não me ajudou a localizar o erro após a fusão. Depois de olhar para o syslog, encontrei essa linha quando o Xcode tentava analisar o arquivo:

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.

Depois de consertar esse projeto pode ser aberto ok.

Oleksiy Ivanov
fonte
2
Obrigado, você salvou meu dia :)
Centurião
Obrigado .. isso faz muito mais sentido do que inspeção visual
Ciprian
2
Isso ajudou tremendamente. Acabei de "tail -f /var/log/system.log" e tentei abrir o projeto. No system.log, ele mostrou um erro (pesquisa por "Xcode") que mostrou o número da linha onde ocorreu a exceção de análise. Em seguida, abri o arquivo no vi e vi um caractere de controle no arquivo (^ H) e apenas removi aquele único caractere e voila! foi capaz de ser aberto.
DustinB de
A melhor resposta, ao invés de tentar acertar e tentar. Leia o log do console.
Urmil Setia
5
Apenas tente compilá-lo no Terminal como xcodebuild -project Project.xcodeproj build. Você verá o erro bem no Terminal.
Slavko Coolesoff
6

Analise a sintaxe do seu arquivo de projeto. Verifique dentro do seu projeto no terminal:

plutil -lint project.pbxproj

Isso mostrará os erros do analisador.

Possível problema : Alguns projetos definem a estratégia de fusão git unionpara arquivos de projeto. Isso funciona na maioria das vezes, mas eliminará silenciosamente o arquivo de projeto se ele falhar. Esta estratégia é definida no .gitattributesarquivo em seu repositório.

beseder
fonte
3

Eu enfrentei o mesmo problema recentemente ao tentar mesclar meu branch com um branch remoto. No entanto, nenhuma das soluções acima parecia apropriada para o meu problema.

Não houve conflitos de mesclagem entre o arquivo project.pbxproj em meu branch ou o branch remoto. No entanto, meu arquivo projectName.xcodeproj se recusaria a abrir pelo mesmo motivo mostrado na pergunta feita.

Minha solução foi examinar o project.pbxproj usando um editor de texto e descobrir se havia alguma irregularidade na sintaxe do arquivo (por exemplo, uma chave extra). Acelerei esse processo focalizando as linhas que foram inseridas ou excluídas no arquivo antigo em comparação com o arquivo mesclado. Examinando mais de perto, descobri que a causa do meu problema era a repetição da seguinte linha:

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

no meu arquivo mesclado. Isso levou a uma chave não fechada e, consequentemente, à sintaxe inválida do pbxproj. Excluir a linha acima corrigiu meu problema.

Abhi
fonte
2

Acabei de ter o mesmo problema. Removi as strings geradas pelo git como sempre, mas o Xcode ainda se recusou a abrir o arquivo .xcodeproj. Mas tudo estava correto, sem colchetes etc. Finalmente tentei sair do Xcode e abrir o projeto quando o Xcode foi fechado ... então funcionou. Espero que isso ajude alguém.

EDITAR:

para resolver conflitos em seu arquivo .xcodeproj, você pode usar este script útil:

  1. Crie um arquivo .sh vazio no diretório do seu projeto (por exemplo, resolve_conflicts.sh)
  2. Aqui está o script:

    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 "<<<<<<< HEAD" | grep -v "=======" | grep -v "^ >>>>>>>"> $ tempfile mv $ tempfile $ projectfile

  3. Execute-o do terminal usando o comando sh: sh resolve_conflicts.sh

Vojta
fonte
onde são geradas strings pelo git?
Harshil Kotecha
Essas strings são marcadores de conflito: "<<<<<<<<", "=======" e ">>>>>>>". Para obter mais informações sobre como resolver conflitos git, clique
Vojta
@Vojta, você poderia jogar esse script em uma essência? Estou recebendo este erro:resolve_conflicts.sh: line 1: -d: command not found resolve_conflicts.sh: line 3: $tempfile: ambiguous redirect
Daniel
1

Reverter o project.pbxproj

svn revert --filename--

mondousage
fonte
1

Passos a serem seguidos: - 1.Navegue para a pasta onde seu projectName.xcodeproj 2.Clique com o botão direito e selecione 'Mostrar Conteúdo do Pacote'. Você poderá ver uma lista de arquivos com extensão .pbxproj. 3.Selecione project.pbxproj. Clique com o botão direito e abra este arquivo usando 'Edição de Texto'. 4. Você poderá ver <<<<<<, ============ e >>>>>>>>>>. Geralmente são conflitos que surgem quando você faz uma atualização do Sourcetree / SVN / GITLAB. Exclua-os e salve o arquivo. 5.Agora, você poderá abrir o projeto sem nenhuma mensagem de erro.

Akash Singh
fonte
0

Parece que você vai ter que criar um novo projeto no Xcode, ir para o diretório antigo e arrastar todos os seus arquivos de origem, nibs e recursos para a barra lateral de arquivos Xcode no novo projeto. Não deve demorar mais do que alguns minutos, a menos que você realmente tenha trabalhado muito com configurações ou destinos de compilação personalizados. Ou isso, ou reverta para o último check-in em seu controle de origem e adicione manualmente quaisquer arquivos de código que foram alterados entre agora e então.

Marc Charbonneau
fonte
1
Basta verificar o arquivo project.pbproject e fazer uma comparação com uma versão de trabalho do arquivo de projeto.
Atma
0

E assim que as coisas funcionarem novamente, você deve começar a usar algo como o subversion ou mercurial para backup e controle de revisão. Lembre-se de que os elétrons nem sempre vão para onde deveriam, fazem backup cedo e com frequência!

Brian C. Lane
fonte
Meu VCS favorito ultimamente tem sido o git.
Lily Ballard
0

altere o nome da pasta do projeto atual e o módulo de checkout do mesmo projeto. Em seguida, adicione as alterações do arquivo atual.

suresh
fonte
0

Tente encontrar HEAD e _HEAD entre as linhas e exclua essas palavras em project.pbxproj. Faça backup deste arquivo antes de fazer isso ..

Avi Shim.
fonte
0

Vá para PhoneGapTest >> platform Exclua a pasta ios depois disso vá para o terminal e digite: sudo phonegap build ios depois disso você pode executar o projeto

Rancho
fonte
0

Ao reverter, você pode desfazer o código puxado.

Se você quiser desfazer essa solicitação de pull, basta colocar este comando no caminho do projeto

-> git merge --abort

Subramani
fonte
0

Caso não tenha encontrado em Texto === ou <<< ou >>>> como foi para mim o problema foi muito simples e divertido ... Eu mudo o nome do App no ​​Xcode, mas não mudo no UnityProjectSettings antes de construir - esse era o problema ...

Anton Konoplianchenko
fonte
-2

o subversion irá corromper meu arquivo de projeto após um svn up quase semanalmente. Estou tentando descobrir por que ele faz isso agora e me deparei com esse problema.


fonte
Meu palpite é que você tem o projeto aberto no Xcode ao mesmo tempo em que faz uma atualização ou commit ... "SE" o Xcode salvar automaticamente ao mesmo tempo, acho que pode ocorrer alguma corrupção
epatel
-3

Isso ocorre porque os nomes dos projetos não devem ter espaços em branco entre eles

Mohsin Muzawar
fonte