Xcode 4: Échec de la construction, aucun problème

90

L'application fonctionne bien dans le simulateur, se construit et s'exécute.

Lorsque je connecte mon appareil (iPhone 3GS exécutant iOS 4.3) et cible l'iPhone, le résultat est «Échec de la construction» avec «Aucun problème».

En regardant la fenêtre des résultats de la construction, tout est vert, a une coche, y compris l'avis d'échec de la construction .

Le développement des transcriptions ne montre aucune erreur.

Je ne peux pas exclure la possibilité d'une erreur de signature ou de provisionnement, mais cela m'a donné ces erreurs, je les ai corrigées, et maintenant cela ne me donne pas d'erreurs ou de problèmes, juste "Échec de la compilation; Aucun problème"

  • De quelles manières la construction peut-elle échouer sans problème?
  • Existe-t-il un moyen de regarder la sortie de la construction pour voir si je peux trouver la raison de son échec sans problème?
  • Y a-t-il une sortie de build produite au-delà de la liste des problèmes?
  • Je ne vois pas dans la fenêtre de construction où il tente de charger l'application sur mon appareil - cette sortie est-elle ailleurs?
Adam Davis
la source
Cela m'arrive maintenant! Si frustrant!
tallen11
1
Je pense que stackoverflow.com/a/28064945/1709587 affichera généralement une sorte de message d'erreur; c'est beaucoup plus utile que les diverses suppositions incluses dans les autres réponses et devrait être le point de départ pour quiconque essaie de déboguer cette situation. Accepteriez-vous qu'il soit placé en haut de la page?
Mark Amery

Réponses:

76

J'ai obtenu 'Build Failed' sans erreur dans le navigateur de problèmes (uniquement des avertissements). Le navigateur de rapport, cependant, affiche correctement les erreurs.

Mercuriel
la source
4
Super, cela a montré mes erreurs. Maintenant, je peux arrêter de perdre mon temps et résoudre l'erreur :)
Daniel Ryan
J'ai sauvé ma journée !! Merci
DZenBot
J'ai dû nettoyer DerivedData + désactiver BitCode (juste au cas où).
DevAndArtist
33

Utilisez-vous "Underscore" et "Space", etc. pour l'identifiant du bundle?

Utilisez-vous .m au lieu de .h dans l'une de vos importations? #import "Photo.h"

utilisateur674180
la source
1
Non, je n'utilise ni espace ni trait de soulignement dans mon ID de lot.
Adam Davis
2
Merci! Pour moi, c'était un trait de soulignement dans l'identifiant du bundle.
cocoapriest
Merci! Mon identifiant de paquet était vide pour une raison quelconque.
tallen11
2
Je vous remercie. Après avoir supprimé le trait de soulignement, mon projet s'est parfaitement compilé. Je ressens une étrange combinaison de rage aveuglante, de soulagement et de gratitude. COMMENT PUIS-JE ÊTRE TEL FOOL POUR UTILISER UN SOUS-SCORE DANS LE NOM DU PROJET?!?
Tina D.
1
HOU LA LA! J'ai eu ce problème aussi. Un souligné. Changé en dash et tout va bien. C'est une pomme absolument ABSURDE! J'adore iOS. Je méprise le processus compliqué qu'Apple utilise pour transférer votre application sur un appareil à tester. Quoi qu'il en soit, merci pour ce correctif!
DA.
21

La première chose que j'essaierais est de tout nettoyer (menu Produit / Nettoyer) et de le reconstruire. Vous l'avez peut-être déjà essayé.

Vous trouverez (et vous pourrez regarder pendant la construction) la sortie complète de la construction dans le navigateur de journaux. C'est l'icône la plus à droite des petites icônes juste en dessous des boutons Exécuter et Construire.

Les fichiers journaux de construction (et de débogage) se trouvent dans le répertoire / Users / you / Library / Developer / XCode / DerviedData / YourProject-abcdefg / Logs / Build (et ../Debug respectivement).

Je ne pense pas qu'il y ait de sortie pour l'installation de votre application sur l'appareil.

Codo
la source
Ouais, le nettoyage n'aide pas. J'ai utilisé et parcouru la sortie de construction sur le navigateur de journal et le journal de session associé. Les fichiers journaux que vous pointez semblent être binaires, il semble donc que le seul accès que j'aie à eux se fait via le navigateur de journaux et le journal de session.
Adam Davis
En ce qui concerne le navigateur de journal, dans mon cas, j'avais un journal qui était dans le futur (puisque j'ai changé la date sur l'ordinateur à 1 jour à l'avance pour exécuter certains tests). Il semble que xcode utilise le dernier journal (par date de construction). Pour résoudre ce problème (dans xcode 5), j'ai supprimé la date dérivée du projet et redémarré xcode, de sorte que les futurs journaux disparaissent et que le navigateur de problèmes a commencé à afficher les avertissements et les erreurs corrects.
alex-i
19

Y a-t-il un espace dans le nom du produit de votre cible?

Je sais que dans les versions antérieures de Xcode, ce n'était pas un problème, mais il semble qu'ils ont cassé quelque chose dans Xcode 4 donc cela ne fonctionne plus (je soupçonne que c'est quelque chose à voir avec le chemin DerivedData non-sens). Vous pouvez ajouter un espace au nom de votre application tel qu'il apparaît sur le Launchpad de votre iDevice en définissant la CFBundleDisplayNameclé dans le Info.plistsur autre chose que ${PRODUCT_NAME}.

Damien
la source
Non, le nom de l'application est composé d'un seul mot, pas de caractères spéciaux, d'espaces ou autre.
Adam Davis
Cela l'a fait pour moi. Homme, Apple trouve de nouvelles façons de rendre plus difficile pour les développeurs de passer à leur plate-forme. Erreur hallucinante. !!
CF_Maintainer
Vous ne pouvez pas non plus avoir de trait de soulignement dans le nom du produit
afrederick
13

Sur l'une des listes de diffusion locales de Cocoa Heads, j'ai été encouragé à essayer un petit exemple de projet par défaut - quelque chose que j'aurais dû faire au début pour m'assurer que mon approvisionnement et ma signature fonctionnaient. Il a été construit et exécuté sur mon appareil sans problème, donc tous les signes indiquent un problème avec mon code ou le projet.

Je jetterai des éléments du projet existant dans le nouvel exemple de projet, et s'il échoue de la même manière, je devrais être en mesure de réduire le problème à une région d'intérêt plus petite.


J'ai ajouté la fonctionnalité principale de l'application dans un nouveau projet et cela fonctionne bien. La seule chose que j'ai faite différemment cette fois-ci, c'est que je n'ai pas configuré de binaire universel (iPhone uniquement pour le moment) et que j'ai tout désactivé sauf l'orientation portrait. Pour autant que je sache, tout le reste est le même, mais si je décide de l'examiner plus en détail plus tard, je vais comparer les fichiers du projet et voir ce qui pourrait être différent.

La solution pour moi était donc de démarrer un nouveau projet et de porter toutes les fonctionnalités de l'ancien projet dans le nouveau projet.

Il se peut que la recréation de la cible, comme Paul le suggère dans une autre réponse, la corrige également, mais avec un projet aussi simple, le redémarrage à partir de zéro était facile pour moi.

Adam Davis
la source
J'ai eu ce problème également. J'avais créé un nouveau projet Xcode4 avant de configurer mon certificat / profil de provisionnement et cela entraînerait une erreur sans problème. Une fois qu'ils ont été configurés et que j'ai redémarré Xcode, j'ai pu démarrer un nouveau projet et l'exécuter sans problème. (Pas beaucoup d'aide avec un projet existant, je sais.)
zekel
@zekel Intéressant! J'ai également lancé le projet sur le simulateur, avant de passer par le processus d'obtention des certificats et de l'approvisionnement. J'imagine que les gens qui n'ont pas laissé leur provision expirer pendant la mise à niveau n'auraient pas ce problème alors ...
Adam Davis
7

J'ai eu le même problème et, comme quelqu'un d'autre l'a suggéré, il s'agissait de l'identifiant du bundle. Je l'avais récemment changé, à titre de test, et y avais mis un astérisque. J'ai corrigé cela et j'ai dû nettoyer la cible, puis cela a fonctionné.

Cortis
la source
J'avais moi aussi un astérisque et sa suppression a résolu mon problème. Merci d'avoir mentionné cela.
SteveB
L'utilisation de l'identifiant générique (c.-à-d. Com.developername. *) A également été la cause du problème pour moi. Le rétablissement de la valeur par défaut de com.developername. $ {PRODUCT_NAME: rfc1034identifier} a résolu le problème. J'utilise actuellement Xcode 4.0.2
GnarlyDog
7

Cela m'est arrivé après avoir supprimé une cible inutilisée. Il semble que Xcode a mis un espace dans le CFBundleIdentifier de ma cible restante (com.company.etc). J'ai dû modifier Info.plist avec un éditeur de texte externe pour le supprimer, puis cela a bien fonctionné.

AbePralle
la source
cela m'est arrivé aussi. sous cibles, résumé, identifiant, je me suis débarrassé d'un espace au début. Pomme Sheesh. Combien de pièges pouvez-vous créer?
fregas
L'identifiant du bundle était mon problème. C'est dans le fichier Info.plist.
bentford le
7

Je jouais juste avec l'ajout de plusieurs projets dans un espace de travail et j'ai eu ce problème. J'ai une bibliothèque simple dans l'un des projets et je construisais et j'ai ajouté une cible basée sur une fenêtre iOS pour la tester. J'ai supprimé la première cible que j'ai faite pour cela pour la renommer. Après avoir lu ceci, j'ai essayé de supprimer xcuserdata de l'intérieur du package .xcodeproj et cela a résolu mon problème. J'espère que ça aidera quelqu'un d'autre. Exécution de Xcode 4.1 sur OS X 10.7.1.

Andrew
la source
7

Après avoir examiné toutes ces réponses, j'ai eu exactement le même problème, mais quelque chose de différent l'a résolu pour moi.

Le problème:

La construction a échoué sans problèmes après la refactorisation. (Renommé une classe en utilisant Edition -> Refactoriser -> Renommer).

La solution la plus stupide jamais conçue :

Allez refactoriser (renommer) autre chose (-_- "). Après cela, l'erreur était que Xcode n'a pas réussi à renommer tous les fichiers appropriés et n'affiche pas les erreurs. Ensuite, après un autre refactor, les erreurs du refactor précédent sont apparues .

Mazyod
la source
c'est tout ! J'ai renommé manuellement une propriété et cela a causé le problème. merci
Laszlo
6

J'ai eu le même problème. J'essayais de le réparer un xcode s'est écrasé. Je l'ai rouvert et cela a très bien fonctionné. Peut-être ai-je eu de la chance ou quelque chose comme ça? Quoi qu'il en soit, je ne me soucie pas vraiment de ce qui n'allait pas tant que ça marche maintenant

Porter
la source
6

Si vous avez modifié l'identifiant du bundle et nettoyé le projet, mais que cela n'a pas non plus fonctionné, essayez de vider le répertoire / Users / YOUR_USERNAME / Library / Developer / Xcode / DerivedData.

Ça marche pour moi.

Kenial
la source
6

Pour moi, la construction a échoué sans afficher d'erreurs dans le navigateur de problèmes. Cependant, dans le navigateur de journal, dans cette session de construction, je pouvais voir l'erreur. Dans mon cas, l'erreur était une constante non déclarée. J'ai importé le fichier d'en-tête requis et le problème a été résolu. Je ne sais pas pourquoi cette erreur n'est pas apparue dans le Navigateur de problèmes.

J'ai essayé de reproduire ce comportement en changeant délibérément le nom d'une autre variable. Cette fois, l'erreur a été affichée dans Issue Navigator. Par conséquent, je ne sais toujours pas pourquoi l'erreur précédente n'apparaîtrait pas dans le navigateur de problèmes.

J'espère que cela t'aides.

Sreejit
la source
6

Les solutions ci-dessus ne fonctionnent pas pour moi.

Ma solution est de déplacer le projet dans un autre dossier.

Les erreurs de construction apparaissent alors comme d'habitude.

Alex
la source
4

Avez-vous nettoyé votre dossier de construction? Allez dans le menu Produit, maintenez la touche Option enfoncée et sélectionnez "Nettoyer le dossier de construction…"

Jon Reid
la source
Cela n'a pas changé les résultats.
Adam Davis
Aucun changement
Jayprakash Dubey
4

Je sais quel est le problème: Dans Info.plist -> Bundle Identifier: vous ne pouvez pas utiliser «_». Par exemple, com.mycompany.My_app n'est pas valide, mais com.mycompany.My-app OK.

Rubycon
la source
3

J'ai eu exactement le même problème en essayant de compiler un projet existant dans xcode 4, et j'ai presque traversé la douleur de recréer le projet.

Cependant, dans une dernière tentative, j'ai remplacé le fichier info.plist par un fichier nouvellement créé qui incluait les balises supplémentaires pour "types de document", "types d'url", "UTI de type exporté" et "UTI de type importé"

Cela semblait fonctionner et était une solution étonnamment simple pour mon projet.

user696455
la source
3

Cela m'est arrivé avec ma cible UnitTest. Travaillait puis s'est arrêté. J'avais oublié que je venais de supprimer un .h / .m sur le système de fichiers et de ne pas l'avoir supprimé du fichier de projet, mais XCode ne l'a pas signalé.

Je l'ai compris en exécutant le projet sur la ligne de commande, ce qui m'a indiqué l'erreur:

/usr/bin/xcodebuild -target "UnitTest"

Exécutez ceci dans le dossier dans lequel vous avez votre fichier de projet et remplacez UnitTest par votre cible - ou ne transmettez tout simplement pas de cible pour créer la cible par défaut.

bandejapaisa
la source
3

J'ai eu ce problème aussi, mais la cause était différente:

J'ai un espace de travail avec un projet dedans. Dans ce projet, j'utilise un framework qui est inclus en ajoutant son projet Xcode à mon projet. J'ai importé le fichier d'en-tête du framework dans mon en-tête de préfixe (.pch). C'était stupide.

La solution était de supprimer le #import du fichier d'en-tête du framework de mon fichier d'en-tête de préfixe et de l'ajouter uniquement là où c'était nécessaire.

CodeStage
la source
3

Même problème ici lors de la construction pour l'appareil. La construction a échoué, mais mon journal est entièrement coché en vert. Le nettoyage / la suppression du dossier de construction ne résout pas le problème. J'ai lu ailleurs que quelqu'un a résolu ce problème en supprimant et en recréant la cible, mais je n'ai pas encore complètement compris comment faire cela dans XCode 4.


Ma solution temporaire a été de télécharger et d'installer XCode 3.2.6 avec iOS 4.3. Je n'avais pas réalisé qu'Apple avait également publié une version de XCode 3 qui inclut iOS 4.3, vous permettant de reporter la mise à niveau vers XCode 4. J'ai déposé un rapport de bogue avec Apple à propos du problème Build Failed.


mise à jour d'Apple:

Lorsque nous construisons ce projet - bien que sur une version post-Xcode 4.0 - nous voyons ce qui suit dans l'étape ProcessProductPackaging dans le journal de construction:

(null): erreur: CFBundleIdentifier 'com.yourcompany.Magic_Carpet' contient le caractère illégal '_' identifiant de bundle invalide 'com.yourcompany.Magic_Carpet'

Le code ProcessProductPackaging a fait l'objet d'une refonte assez récemment, nous pensons donc qu'il n'émettait tout simplement pas correctement les erreurs dans Xcode 4.0. Jetez un œil à la transcription de votre propre build, et si tel est le cas, cela sera probablement corrigé dans une prochaine version de Xcode (nous ne pouvons pas commenter davantage tant qu'un correctif n'a pas été publié).

Je suis passé d'un trait de soulignement à un tiret et cela a résolu le problème.

Paul Slocum
la source
2

La même chose m'est arrivée avec une cause différente.

J'ai supprimé get-task-allow de mon fichier Entitlements.plist, laissant un plist vide. Le fichier Entitlements.plist était toujours spécifié dans les paramètres de construction en tant que fichier de droits. J'ai choisi de fonctionner en utilisant mes paramètres de construction Ad-Hoc sur un appareil iOS avec mon iPhone connecté et j'ai vu le comportement décrit dans ce bogue. L'ajout de get-task-allow a résolu le problème.

Colin
la source
2

semble qu'il existe de nombreuses causes possibles de ce problème. Le mien s'est avéré être ça

Ma cible a été définie pour utiliser un profil d'approvisionnement inexistant.

J'ai configuré mon projet pour utiliser un nouveau profil et j'ai supprimé l'ancien. Je ne savais pas que la cible avait son propre paramètre de profil d'approvisionnement, qui était toujours défini sur l'ancien profil (maintenant supprimé).

CharlieMezak
la source
2

Juste pour ajouter une autre réponse après avoir essayé TOUT ce qui précède sans succès: j'ai dû redémarrer le MacBook, non seulement fermer XCode, et cela a fonctionné pour moi. Il s'est retrouvé avec XCode montrant des erreurs dans Localizable.strings qu'il n'a pas montrées auparavant.

J'espère que cela pourra aider

sonxurxo
la source
J'ai eu quelque chose de similaire, Xcode 5.0.2: il y avait une erreur de syntaxe dans l'une de mes Localizable.strings que Xcode n'a pas montré lors de la construction.
Bart van Kuik
2

J'efface tous les espaces dans les schémas de projet dans xcschemes et cela résout ce problème. F *** ing Apple :( AppCode ROCKS!

Bimawa
la source
1

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

Le jeu de caractères UTI Un identificateur de type uniforme est une chaîne Unicode qui contient généralement des caractères dans le jeu de caractères ASCII. Cependant, seul un sous-ensemble des caractères ASCII est autorisé. Vous pouvez utiliser l'alphabet romain en majuscules et minuscules (A – Z, a – z), les chiffres de 0 à 9, le point («.») Et le trait d'union («-»). Cette restriction est basée sur les restrictions de nom DNS, énoncées dans la RFC 1035.

Les identificateurs de type uniforme peuvent également contenir n'importe lequel des caractères Unicode supérieurs à U + 007F.

Important: tout caractère non autorisé apparaissant dans une chaîne UTI (par exemple, trait de soulignement ("_"), deux-points (":") ou espace ("")) entraînera le rejet de la chaîne en tant qu'UTI non valide. Au niveau de la couche API, aucune erreur n'est générée pour les UTI non valides.

sfjava
la source
1

Je n'ai eu aucun problème avec le nom du bundle, donc les solutions suggérées n'ont pas fonctionné pour moi. Enfin, j'ai défini Ne pas coder pour la construction, puis j'ai fermé le projet, puis supprimé le provisionnement dans l'organisateur, puis téléchargé le nouveau provisionnement et l'ajouter à l'organisateur, puis les définir pour la build. Ça a marché.

Engeor
la source
1

Ce n'est pas une réponse technique, mais une réponse "erreur utilisateur" qui ne s'applique probablement pas à votre situation. Cela m'est arrivé et ma recherche m'a conduit à ce Q&R en vain - jusqu'à ce que je réalise mon erreur. J'avais un filtre défini dans le Navigateur de problèmes qui ne correspondait à rien qui était signalé comme un problème. Lorsque j'ai effacé le filtre, les problèmes étaient affichés.

Notez que les symptômes étaient les mêmes que ceux que vous posiez et que je n'ai aucune idée du moment où j'ai défini ce filtre (il doit être hérité des autres vues de navigation) car je n'aurais pas eu besoin de filtrage sur la liste restreinte.

mobibob
la source
1

J'ai juste eu un problème similaire. Impossible de trouver une erreur nulle part. J'ai supprimé tous mes profils d'approvisionnement et en ai ajouté de nouveaux.

Ensuite, j'ai essayé de créer une autre application de test sur mon appareil et j'ai reçu ce message d'erreur:

Erreur de signe de code: l'identité du certificat «Développeur iPhone: xxxxxx» apparaît plusieurs fois dans le trousseau. L'outil de conception de code ne nécessite qu'un seul.

Je suis donc entré dans Keychain, j'ai trouvé quelques certificats expirés avec le même nom et je les ai supprimés, et cela a fait l'affaire.

Assez aléatoire, mais peut-être que si vous essayez de créer une autre application sur l'appareil comme je l'ai fait, vous aurez peut-être la chance d'obtenir un message d'erreur, comme je l'ai fait, pour aider à diagnostiquer le problème.

mestevie
la source
1

Accédez à l'organisateur dans xcode. Et dans l'onglet Projet, supprimez ce projet. Laisser xcode reconstruire les données dérivées à nouveau résoudre mon problème.

AccBLue
la source
1

J'ai rencontré un problème similaire dans XCode4.5 et en travaillant sur mon application, XCode s'est soudainement écrasé.

Après avoir cherché pendant des heures, j'ai découvert qu'un de mes fichiers dans mon application avait été supprimé lorsque xcode était tombé en panne.

J'ai restauré le fichier à partir de la corbeille et le problème a été résolu.

niks
la source
1

Je programmais une application Mac OS X sans code . Lorsque j'ai activé le bac à sable dans la section "Droits", la signature de code s'est automatiquement activée et je n'ai pas pu créer une nouvelle version.

Thomas Johannesmeyer
la source