web-dev-qa-db-fra.com

Avertissement Xcode: "Plusieurs commandes de construction pour le fichier de sortie"

Je reçois une erreur comme celle-ci:

[WARN] Avertissement: plusieurs commandes de construction pour le fichier de sortie /Developer/B/Be/build/Release-iphonesimulator/BB.app/no.png.

[WARN] Avertissement: plusieurs commandes de construction pour le fichier de sortie /Developer/B/Be/build/Release-iphonesimulator/BB.app/d.png.

[WARN] Avertissement: plusieurs commandes de construction pour le fichier de sortie /Developer/B/Be/build/Reease-Iphonesimulator/BB.app/n.png.

Mais j'ai vérifié Xcode et je ne vois pas du tout de doublons de tels fichiers. Comme le dit ce post dans les listes de diffusion Apple, il n’ya pas de doublons.

479
Futur

En fait, la réponse à cette question est très simple.

Dans votre xcode, recherchez les fichiers qui déclenchent l'avertissement et supprimez-le simplement.

Le Xcode affichera une seule référence de ce fichier dans les résultats de la recherche, mais ne vous arrêtez pas là-bas, continuez et supprimez-le. (il est préférable de faire une sauvegarde de votre fichier de projet avant l'opération de suppression)

Maintenant, faites une construction, vous verrez l’avertissement supprimé . (Cette réponse concerne une version précédente de xcode)

104
Futur

Dans le navigateur de projet, sélectionnez votre fichier de projet Xcode. Cela vous montrera les paramètres du projet ainsi que les cibles dans le projet. Regardez dans la phase de construction "Copier les ressources du paquet". Vous devriez trouver deux fois les fichiers incriminés dans cette liste. Supprimer la référence en double.

Xcode se plaint que vous essayez de regrouper le même fichier avec votre application deux fois.

795
Mark Suman

Ceci est facilement causé lorsque vous ajoutez des sous-projets basés sur git. Xcode n'est pas assez intelligent pour ignorer le sous-dossier .git même si vous ne le voyez pas dans le Finder. Il sera donc très confus qu'il existe plusieurs fichiers nommés "maître" ou "exclure" (fichiers de référentiel git standard). Avec Xcode4, accédez au projet (racine de l'arborescence de gauche), puis cliquez sur la cible de votre application et développez "Copier les ressources du bundle", puis supprimez toutes les références à .git. Vous ne devriez de toute façon pas besoin qu'elles soient intégrées à votre application.

124
slf

Ce n'est pas un bogue Xcode, bien que le message d'avertissement ne soit pas assez utile pour décrire la cause réelle.

Ce message d'erreur se produit lorsque votre projet contient plusieurs fichiers portant le même nom. Vous devez simplement supprimer ou renommer les fichiers avec des noms en double et le problème est résolu.

52
aimacworx

Cela se produit si vous avez 2 fichiers portant le même nom dans le projet. Même si les fichiers sont dans des groupes dans XCode lors de la compilation du projet, tous les fichiers se retrouvent dans le même répertoire. En d'autres termes, si vous avez /group1/image.jpg et /group2/image.jpg, le projet compilé n'aura qu'un des deux fichiers image.jpg.

25
respectTheCode

Comme mentionné précédemment, ce problème peut être constaté si vous avez plusieurs fichiers portant le même nom, mais dans des groupes différents (dossiers jaunes) dans le navigateur de projet. Dans mon cas, c'était intentionnel, car j'avais plusieurs sous-répertoires, chacun avec un "preview.jpg" que je voulais copier dans le bundle d'applications:

group references

Dans ce cas, vous devez vous assurer que Xcode reconnaît la référence directory (icône de dossier bleue), pas seulement les groupes.

Supprimez les fichiers incriminés et choisissez "Supprimer la référence" (pour ne pas les supprimer entièrement):

remove group references


Ajoutez-les de nouveau au projet en les faisant glisser dans le navigateur de projet. Dans la boîte de dialogue qui apparaît, choisissez "Créer des références de dossier pour tout dossier ajouté":

add as folder references


Notez que les fichiers ont maintenant une icône de dossier bleue dans le navigateur de projet:

folder references


Si vous regardez maintenant dans la section "Copier les ressources du bundle" des phases de construction de la cible, vous remarquerez qu'il existe une seule entrée pour l'ensemble du dossier, plutôt que des entrées pour chaque élément contenu dans le répertoire. Le compilateur ne se plaindra pas de plusieurs commandes de construction pour ces fichiers.

16
Stuart

Ce n'est pas un bug. Les assistants Xcode peuvent vous aider. Sélectionnez la cible, à gauche dans le navigateur de projet. Cliquez sur "Valider les paramètres" au bas des paramètres. Xcode vérifiera les paramètres et supprimera les doublons si possible.

15
Gunther

une autre version de cette situation peut se produire lorsqu'il existe des doublons dans la phase Headers build.

pour résoudre ce problème…

  1. aller à la cible de votre projet
  2. choisissez Build Phases
  3. choisissez la phase de construction Headers
  4. entrez le nom indiqué dans l'avertissement
  5. remarquer les deux (ou plus) articles
  6. trouvez les cases +|- dans le coin inférieur gauche
  7. sélectionnez l'un des éléments et cliquez sur le bouton -
14
john.k.doe

Dans mon cas, le problème était dû au même nom de cible et de dossier dans un groupe.

Il suffit de renommer le fichier ou le dossier en conflit pour résoudre le problème.

7
Dmitry

J'ai trouvé une solution assez simple pour cela:

  1. Sélectionnez le fichier à l'origine du problème dans le navigateur de projet.
  2. Désélectionnez l'appartenance cible à l'inspecteur de fichier
  3. Construire le projet
  4. Revérifier l'appartenance cible pour le fichier

L'avertissement est parti! Vérifiez cette image pour référence.

enter image description here

5
Mahmoud Fayez

Je suis à peu près sûr que cela peut être causé par un bogue XCode 4, du moins dans les cas où je l'ai rencontré. 

Cela se produit si vous ajoutez plusieurs fichiers dépendants de la langue au projet en même temps. J'ai découvert cela en regardant à travers les différences géniales. Je n'ai rien fait dans la validation, mais j'ai ajouté de nouveaux fichiers nib localisés. Mais en regardant en arrière la différence du fichier project.pbxproj, il a montré un tas de nouvelles références dupliquées ajoutées pour des fichiers qui étaient déjà dans le projet auparavant. Les fichiers qu'il a fait cela aussi m'ont semblé aléatoires. 

J'ai reproduit ce même comportement exact plusieurs fois.

La suppression de ces fichiers du projet ne résout pas le problème car elle supprime uniquement la référence d'origine et laisse les doublons. La seule façon de résoudre ce problème est de revenir en arrière et de recommencer ou de modifier le fichier de projet à la main, ce qui est un très bon moyen de le gâcher encore plus, car il est difficile de déterminer les doublons à supprimer et vous devez le faire. dans une tonne d'endroits différents.

Xcode 4 est juste une énorme déception pour moi.

5
Steve

Cela est dû au fait que vos "no.png", "d.png" et "n.png" sont dupliqués dans les ressources. Il suffit de chercher pour supprimer les fichiers en double et supprimer.

4
user944031

L'erreur semble apparaître lorsque vous avez plus d'une référence du même fichier .J'ai eu 2 fichiers du même nom et j'ai eu cette erreur. Lorsque je supprime l’un d’eux, l’erreur disparaît. 

3
hilla

Encore une autre variation sur cette question. J'ai eu le même message, aucune des solutions précédemment suggérées n'a résolu le problème (je n'avais définitivement qu'un seul exemplaire du fichier incriminé, par exemple).

Ma solution consistait à modifier le fichier project.pbxproj dans un éditeur de texte (après avoir quitté XCode et sauvegardé le fichier, bien sûr) et à supprimer toutes les références au fichier incriminé. Ensuite, après avoir relancé XCode, j'ai ajouté manuellement le fichier dans le projet et tout s'est bien passé.

(Je soupçonne que ce problème m'est arrivé à cause d'une fusion manuelle, c'est-à-dire: non-XCode, du fichier de projet.)

2
orlanthi

J'ai eu le même problème il y a quelques minutes. J'ai mentionné que le fait de modifier la «cible de déploiement» corrigeait mon problème.

1
Martijn Mellens

Ouvrez le dossier Frameworks de votre projet et assurez-vous qu'il ne contient que des cadres. J'ai ajouté par erreur tout le dossier du développeur!

1
rjobidon

Swift 3 : (mais aussi les versions plus anciennes) cela se produit lorsque j'ai des ressources avec des doublons. Il suffit de renommer les fichiers avec ce problème et tout va bien. 

Cela peut se produire également lorsque vous avez créé un Assets.xcassets et que vous avez renommé les doublons avec de nouveaux noms. Ainsi, vous l'avez oublié après l'avoir oublié.

0

Ce qui a fonctionné pour moi:

  1. Faites glisser le dépôt vers la corbeille. 
  2. re-cloner votre repo. 
  3. configurez votre repo avec un suivi à distance correct. git remote add <url.git> ou git remote set-url <url.git>

Cela a absolument fonctionné pour moi. Dans mon cas, pour une raison quelconque, lorsque j'ai exécuté git pull upstream develop pour une dépendance locale, git récupérait/générait des fichiers en double à partir de plusieurs commits. 

Après avoir suivi les étapes ci-dessus, le problème a disparu et git pull upstream develop ne tirait plus de plusieurs commits à la fois. Peut-être y avait-il une étrange cache git pour mon dépôt. 

0
ScottyBlades

Pour moi, la cible> Paramètres de construction> Conditionnement> Nom du produit était identique à une autre valeur référencée dans un fichier .plist personnalisé pour mon application. Finalement, en raison de notre processus de construction, cela crée des fichiers en double.

0
The Red Pea

La clé était de faire pod deintegrate et rm *.workspace fichier! Quelle perte de temps !

0
Renetik

Un moyen simple est, 

  • Aller à la cible de l'application 
  • Aller aux phases de construction
  • Fichiers de sortie
  • Supprimer le chemin des fichiers sortants, puis construire le projet. Il fonctionnera avec succès.
0
Rajesh