No se puede abrir el proyecto ... no se puede abrir porque el archivo del proyecto no se puede analizar


93

He estado trabajando durante un tiempo para crear una aplicación para iPhone. Hoy, cuando mi batería estaba baja, estaba trabajando y guardando constantemente mis archivos de origen, luego se cortó la energía ...

Ahora, cuando volví a enchufar mi computadora y está obteniendo buena energía, trato de abrir el archivo de mi proyecto y aparece un error:

No se puede abrir el proyecto

Proyecto ... no se puede abrir porque el archivo del proyecto no se puede analizar.

¿Hay alguna forma en que la gente sepa que puedo recuperarme de esto? Intenté usar un archivo de proyecto más antiguo y volver a insertarlo y luego compilarlo. Me da un error extraño que probablemente se deba a que no encuentra todos los archivos que quiere ...

Realmente no quiero reconstruir mi proyecto desde cero si es posible.


EDITAR

Ok, hice una diferencia entre esto y un archivo de proyecto un poco más antiguo que funcionó y vi que había algo de corrupción en el archivo. Después de fusionarlos (las partes buenas y las más nuevas) ahora está funcionando.

Grandes puntos sobre el SVN. Tengo uno, pero ha habido algunos problemas al intentar sincronizar XCode con él. Definitivamente pasaré más tiempo con él ahora ... ;-)

ingrese la descripción de la imagen aquí

Respuestas:


228

Me encontré con este problema y mi superior me dijo sobre una solución, es decir:

Haga clic derecho en su projectname.xcodeprojarchivo aquí projectnameserá el nombre de su proyecto. Ahora, después de hacer clic con el botón derecho, seleccione Mostrar contenido de paquetes . Después de eso, abra su projectname.pbxprojarchivo en un editor de texto. Ahora busque la línea que contiene <<<<<<< .mine, =======y >>>>>>> .r. Por ejemplo en mi caso se veía así

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

Ahora quite los <<<<<<< .mine, =======y >>>>>>> .rlas líneas de lo que sería el siguiente

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

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

Ahora guarde y abra su proyecto Xcode y constrúyalo. Todo estará bien.


11
GRACIAS. Esto funciona. En mi caso no era ".mine" o ".r" pero decía algo más ... Ctrl-F para "===" para encontrar el lugar.
ck_

esto debe marcarse como la respuesta. Cosas realmente buenas, gracias
owen gerig

12
Solo para decir POR QUÉ está sucediendo esto: su control de versiones está tratando de fusionar dos versiones en conflicto del archivo del proyecto. Debe indicar manualmente a su control de versiones cuál es la combinación adecuada. El hecho de que XCode no maneje esto con elegancia es una gran molestia para mí a diario.
Thane Brimhall

Gracias. Mi problema vino en forma de <<<<<<<<< HEAD ======= >>>>>>>. Estaba en dos puntos hacia el final del archivo .pbxproj. Una vez que eliminé estos elementos, pude ejecutar el archivo .xcodeproj nuevamente. Busque que estos elementos estén visiblemente fuera de lugar del resto del archivo.
AgnosticDev

1
En mi caso es <<<<<<< HEAD, ======, >>>>>>> algo alfanumérico. Elimina estas tres líneas, luego guarda y abre. ¡¡¡Trabajado como un encanto!!! Gracias.
Gowrie Sammandhamoorthy

47

La respuesta de Muhammad fue muy útil (y me ayudó a solucionar mi problema). Sin embargo, simplemente eliminar el >>>>>>> ======= <<<<<<< no fue suficiente para solucionar el problema de análisis en el project.pbxproj (para mí) al mantener los cambios de ambas ramas después de una fusión.

Tuve un conflicto de fusión en la sección PBXGroup (cuyo comienzo está indicado por un comentario de bloque como este: / * Begin PBXGroup section * /) del archivo project.pbxproj. Sin embargo, el problema que encontré también puede ocurrir en otros lugares del archivo project.pbxproj.

A continuación se muestra una simplificación del conflicto de fusión que encontré:

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

Cuando eliminé los marcadores de conflicto de fusión, esto es lo que me quedó:

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

Normalmente, eliminar los marcadores de conflicto de combinación solucionaría el problema de análisis en el archivo project.pbxproj y restauraría la integridad del espacio de trabajo. Esta vez no fue así.

A continuación se muestra lo que hice para resolver el problema:

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

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

De hecho, tuve que agregar 2 líneas al final del primer PBXGroup.

Puede ver que si hubiera elegido descartar los cambios de Head o de la rama de fusión, ¡no habría habido un problema de análisis! Sin embargo, en mi caso, quería mantener los dos grupos que agregué de cada rama y simplemente eliminar los marcadores de combinación no fue suficiente; Tuve que agregar líneas adicionales al archivo project.pbxproj para mantener el formato correcto.

Por lo tanto, si tiene problemas de análisis después de pensar que ha resuelto todos sus conflictos de fusión, es posible que desee examinar más de cerca el .pbxproj y asegurarse de que no haya problemas de formato.


probablemente eliminó accidentalmente los dos puntos y / o la llave al resolver conflictos de combinación. Debe tomar con cuidado la parte adecuada (o ambas) de los conflictos de fusión y eliminar los marcadores. Eso es.
Stas

agregando el sourceTree = "<grupo>"; }; ¡Lo resolvió por mí! ¡Muy útil! ¡Gracias!
Nitin Alabur

Solo quería agregar algo a esto. Tuve el mismo problema pero trabajando con CocoaPods y un espacio de trabajo. Tuve que destruir el espacio de trabajo y volver a crearlo para que Xcode lo solucionara.
Nico

@Nico: ¿Te importaría compartir cómo usar armas nucleares? Estoy enfrentando un problema similar aquí y lo estoy pasando mal
Isaac

Descubrí que después de arreglar el archivo .pbxproj necesitaba cerrar y volver a abrir el proyecto para que funcionara, pero funcionó. ¡Gracias SnoopyProtocol!
KeithTheBiped

28

Recibí exactamente el mismo error porque Cordova te permitirá crear un proyecto con espacios y Xcode no sabe cómo manejarlo.


Muchas gracias esta fue la respuesta, tuve un espacio.
Max

Lo mismo con Cordova Phonegap 3.4
Miles M.

Este era exactamente el problema que estaba teniendo. ¡Gracias!
fray88

@ fray88 Saqué el espacio en el nombre de mi carpeta tanto para el proyecto Xcode como para la carpeta cordova, pero ahora recibo un Error: ENOENT: no existe tal error de archivo o directorio. ¿Cómo puedo sacar el espacio y hacer que las cosas funcionen? Gracias.
Sábado

25

Tuve un problema similar.

Captura de pantalla 1

A continuación se muestran los pasos para resolverlo:

  1. Navegue a la carpeta donde su projectName.xcodeproj.

    Captura de pantalla 2

  2. Haga clic derecho y seleccione ' Show Package Contents'. Podrá ver la lista de archivos con .pbxprojextensión.

    Captura de pantalla 3

  3. Seleccione project.pbxproj. Haga clic derecho y abra este archivo usando ' Text Edit'.

    Captura de pantalla 4

  4. Usted será capaz de ver <<<<<< .mine, ============y >>>>>>>>>> .r123. Por lo general, estos son conflictos que surgen cuando se actualiza desde SVN. Elimínelos y guarde el archivo.

    Captura de pantalla 5

    Captura de pantalla 6

  5. Ahora, podrá abrir el proyecto sin ningún mensaje de error .


23

El análisis visual del archivo del proyecto Xcode no me ayudó a localizar el error después de la fusión. Después de buscar en syslog, encontró dicha línea cuando Xcode intentaba analizar el archivo:

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.

Después de arreglar ese proyecto se puede abrir bien.


2
Gracias, me salvaste el día :)
Centurion

Gracias ... esto tiene mucho más sentido que la inspección visual
Ciprian

2
Esto ayudó enormemente. Simplemente "tail -f /var/log/system.log" e intenté abrir el proyecto. En system.log, mostró un error (búsqueda de "Xcode") que mostraba el número de línea donde ocurrió la excepción de análisis. Luego abrí el archivo en vi y vi un carácter de control en el archivo (^ H) y simplemente eliminé ese carácter y ¡listo! se pudo abrir.
DustinB

La mejor respuesta, en lugar de intentar acertar y probar. Leer el registro de la consola.
Urmil Setia

5
Simplemente intente construirlo desde Terminal como xcodebuild -project Project.xcodeproj build. Verá el error directamente en la Terminal.
Slavko Coolesoff

6

Analice la sintaxis de su archivo de proyecto. Compruébalo dentro de tu proyecto en la terminal:

plutil -lint project.pbxproj

Esto le mostrará los errores del analizador.

Posible problema : algunos proyectos establecen una estrategia de fusión de git unionpara los archivos del proyecto. Esto funciona la mayoría de las veces, pero matará silenciosamente su archivo de proyecto si falla. Esta estrategia se define en el .gitattributesarchivo de su repositorio.


3

Recientemente me enfrenté al mismo problema al intentar fusionar mi rama con una rama remota. Sin embargo, ninguna de las soluciones anteriores parecía apropiada para mi problema.

No hubo conflictos de fusión entre el archivo project.pbxproj en mi rama o la rama remota. Sin embargo, mi archivo projectName.xcodeproj se negaría a abrirse por el mismo motivo que se muestra en la pregunta formulada.

Mi solución fue buscar en project.pbxproj usando un editor de texto y encontrar si había alguna irregularidad en la sintaxis del archivo (por ejemplo, un corchete extra). Aceleré este proceso centrándome en las líneas que se insertaron o eliminaron en el archivo antiguo en comparación con el archivo combinado. En un examen más detenido, encontré que la causa de mi problema era la repetición de la siguiente línea:

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

en mi archivo combinado. Esto condujo a un corchete sin cerrar y la consiguiente sintaxis pbxproj no válida. Eliminar la línea anterior solucionó mi problema.


2

Me encontré con el mismo problema. Eliminé las cadenas generadas por git como siempre, pero Xcode aún se negó a abrir el archivo .xcodeproj. Pero todo estaba correcto, no faltaban corchetes, etc. Finalmente intenté salir de Xcode y abrir el proyecto cuando Xcode estaba cerrado ... luego funcionó. Espero que esto ayude a alguien.

EDITAR:

para resolver conflictos en su archivo .xcodeproj, puede usar este útil script:

  1. Cree un archivo .sh vacío en el directorio de su proyecto (por ejemplo, resolve_conflicts.sh)
  2. Aquí está el guión:

    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. Ejecútelo desde la terminal usando el comando sh: sh resolve_conflicts.sh


¿Dónde se generan las cadenas por git?
Harshil Kotecha

Estas cadenas son marcadores de conflicto: "<<<<<<<", "=======" y ">>>>>>>". Para obtener más información sobre cómo resolver conflictos de git, consulte aquí: help.github.com/articles/…
Vojta

@Vojta, ¿podrías resumir ese guión? Recibo este error:resolve_conflicts.sh: line 1: -d: command not found resolve_conflicts.sh: line 3: $tempfile: ambiguous redirect
Daniel



1

Pasos a seguir: - 1. Navegue a la carpeta donde se encuentra su projectName.xcodeproj 2. Haga clic derecho y seleccione 'Mostrar contenido del paquete'. Podrá ver la lista de archivos con la extensión .pbxproj. 3.Seleccione project.pbxproj. Haga clic derecho y abra este archivo usando 'Editar texto'. 4. Podrá ver <<<<<<, ============ y >>>>>>>>>>. Por lo general, estos son conflictos que surgen cuando se actualiza desde Sourcetree / SVN / GITLAB. Elimínelos y guarde el archivo. 5.Ahora, podrá abrir el proyecto sin ningún mensaje de error.


0

Parece que vas a tener que crear un nuevo proyecto en Xcode, ir al directorio antiguo y arrastrar todos tus archivos fuente, plumillas y recursos a la barra lateral de archivos Xcode en el nuevo proyecto. No debería tomar más de unos minutos, a menos que realmente haya trabajado mucho con configuraciones u objetivos de compilación personalizados. O eso, o volver al último registro en su control de código fuente y agregar manualmente cualquier archivo de código que haya cambiado entre ahora y entonces.


1
Simplemente verifique el archivo project.pbproject y haga una diferencia con una versión funcional del archivo del proyecto.
Atma

0

Y una vez que las cosas funcionen nuevamente, debería considerar el uso de algo como subversion o mercurial para el control de copias de seguridad y revisiones. Recuerde que los electrones no siempre van a donde se supone que deben ir, ¡retroceden temprano y con frecuencia!


Mi VCS favorito últimamente ha sido git.
Lily Ballard

0

cambie el nombre de la carpeta del proyecto actual y el módulo de pago del mismo proyecto, luego agregue los cambios del archivo actual.



0

Intente encontrar HEAD y _HEAD entre las líneas y elimine estas palabras en project.pbxproj. Haga una copia de seguridad de este archivo antes de hacer esto ...


0

Ir a PhoneGapTest >> plataforma Luego, elimine la carpeta ios, luego vaya a la terminal y escriba: sudo phonegap build ios después de eso, puede ejecutar el proyecto


0

Al revertir, puede deshacer el código extraído.

Si desea deshacer esa solicitud de extracción, simplemente coloque este comando en la ruta del proyecto

-> git merge --abort


0

En caso de que no encontrara en Text === o <<< o >>>> como era para mí, el problema fue realmente simple y divertido ... Cambio el nombre de la aplicación en Xcode, pero no lo cambio en UnityProjectSettings antes de compilar - ese era el problema ...


-2

subversion dañará mi archivo de proyecto después de un svn up casi semanalmente. Estoy tratando de averiguar por qué hace esto en este momento y encontré este problema.


Supongo que tiene el proyecto abierto en Xcode al mismo tiempo que realiza una actualización o confirmación ... "SI" Xcode se guarda automáticamente al mismo tiempo, supongo que puede ocurrir algo de corrupción
epatel

-3

Esto se debe a que se supone que los nombres de los proyectos no deben tener espacios en blanco entre ellos.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.