Xcode 4: compilación fallida, sin problemas

90

La aplicación funciona bien en el simulador, se construye y se ejecuta.

Cuando conecto mi dispositivo (iPhone 3GS con iOS 4.3) y apunto al iPhone, el resultado es "Error de compilación" con "Sin problemas".

Al mirar la ventana de resultados de la compilación, todo es verde, tiene una marca de verificación, incluido el aviso de compilación fallida .

La ampliación de las transcripciones no muestra errores.

No puedo excluir la posibilidad de un error de firma o aprovisionamiento, pero me dio esos errores, los resolví y ahora no me da ningún error o problema, solo "Error de compilación; sin problemas"

  • ¿De qué manera puede fallar la compilación sin problemas?
  • ¿Hay alguna forma de ver la salida de la compilación para ver si puedo encontrar la razón por la que falla sin problemas?
  • ¿Se producen resultados de construcción más allá de la lista de problemas?
  • No veo en la ventana de compilación donde intenta cargar la aplicación en mi dispositivo, ¿esta salida está en otro lugar?
Adam Davis
fuente
¡Esto me está pasando ahora mismo! ¡Muy frustrante!
tallen11
1
Creo que stackoverflow.com/a/28064945/1709587 generalmente mostrará algún tipo de mensaje de error; es mucho más útil que las diversas suposiciones incluidas en las otras respuestas y debería ser el punto de partida para cualquiera que intente depurar esta situación. ¿Lo aceptaría para llevarlo a la parte superior de la página?
Mark Amery

Respuestas:

76

Recibí "Error de compilación" sin errores en el navegador de problemas (solo advertencias). El navegador de informes, sin embargo, mostró errores correctamente.

Mercurial
fuente
4
Genial, esto mostró mis errores. Ahora puedo dejar de perder el tiempo y resolver el error :)
Daniel Ryan
Salvó mi día !! Gracias
DZenBot
Tuve que limpiar DerivedData + deshabilitar BitCode (por si acaso).
DevAndArtist
33

¿Está utilizando "subrayado" y "espacio", etc. para el identificador de paquete?

¿Está utilizando .m en lugar de .h en una de sus importaciones? #importar "Photo.h"

user674180
fuente
1
No, no estoy usando espacio ni guión bajo en mi ID de paquete.
Adam Davis
2
¡Gracias! Para mí, fue subrayado en el identificador de paquete.
cocoapriest
¡Gracias! Mi identificador de paquete estaba en blanco por alguna razón.
tallen11
2
Gracias. Después de eliminar el guión bajo, mi proyecto se compiló bien. Siento una extraña combinación de rabia cegadora, alivio y gratitud. ¿CÓMO PODRÍA SER TAN TONTO PARA UTILIZAR UN PUNTERO EN EL NOMBRE DEL PROYECTO?
Tina D.
1
¡GUAUU! Yo también tuve ese problema. Un subrayado. Cambiado a tablero y las cosas están bien. ¡Esto es una MANZANA absolutamente ABSURDA! Amo iOS. Detesto el complicado proceso que usa Apple para poner tu aplicación en un dispositivo para probarla. De todos modos, ¡gracias por esta solución!
DA.
21

Lo primero que intentaría es limpiar todo (menú Producto / Limpiar) y volver a construirlo. Puede que ya lo hayas probado.

Encontrará (y podrá verlo durante la compilación) el resultado completo de la compilación en Log Navigator. Ese es el ícono más a la derecha de los íconos pequeños justo debajo de los botones Ejecutar y Construir.

Los archivos de registro de compilación (y depuración) se encuentran en el directorio / Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build (y ../Debug respectivamente).

No creo que haya ningún resultado para la instalación de su aplicación en el dispositivo.

Codo
fuente
Sí, limpiar no ayuda. He estado usando y revisando el resultado de la compilación en el navegador de registros y el registro de sesión relacionado. Los archivos de registro que señala parecen ser binarios, por lo que parece que el único acceso que tengo a ellos es a través del navegador de registros y el registro de sesión.
Adam Davis
Con respecto al Log Navigator, en mi caso tenía un log que estaba en el futuro (ya que cambié la fecha en la computadora a 1 día de anticipación para ejecutar algunas pruebas). Parece que xcode usa el último registro (por fecha de compilación). Para solucionar esto (en xcode 5), eliminé la fecha derivada del proyecto y reinicié xcode, por lo que los registros futuros desaparecieron y el Navegador de problemas comenzó a mostrar las advertencias y errores correctos.
alex-i
19

¿Hay un espacio en el nombre del producto de su objetivo?

Sé que en versiones anteriores de Xcode esto no fue un problema, pero parece que rompieron algo en Xcode 4 por lo que ya no funciona (sospecho que tiene algo que ver con la tontería de la ruta DerivedData). Puede agregar un espacio al nombre de su aplicación tal como aparece en el Launchpad de su iDevice configurando la CFBundleDisplayNametecla en Info.plistalgo diferente a ${PRODUCT_NAME}.

Damián
fuente
No, el nombre de la aplicación es una sola palabra, sin caracteres especiales, espacios ni nada más.
Adam Davis
Eso lo hizo por mí. Hombre, Apple encuentra nuevas formas de dificultar que los desarrolladores se trasladen a su plataforma. Error alucinante. !!
CF_Maintainer
Tampoco puede tener un guión bajo en el nombre del producto
afrederick
13

En una de las listas de correo de Cocoa Heads locales, me animaron a intentar un pequeño proyecto de muestra predeterminado, algo que debería haber hecho al principio para asegurarme de que mi aprovisionamiento y firma funcionaran. Se creó y se ejecutó en mi dispositivo sin problemas, por lo que todas las señales apuntan a un problema con mi código o el proyecto.

Lanzaré cosas del proyecto existente al nuevo proyecto de muestra, y si falla de una manera similar, debería poder reducir el problema a una región de interés más pequeña.


Agregué la funcionalidad principal de la aplicación en un nuevo proyecto y está funcionando bien. Lo único que hice de manera diferente esta vez fue que no configuré un binario universal (solo iPhone en este momento) y desactivé todo excepto la orientación vertical. Por lo que puedo decir, todo lo demás es igual, aunque si decido investigarlo más adelante, compararé los archivos del proyecto y veré qué más podría ser diferente.

Entonces, la solución para mí fue comenzar un nuevo proyecto y transferir toda la funcionalidad del proyecto anterior al nuevo proyecto.

Podría ser que recrear el objetivo, como sugiere Paul en otra respuesta, también lo arreglara, pero con un proyecto tan simple, reiniciar desde cero fue fácil para mí.

Adam Davis
fuente
Yo tuve este problema también. Había creado un nuevo proyecto Xcode4 antes de configurar mi certificado / perfil de aprovisionamiento y se produciría un error sin problemas. Una vez que se configuraron y reinicié Xcode, pude comenzar un nuevo proyecto y ejecutarlo sin problemas. (No hay mucha ayuda con un proyecto existente, lo sé.)
zekel
@zekel ¡Interesante! También puse en marcha el proyecto en el simulador, antes de pasar por el proceso de obtención de certificados y aprovisionamiento. Me imagino que las personas que no han dejado que su provisión expire durante la actualización no tendrían este problema entonces ...
Adam Davis
7

Tuve el mismo problema y, como alguien más sugirió, tenía que ver con el identificador del paquete. Recientemente lo había cambiado, como prueba, y le había puesto un asterisco. Lo arreglé y tuve que limpiar el objetivo, y luego funcionó.

Cortis
fuente
Yo también tenía un asterisco y quitarlo resolvió mi problema. Gracias por mencionar eso.
SteveB
El uso del identificador comodín (es decir, com.developername. *) También fue la causa del problema para mí. Revertirlo a com.developername predeterminado. $ {PRODUCT_NAME: rfc1034identifier} resolvió el problema. Actualmente estoy ejecutando Xcode
4.0.2
7

Esto me sucedió después de eliminar un objetivo no utilizado. Parece que Xcode puso un espacio en el CFBundleIdentifier de mi objetivo restante (com.company.etc). Tuve que editar Info.plist con un editor de texto externo para eliminarlo y luego funcionó bien.

AbePralle
fuente
esto también me pasó a mí. bajo objetivos, resumen, identificador, me deshice de un espacio al principio. Manzana sheesh. ¿Cuántas trampas puedes crear?
fregas
El identificador de paquete era mi problema. Esto está en el archivo Info.plist.
bentford
7

Estaba jugando con la adición de varios proyectos dentro de un espacio de trabajo y tuve este problema. Tengo una biblioteca simple en uno de los proyectos y estaba construyendo y agregué un objetivo basado en una ventana de iOS para probarlo. Eliminé el primer objetivo que hice para cambiarle el nombre. Después de leer esto, intenté eliminar xcuserdata del interior del paquete .xcodeproj y eso solucionó mi problema. Espero que esto ayude a alguien más. Ejecutando Xcode 4.1 en OS X 10.7.1.

Andrés
fuente
7

Después de revisar todas estas respuestas, tuve exactamente el mismo problema, pero algo diferente me lo resolvió.

El problema:

La compilación falló sin problemas después de la refactorización. (Cambiar el nombre de una clase usando Editar -> Refactorizar -> Cambiar nombre).

La solución más tonta de todos los tiempos:

Vaya a refactorizar (renombrar) otra cosa (-_- "). Después de hacer eso, el error fue que Xcode no pudo cambiar el nombre de todos los archivos apropiados y no mostró errores. Luego, después de otra refactorización, aparecieron los errores de la refactorización anterior .

Mazyod
fuente
Eso es ! Cambié manualmente el nombre de una propiedad y eso causó el problema. gracias
Laszlo
6

Yo tuve el mísmo problema. Estaba tratando de arreglarlo, un xcode falló. Lo volví a abrir y funcionó bien. ¿Quizás tuve suerte o algo así? Sea lo que sea, no me importa lo que estaba mal mientras funcione ahora

Portero
fuente
6

Si cambió el identificador del paquete y limpió el proyecto, pero tampoco funcionó, intente vaciar el directorio / Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData.

Esto funciona para mi.

Kenial
fuente
6

Para mí, la compilación falló sin mostrar ningún error en el Navegador de problemas. Sin embargo, en Log Navigator, en esa sesión de compilación, pude ver el error. En mi caso, el error fue una constante no declarada. Importé el archivo de encabezado requerido y el problema se resolvió. No estoy seguro de por qué este error no apareció en el Navegador de problemas.

Intenté reproducir este comportamiento cambiando deliberadamente el nombre de otra variable. Esta vez, el error se mostró en Issue Navigator. Por lo tanto, todavía no estoy seguro de por qué no aparece el error anterior en el Navegador de problemas.

Espero que esto ayude.

Sreejit
fuente
6

Las soluciones anteriores no me funcionan.

Mi solución es mover el proyecto a otra carpeta.

Los errores de compilación luego aparecen como lo hacía normalmente.

Alex
fuente
4

¿Ha limpiado su carpeta de construcción? Vaya al menú Producto, mantenga presionada la tecla Opción y seleccione "Limpiar carpeta de compilación ..."

Jon Reid
fuente
Esto no cambió los resultados.
Adam Davis
No
produjo
4

Sé cuál es el problema: En Info.plist -> Bundle Identifier: no puede usar '_'. Por ejemplo, com.mycompany.My_app no ​​es válido, pero com.mycompany.My-app está bien.

Rubycon
fuente
3

Tuve exactamente el mismo problema al intentar compilar un proyecto existente en xcode 4, y casi sufrí la molestia de volver a crear el proyecto.

Sin embargo, en un último intento, reemplacé el archivo info.plist por uno recién creado que incluía las etiquetas adicionales para "tipos de documentos", "tipos de url", "UTI de tipo exportado" y "UTI de tipo importado"

Esto pareció funcionar y fue una solución sorprendentemente simple para mi proyecto.

user696455
fuente
3

Esto me sucedió con mi objetivo UnitTest. Estaba trabajando y luego se detuvo. Había olvidado que acababa de eliminar un .h / .m en el sistema de archivos y no lo eliminé del archivo del proyecto, sin embargo, XCode no lo informó.

Lo descubrí ejecutando el proyecto en la línea de comando, que me dijo el error:

/usr/bin/xcodebuild -target "UnitTest"

Ejecute esto en la carpeta en la que tiene su archivo de proyecto y reemplace UnitTest con su objetivo, o simplemente no pase un objetivo para construir el objetivo predeterminado.

bandejapaisa
fuente
3

Yo también tuve este problema, pero la causa fue diferente:

Tengo un espacio de trabajo con un proyecto. En este proyecto, uso un marco que se incluye agregando su proyecto Xcode a mi proyecto. Importé el archivo de encabezado del marco en mi encabezado de prefijo (.pch). Esto fue una estupidez.

La solución fue eliminar el #import del archivo de encabezado del marco de mi archivo de encabezado de prefijo y agregarlo solo donde sea necesario.

CodeStage
fuente
3

El mismo problema aquí cuando se construye para el dispositivo. La compilación falló, pero mi registro tiene marcas de verificación verdes. Limpiar / eliminar la carpeta de compilación no lo soluciona. Leí en otra parte que alguien resolvió este problema eliminando y recreando el objetivo, pero aún no he descubierto completamente cómo hacerlo en XCode 4.


Mi solución temporal ha sido descargar e instalar XCode 3.2.6 con iOS 4.3. No me di cuenta de que Apple también había lanzado una versión de XCode 3 que incluye iOS 4.3, lo que le permite posponer la actualización a XCode 4. Presenté un informe de error con Apple sobre el problema de Build Failed.


udpate de Apple:

Cuando creamos este proyecto, aunque en una versión posterior a Xcode 4.0, vemos lo siguiente en el paso ProcessProductPackaging en el registro de compilación:

(nulo): error: CFBundleIdentifier 'com.yourcompany.Magic_Carpet' contiene el carácter ilegal '_' identificador de paquete no válido 'com.yourcompany.Magic_Carpet'

El código ProcessProductPackaging se revisó recientemente, por lo que sospechamos que simplemente no estaba emitiendo errores correctamente en Xcode 4.0. Eche un vistazo a la transcripción de su propia compilación y, de ser así, es probable que esto se solucione en una versión futura de Xcode (no podemos comentar más hasta que se publique una corrección).

Cambié de un guión bajo a un guión y solucionó el problema.

Paul Slocum
fuente
2

Me acaba de pasar lo mismo con una causa diferente.

Eliminé get-task-allow de mi archivo Entitlements.plist, dejando un plist vacío. La configuración de compilación todavía tenía el archivo Entitlements.plist especificado como mi archivo de derechos. Elegí ejecutar usando mi configuración de compilación Ad-Hoc en un dispositivo iOS con mi iPhone conectado, y vi el comportamiento descrito en este error. Agregar get-task-allow back lo solucionó.

Colin
fuente
2

Parece que hay muchas causas posibles de este problema. El mío resultó ser eso

Mi objetivo estaba configurado para usar un perfil de aprovisionamiento inexistente.

Configuré mi proyecto para usar un nuevo perfil y eliminé el anterior. No me di cuenta de que el objetivo tenía su propia configuración de perfil de aprovisionamiento, que todavía estaba configurada en el perfil antiguo (ahora eliminado).

CharlieMezak
fuente
2

Solo para agregar otra respuesta después de probar TODO lo anterior sin éxito: tuve que reiniciar la MacBook, no solo cerrar XCode, y eso funcionó para mí. Terminó con XCode mostrando algunos errores en Localizable.strings que no mostraba antes.

Espero que ayude

sonxurxo
fuente
Obtuve algo similar, Xcode 5.0.2: hubo un error de sintaxis en una de mis Localizable.strings que Xcode no mostró durante la compilación.
Bart van Kuik
2

Borro todos los espacios en los esquemas del proyecto en xcschemes y esto resuelve este problema. F *** ing Apple :( AppCode ROCKS!

Bimawa
fuente
1

ver: http://developer.apple.com/library/ios/#DOCUMENTATION/FileManagement/Conceptual/understanding_utis/understand_utis_conc/understand_utis_conc.html

El juego de caracteres UTI Un identificador de tipo uniforme es una cadena Unicode que generalmente contiene caracteres en el juego de caracteres ASCII. Sin embargo, solo se permite un subconjunto de los caracteres ASCII. Puede usar el alfabeto romano en mayúsculas y minúsculas (A – Z, a – z), los dígitos del 0 al 9, el punto (“.”) Y el guión (“-”). Esta restricción se basa en las restricciones de nombres DNS, establecidas en RFC 1035.

Los identificadores de tipo uniforme también pueden contener cualquiera de los caracteres Unicode mayores que U + 007F.

Importante: Cualquier carácter ilegal que aparezca en una cadena UTI, por ejemplo, guión bajo ("_"), dos puntos (":") o espacio (""), hará que la cadena se rechace como una UTI no válida. En la capa de API, no se genera ningún error para las UTI no válidas.

sfjava
fuente
1

No tuve ningún problema con el nombre del paquete, por lo que las soluciones sugeridas no funcionaron para mí. Finalmente, configuré No firmar código para la compilación, luego cerré el proyecto, luego eliminé el aprovisionamiento en el organizador, luego descargué un nuevo aprovisionamiento y lo agregué al organizador, luego lo configuré para la compilación. Funcionó.

Engeor
fuente
1

Esta no es una respuesta técnica, sino una respuesta de "error de usuario" que probablemente no se aplica a su situación. Me pasó a mí y mi búsqueda me llevó a estas preguntas y respuestas en vano, hasta que me di cuenta de mi error. Tenía un filtro configurado en el Navegador de problemas que no coincidía con nada de lo que se informaba como un problema. Cuando borré el filtro, se mostraron los problemas.

Observe que los síntomas eran los mismos sobre los que estaba preguntando y no tengo idea de cuándo configuré ese filtro (debe ser heredado de las otras vistas de navegación) ya que no habría necesitado ningún filtrado en la lista corta.

mobibob
fuente
1

Acabo de tener un problema similar. No se pudo encontrar un error en ninguna parte. Eliminé todos mis perfiles de aprovisionamiento y agregué otros nuevos.

Luego intenté crear otra aplicación de prueba en mi dispositivo y recibí este mensaje de error:

Error de firma de código: la identidad del certificado 'Desarrollador de iPhone: xxxxxx' aparece más de una vez en el llavero. La herramienta de codeign requiere que solo haya una.

Así que entré en Keychain, encontré un par de certificados vencidos con el mismo nombre y los eliminé, y eso funcionó.

Bastante aleatorio, pero tal vez si intentas crear otra aplicación para el dispositivo como lo hice yo, es posible que tengas la suerte de recibir un mensaje de error, como yo, para ayudar a diagnosticar el problema.

mestevie
fuente
1

Vaya a Organizador en xcode. Y en la pestaña Proyecto, elimine ese proyecto. Deje que xcode reconstruya los datos derivados nuevamente y solucione mi problema.

AccBLue
fuente
1

Enfrenté un problema similar en XCode4.5 y mientras trabajaba en mi aplicación, XCode se bloqueó repentinamente.

Después de buscar durante horas, descubrí que uno de mis archivos en mi aplicación se eliminó cuando xcode falló.

Restauré el archivo de la Papelera y el problema se resolvió.

niks
fuente
1

Estaba programando una aplicación de Mac OS X sin firma de código . Cuando habilité la zona de pruebas en la sección "Derechos", la firma de código se activó automáticamente y no pude crear una nueva compilación.

Thomas Johannesmeyer
fuente