web-dev-qa-db-fra.com

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

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

Lorsque j'attache 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.

L'élargissement des transcriptions ne montre aucune erreur.

Je ne peux pas exclure la possibilité d'une erreur de signature ou d'approvisionnement, mais cela m'a donné ces erreurs, je les ai corrigées, et maintenant cela ne me donne aucune erreur ou problème, juste "La construction a échoué; 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 génération pour voir si je peux trouver la raison de l'é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 sur la fenêtre de construction où il tente de charger l'application sur mon appareil - cette sortie est-elle ailleurs?
89
Adam Davis

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 s'est construit et a fonctionné sur mon appareil sans problème, donc tous les signes pointent vers un problème avec mon code ou le projet.

Je vais jeter des choses 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 plus petite région d'intérêt.


J'ai ajouté la fonctionnalité principale de l'application dans un nouveau projet, et ça fonctionne bien. La seule chose que j'ai fait 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 désactivé tout sauf l'orientation portrait. Autant que je sache, tout le reste est le même, bien que si je décide de l'examiner plus tard, je diffère les fichiers du projet et vois ce qui pourrait être différent.

Donc la solution pour moi était de démarrer un nouveau projet un port toutes les fonctionnalités de l'ancien projet dans le nouveau projet.

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

13
Adam Davis

J'ai reçu "Build Failed" sans erreur dans le navigateur de problème (uniquement des avertissements). Cependant, le navigateur de rapports affiche correctement les erreurs.

75
Mercurial

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"

33
user674180

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 pouvez 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 génération (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.

21
Codo

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 non-sens du chemin DerivedData). 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 clé CFBundleDisplayName dans le Info.plist vers autre chose que ${PRODUCT_NAME}.

19
damian

Je jouais simplement avec l'ajout de plusieurs projets dans un espace de travail et j'ai eu ce problème. J'ai une simple bibliothèque 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 le renommer. Après avoir lu cela, j'ai essayé en supprimant 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.

7
Andrew

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

7
Cortis

Après avoir parcouru 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ème après la refactorisation. (Renommé une classe en utilisant Edition -> Refactor -> Renommer).

La solution la plus stupide de tous les temps:

Aller refactoriser (renommer) autre chose (-_- "). Après cela, l'erreur était que Xcode n'a pas renommé tous les fichiers appropriés et n'affichait aucune erreur. Puis, après un autre refactoriseur, les erreurs du refactoreur précédent sont apparues .

7
Mazyod

Cela m'est arrivé après avoir supprimé une cible inutilisée. Il semble que Xcode ait 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é.

7
AbePralle

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

Ça marche pour moi.

6
Kenial

Les solutions ci-dessus ne fonctionnent pas pour moi.

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

Les erreurs de génération apparaissent alors comme d'habitude.

6
Hai Feng Kao

Pour moi, la construction a échoué sans afficher aucune erreur dans le navigateur de problèmes. Cependant, dans le navigateur de journaux, dans cette session de génération, j'ai pu 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'apparaît pas 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 s'est affichée dans Issue Navigator. Donc, je ne sais toujours pas pourquoi l'erreur précédente n'apparaîtra pas dans le navigateur de problèmes.

J'espère que cela t'aides.

6
Sreejit

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 que j'ai eu de la chance ou quelque chose? Peu importe, je me fiche de ce qui n'allait pas avec ça tant que ça marche maintenant

6
Porter

Avez-vous nettoyé votre dossier de construction? Accédez au menu Produit, maintenez la touche Option enfoncée et sélectionnez "Nettoyer le dossier de génération…"

4
Jon Reid

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 est OK.

4
Rubycon

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

Cependant, dans une dernière tentative, j'ai remplacé le fichier info.plist par un nouveau qui comprenait 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.

3
user696455

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


Ma solution temporaire a été de télécharger et d'installer XCode 3.2.6 avec iOS 4.3. Je ne savais pas que 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 d'échec de la construction.


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 du journal de génération:

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

Le code ProcessProductPackaging a été révisé assez récemment, nous pensons donc qu'il n'émettait pas correctement les erreurs dans Xcode 4.0. Jetez un œil à la transcription de votre propre build, et si c'est le cas, cela sera probablement corrigé dans une future version de Xcode (nous ne pourrons pas commenter davantage jusqu'à ce qu'un correctif soit publié).

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

3
Paul Slocum

J'ai aussi eu ce problème, mais la cause en é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ù cela était nécessaire.

3
CodeStage

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 le supprimer 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 dit l'erreur:

/usr/bin/xcodebuild -target "UnitTest"

Exécutez cela dans le dossier où vous avez votre fichier de projet et remplacez UnitTest par votre cible - ou ne passez simplement pas une cible pour créer la cible par défaut.

3
bandejapaisa

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!

2
Bimawa

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

Mon objectif a été défini 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é).

2
CharlieMezak

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 une liste vide. Les paramètres de construction avaient toujours le fichier Entitlements.plist spécifié comme mon fichier Entitlements. A choisi d'exécuter en utilisant mes paramètres de construction Ad-Hoc sur un appareil iOS avec mon iPhone connecté, et a vu le comportement décrit dans ce bogue. L'ajout de get-task-allow back l'a corrigé.

2
Colin

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 les chaînes Localizable.strings qu'il ne montrait pas auparavant.

J'espère que ça t'as aidé

2
sonxurxo

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 sont 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 sur les restrictions de nom DNS, énoncées dans la RFC 1035.

Les identificateurs de type uniforme peuvent également contenir l'un des caractères Unicode supérieur à U + 007F.

Important: Tout caractère illégal apparaissant dans une chaîne UTI - par exemple, un trait de soulignement ("_"), deux points (":") ou un 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.

1
sfjava

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

1
Thomas Johannesmeyer

J'ai rencontré un problème similaire dans XCode4.5 et pendant que je travaillais 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 s'est écrasé.

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

1
niks

Dans mon cas, la raison était que l'un de mes chaîne localisée n'avait pas de ; à la fin: Alors, "You’ve already passed the test" = "Тест по этому слову уже пройден" sans ; à la fin apporte à Build Failed sans aucun problème.

1
Nikita Pestrov

Recherchez des espaces dans le nom. Non seulement du nom de vos cibles, mais également de la création de schémas. Pour moi, supprimer des espaces a fait l'affaire.

1
Eugene Braginets

Je viens d'avoir un problème similaire. Impossible de trouver une erreur n'importe où. Supprimé tous mes profils d'approvisionnement et 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 signature de code: L'identité du certificat 'iPhone Developer: xxxxxx' apparaît plus d'une fois dans le trousseau. L'outil de conception de code requiert qu'il n'y en ait qu'une.

Je suis donc allé dans le trousseau, j'ai trouvé quelques certificats expirés avec le même nom, et 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 pourriez avoir la chance d'obtenir un message d'erreur, comme je l'ai fait, pour aider à diagnostiquer le problème.

1
mestevie

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

1
Engeor

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 à cette 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 ont été affichés.

Notez que les symptômes étaient les mêmes que ceux que vous posiez et je ne sais pas quand 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.

1
mobibob

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

1
AccBLue

J'ai eu un problème similaire à cela et le correctif supprimait le nom du boîtier de chameau du nom du projet.

0
ZenBalance

Xcode 6.1

Mon problème consistait à laisser une erreur dans un fichier .m, puis à passer à un autre et à fermer Xcode sans corriger l'erreur dans le premier fichier .m. Après avoir ouvert Xcode à nouveau, l'erreur ne s'affichait que lorsque je suis allé au premier fichier .m. Puis il est apparu sans aucune intervention.

0
VolenD

Si votre projet Xcode contient des sous-projets, essayez de fermer le projet parent et d'ouvrir directement le projet Xcode enfant.

Mon sous-projet avait une erreur, mais il ne s'affichait pas dans la liste d'erreurs du projet parent lorsque j'ai créé la cible du sous-projet. Mais quand j'ai ouvert le projet Xcode unique et construit le même projet, l'erreur est apparue.

0
pkamb

J'utilisais un macro du fichier qui était non importé, après avoir importé ce fichier problème résol.

0
Zaid Pathan

Pour moi, cela a commencé à se produire après avoir ajouté la ligne: "~ Documents" dans: Paramètres de construction -> Chemins de recherche d'en-tête.

Après l'avoir supprimé, le débogueur a recommencé à fonctionner.

0
Eran Talmor

Dans ma situation, c'est mon problème de compilation de codage. mais XCODE ne rappelle pas l'erreur de compilation.

0
frank

Pour moi, c'était une dépréciation dans la bibliothèque JSONKit. Il accédait à la propriété isa d'un objet obsolète, nous devons utiliser object_setClass() à la place.

0
Lolloz89

Pour moi, j'ai vérifié les problèmes cachés (non répertoriés) par produit -> analyser. Tous les bogues cachés seront répertoriés en cas d'échec de l'analyse

0
Danboz

J'ai trouvé qu'il me manquait un Framework. J'ai utilisé le MFMailViewController et j'ai ajouté une référence à

 MessageUI/MessageUI.h

mais j'ai oublié par inadvertance de l'ajouter au projet ... Dans le cas où vous ne savez pas comment ajouter un framework à un projet:

Double-cliquez sur le nom du projet dans Project Navigator -> Sélectionnez les phases de construction -> Développez l'onglet Lier le binaire aux bibliothèques. Vous verrez un + et -. Sélectionnez + pour ajouter un cadre. Tapez le nom que vous souhaitez ajouter et quand vous le voyez, cliquez dessus et cliquez sur AJOUTER.

0
logixologist

J'ai eu le même problème et je l'ai résolu en ajoutant une inclusion manquante utilisée pour une macro définie dans le fichier de préfixe.

J'ai cette macro définie dans le fichier de préfixe:

#define ApplicationDelegate ((tdAppDelegate *)[UIApplication sharedApplication].delegate)

mais dans le fichier que j'ai utilisé, j'ai oublié d'inclure le fichier "tdAppDelegate.h";)

0
javikr

J'ai tout essayé dans ce post et rien n'a fonctionné.

Puis est allé Apple menu> Mise à jour logicielle> repéré il y avait une mise à jour xcode.

Je n'ai pas encore installé la mise à jour, mais le simple fait de laisser cette fenêtre ouverte résout le problème (lorsque je ferme la fenêtre de mise à niveau, le problème se reproduit).

Je suppose que cela doit être plutôt rare, mais j'espère que cela résoudra le problème pour certains.

0
Charlie Seligman

Mon erreur était de taper accidentellement une lettre à la ligne 1 de mon main.m fichier et l'enregistrer accidentellement.

J'allais perdre espoir et migrer mon code vers un nouveau projet jusqu'à ce que j'ouvre accidentellement mon main.m fichier dans le Finder. Dommage que le compilateur n'ait pas vu cette erreur.

0
acecapades