Erreur Xcode 10: plusieurs commandes produisent

659

erreur: plusieurs commandes produisent '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist': 1) Ciblez 'Commandimal à partir de' Optimal ' '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' à '/ Users / uesr / Library / Developer / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Debug-iphoneos .app / Info.plist '2) La cible' OptimalLive 'a une commande de copie depuis' /Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist 'vers' / Users / uesr / Bibliothèque / Développeur / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Debug-iphoneos / OptimalLive.app / Info.plist '3) Target' OptimalLive 'a une commande de processus avec l'entrée '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist'

L'exécution du code dans Xcode9 fonctionne, mais il y a une erreur dans Xcode10.

faire
la source
Pour les dépendances gérées par les cocoapods, reportez-vous à stackoverflow.com/a/52421345/334999
Shuo
se produit lorsque vous importez un framework tiers dans votre projet et qu'il contient info.plist dans ses fichiers source. Cette info.plist est en conflit avec celle de votre application. Il suffit de le supprimer des phases de construction
protspace
Cher lecteur, lisez CHAQUE réponse à cette question, il y a beaucoup de choses différentes qui peuvent être erronées.
iluvcapra
Aller au chemin "Build Phases-> Copy Bundle Resources". Vérifiez le nom du fichier et supprimez-le. Nettoyez et exécutez l'application
Sagar Sukode

Réponses:

1228

Le problème peut se produire en raison de plusieurs Plist ou d'autres fichiers dans App-

Solution -> Ouvrir la cible -> Phases de construction> Copier les ressources de l'ensemble et les supprimer info.plistde là.

entrez la description de l'image ici

Remarque: Si vous avez également développé une application de montre, vous devrez également supprimer le plist de la montre et l'extension de la montre.

Alok
la source
12
Vous devrez peut-être également rechercher dans toutes les dépendances, par exemple CocoaPods, les fichiers info.plist ajoutés à tort
Chris Paveglio
68
Pour élaborer un peu: Cette erreur se produit car le nouveau système de construction de Xcode 10 est meilleur pour détecter les problèmes de configuration de projet. Des problèmes comme ceux-ci peuvent parfois causer des problèmes subtils avec votre build, il est donc bon de les résoudre.
Rick Ballard
2
Dans mon cas, j'ai dû supprimer certains fichiers de localisation nommés InfoPlist.strings
neowinston
8
Dans mon cas, j'avais un info.plistfichier dans l'une de mes dépendances CocoaPods privées qui était récupéré car il était associé à la source_filespropriété du podspec . Je n'avais pas besoin du info.plistfichier dans mon module, alors je l'ai juste supprimé.
aapierce
3
Merci! J'avais ajouté quelques plugins de développeurs dans mon code il y a quelque temps et il y avait aussi un fichier info.plist qui était en conflit avec info.plist de mon application
Christopher Smit
567

J'ai trouvé la solution à cette erreur de build, pour toute autre personne ayant le même problème avec le système de build Xcode 10, suivez les étapes suivantes pour le corriger:

  1. Dans Xcode, accédez à Fichier-> Paramètres du projet / espace de travail.
  2. Modifiez le système de génération en système de génération hérité.

entrez la description de l'image ici Il résoudra le problème de construction avec le nouveau Xcode 10.

Si vous souhaitez travailler avec le nouveau système de génération, vous pouvez trouver l'aide au dépannage sur cette page d'aide Apple Xcode .

J'espère que cela t'aides!

Akshay Sunderwani
la source
4
pouvez-vous expliquer pourquoi ce problème survient et comment le choix de Legacy Build System le résout? @Akshay Sunderwani
user832
142
Vous ne résolvez pas le problème, vous les cachez simplement.
Caio
4
Correction d'une erreur de génération pour les projets natifs réactifs. Voir le problème ici: github.com/facebook/react-native/issues/20492 Il existe un correctif possible si vous ne souhaitez pas passer au système de génération hérité
Eugen Timm
6
Ce n'est pas une solution à long terme. Finalement, le système de construction hérité ne sera plus une option.
Paul King
6
Eh bien, je vais cacher à 100% le problème au lieu de le résoudre car aucune de ces solutions ne fonctionne. Semble être un problème connu avec les Cocoapods; voir github.com/CocoaPods/CocoaPods/issues/7949 . J'espère que cela se résoudra en quelque sorte au moment où cette solution de contournement n'est plus une option.
sudo
170

Allez dans Xcode -> Fichier -> Paramètres de l'espace de travail. Vous en trouverez un comme.

entrez la description de l'image ici

Sélectionnez « Legacy Build System » dans la balise Build System. Appuyez sur " Terminé "

Remarque: - Assurez-vous d'effacer votre projet avec " cmd + shift + alt + k " et " Derived Data "

Construisez votre projet ça marchera charme :)

Hardik1344
la source
Selon ma compréhension, nos projets existants sont réalisés dans de vieux swift et xcode qui sont supportés dans l'ancienne version de swift et xcode. Donc, plus tôt ce que nous avons fait, nous sommes allés dans "Bundle Settings-> Swift legacy Build System" et avons sélectionné la version antérieure.
Hardik1344
Je l'avais à l'origine sur "Swift Legacy Build System", mais il avait été changé après le redémarrage de mon ordinateur. Même si vous pensez que vous disposez de cet ensemble correctement, cela peut valoir la peine d'être revérifié.
EndersJeesh
Cette solution ne résout pas le problème, elle le cache simplement.
Argus
Assurez-vous également de modifier les paramètres de l'espace de travail par utilisateur de la même manière;)
Wei Shen
114

Essayez cela aussi. Xcode-> Fichier-> Paramètres du projet-> Build System -> Legacy Build System.

Hari Prasath Balachandran
la source
38
Dans ce cas, Xcode signale un problème dans le projet, donc le retour au système de construction hérité le masquera pour l'instant. Le signalement par Xcode de ces types de problèmes est intentionnel et il est préférable de résoudre le problème.
Rick Ballard
2
Si l'erreur se trouve dans le projet généré par CocoaPods, je désactiverais le nouveau système de construction jusqu'à ce qu'une nouvelle version de CocoaPods corrige le problème.
Rivera
@RickBallard a du sens, maintenant, qui pourrait être la bonne solution? il semble y avoir un mélange de réponses
rolando
1
Il existe plusieurs causes à ce type d'erreur, mais vous pouvez en savoir plus sur ce que cela signifie sur help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0
Rick Ballard
75

Si vous obtenez cela à partir de la Dittocommande créant plusieurs instances du même nom (PAS le 'copy files' build phase), vous devrez peut-être modifier le Product Module Name.

  1. Cliquez sur vos cibles Xcode se plaint
  2. Cliquer sur Build Settings
  3. Rechercher Product Module Name
  4. Changez le nom en quelque chose d'unique

Nous avons une cible de surveillance et quelques cibles de notification dans notre application, donc je mets juste des choses comme Extensionà la fin du nom du module.

J'ai trouvé cette solution à l'origine ici: https://forums.developer.apple.com/thread/103913

u2Fan
la source
1
Cela a fonctionné un peu bien, mais cela a rompu avec le fichier de pontage.
Mohamad Kaakati
5
Dans mon cas, j'ai dû sélectionner Allà droite de l'endroit où vous recherchez pour Product Module Nameafficher cette configuration de build.
Hodson
56
J'ai eu le même problème dans Xcode 10. Le même projet fonctionnait bien dans Xcode 9.4.1. La solution est donc très simple. Supprimez simplement tous les fichiers info.plist de la cible. Veuillez le faire pour tous les fichiers info.plist. Étape 1. Sélectionnez le fichier info.plist. 2. Dans l'inspecteur de fichiers, décochez le projet dans l'appartenance cible. Exécutez ensuite votre projet. Merci !
Un kit du
12
Pour moi, je devais aller dans [Project_Name]> Build Phases> Copy Bundle Resources et y supprimer les doublons
user3322509
5
@Bharath Ne supprimez pas les fichiers info.plist de votre projet. Vous devez supprimer uniquement de Target comme je l'ai mentionné. Nous ne pouvons pas supprimer info.plist, c'est très important pour le projet.
Un kit
69

J'expérimentais avec Core Data. J'ai construit un modèle de données pour un programme de liste de contrôle simple et généré les NSManagedObjects. Lorsque j'ai compilé le projet, j'ai eu l'erreur suivante:

error: Multiple commands produce '/Users/myUSerName/Library/Developer/Xcode/DerivedData/myCoreDateExperiment-gzbslaqdwglkzxemijpdqmizgyzc/Build/Intermediates.noindex/ myCoreDateExperiment /Debug-iphonesimulator/ myCoreDateExperiment.build/Objects-normal/x86_64/CheckListItem+CoreDataProperties.o':
1) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files
2) Target ' myCoreDateExperiment ' (project ' myCoreDateExperiment ') has compile command for Swift source files

Le problème était que le modèle de données (CheckList.xcdatamodeld dans mon cas) était dans la liste "Compiler les sources". Le projet a été compilé proprement lorsque je l'ai supprimé de la liste.

  1. Ouvrez le navigateur de projet et sélectionnez le projet (toute première entrée en haut)
  2. Sélectionnez votre cible de construction sous Cibles dans le volet "Projets et cibles"
  3. Sélectionnez l'option Build Phases en haut
  4. Développez l'entrée "Compiler les sources" et recherchez le nom de votre modèle de données. Recherchez "xcdatamodeld" si vous ne parvenez pas à le trouver.
  5. Supprimer le modèle de la liste de compilation
  6. Assurez-vous que le modèle de données est inclus dans la liste "Copy Bundle Resources". Ajoutez-le s'il manque.

ÉDITER

Comme @WilliamT. explique dans les commentaires, vous avez besoin du xcdatamodeld dans la liste de compilation. Accédez plutôt à vos entités dans le fichier xcdatamodeld. Sélectionnez les modèles présentant des erreurs, développez le panneau de gauche et modifiez le champ "Codegen" en "Manuel / Aucun".

Positron
la source
36
Le fichier xcdatamodeld doit en fait être dans les sources de compilation. si vous voyez cette erreur par rapport aux données de base, c'est probablement parce que vous avez appelé «Créer une sous-classe NSManagedObject» mais que votre entité a la valeur Codegen = «Définition de classe». Cela signifie qu'il crée automatiquement ces classes pour vous et que vous les avez créées manuellement afin qu'elles existent deux fois.
William T.
1
vous êtes un épargnant de vie
user578386
1
@WilliamT. Alors, quelle devrait être la valeur de Codegen si l'on invoque Créer une sous-classe d'objets NSManaged?
Kaunteya
2
@Kaunteya Il y a une option pour définir le Codegen sur "Manuel" sur chaque attribut CoreData (tableau)
William T.
1
Suivez @WilliamT. conseils, puis nettoyer et construire.
PruitIgoe
40

Lors de la vérification du journal de construction, j'ai remarqué un avertissement:

note: Using new build system
note: Planning build
note: Constructing build description
Build system information
warning: The Copy Bundle Resources build phase contains this target's Info.plist file '/Users/<redacted>/Repositories/Whitesmith/optimize-ios/Carthage/Checkouts/WSStatusBarNotification/Miscellaneous/Info.plist'. (in target 'JDStatusBarNotification')

Donc, si c'est votre cas, allez simplement à votre cible:

  1. Phases de construction
  2. Copier la ressource du bundle
  3. Retirez info.plist.
AndrewSas
la source
32
Le fichier info.plist n'est pas présent dans les ressources du bundle de copie, obtenant toujours la même erreur
bunty kumar
La suppression d'un Info.plist excessif de la phase de création des ressources du bundle de copie l'a résolu pour moi. Cependant, mon avertissement était différent, car accidentellement un Info.plist d'une cible différente mais dans le même projet a été ajouté à la phase de génération des ressources du bundle de copie. L'avertissement était: "avertissement: fichier de sortie en double '... MyApp.app/Info.plist' sur la tâche: ProcessInfoPlistFile". Et conduisant à la même erreur que dans la question d'origine: "erreur: plusieurs commandes produisent '... MyApp.app/Info.plist'".
Martin Polak
dans mon cas, il s'agissait du fichier "LICENSE" - une fois que je l'ai supprimé, le problème a été résolu, donc je suppose que le problème est plus général que "plist", semble juste être plus souvent rencontré
vir us
37

Si vous utilisez CocoaPods, vous pouvez essayer de désintégrer les pods et de les réinstaller. Ça marche pour moi.

pod deintegrate

pod install

Ming Chu
la source
Oui, mon problème a été causé par un package de pod et seulement cela a résolu le problème! merci
CodeBrew
@Ming Chu Merci
N. Der
30

Essayez ceci, ça marche:

Dans Xcode, accédez à Fichier-> Paramètres du projet / espace de travail.

Modifiez le système de génération en système de génération hérité.

Akash Patel
la source
2
Dans ce cas, Xcode signale un problème dans le projet, donc le retour au système de construction hérité le masquera pour l'instant. Le signalement par Xcode de ces types de problèmes est intentionnel et il est préférable de résoudre le problème. Pour plus d'informations, consultez help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard
27

Lisez cette réponse si le message d'erreur fait référence aux fichiers Core Data

Synopsis: Vous pouvez avoir à la fois des fichiers de classe d'objets gérés Core Data générés automatiquement et générés manuellement.

Cette réponse s'applique si la première ligne de l'erreur fait référence à un fichier Foo + CoreDataProperties.o ou Foo + CoreDataClass.o . Exemple:

error: Multiple commands produce '/Users/me/Library/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/ MyApp /Debug-iphonesimulator/ MyApp.build/Objects-normal/x86_64/Foo+CoreDataProperties.o':

1) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

2) Target ' MyApp ' (project ' MyApp ') has compile command for Swift source files

La cause première peut être vue en développant la section Compile Swift Source Files du Build Transcript. Par exemple:

<unknown>:0: error: filename "Address+CoreDataClass.swift" used twice: '/Users/myUserName/Projects/Jnky/Foo+CoreDataProperties' and '/Users/jk/myUserName/Developer/Xcode/DerivedData/MyApp-uebslaqdwgldkjemijpdqmizgyzc/Build/Intermediates.noindex/MyApp.build/Debug/MyApp.build/DerivedSources/CoreDataGenerated/Jnky/Foo+CoreDataProperties.swift'

Le premier fichier mentionné il y a un fichier source dans votre répertoire de projet, que quelqu'un a généré en sélectionnant votre modèle de données dans le Navigateur du projet et en cliquant dans le menu Editeur > Créer une sous-classe d'objets gérés . Cette fonctionnalité a été ajoutée dans Xcode 7 ou plus.

Le deuxième fichier est un fichier du même nom mais qui est enterré dans Xcode DerivedData. Ce fichier est généré automatiquement par Xcode lors de chaque génération si le .xcdatamodeldfichier modèle de données ( ) est inclus dans la phase de génération des sources de compilation de la cible . Cette fonctionnalité a été ajoutée dans Xcode 9 ou plus. Zéro, un ou deux fichiers sont générés pour chaque entité / classe, selon le paramétrage du popup Codegen . Cette fenêtre contextuelle se trouve dans l' inspecteur de modèle de données lorsque vous sélectionnez une entité lors de la modification de votre modèle de données…

capture d'écran de Data Model Inspector

Les paramètres sont les suivants:

  • Manuel / Aucun Aucun fichier n'est généré
  • Catégorie / Extension Un fichier, Foo + CoreDataProperties.m ou .swift est généré, contenant une catégorie Objective-C ou une extension Swift.
  • Définition de classe Ce même fichier de catégorie / extension est généré, et en outre un Foo + CoreDataClass.m ou .swift est généré, contenant la déclaration et la définition de classe.

Vous voyez donc que le problème se produit lorsqu'un développeur (comme moi) habitué à l'ancien Xcode commence un projet dans un Xcode plus récent. Nous pensons que nous devons utiliser l' élément de menu Créer une sous-classe d'objets gérés , ce que nous faisons, pour créer les fichiers que nous pouvons voir dans le navigateur de projet sans se rendre compte que nos paramètres dans la fenêtre contextuelle Codegen amènent Xcode à créer des fichiers en double, ce qu'Apple "intelligemment" ne s'affiche pas dans le Navigateur du projet, car ils ne font pas confiance aux développeurs pour lire et tenir compte du commentaire dans l'en-tête // Ce fichier a été généré automatiquement et ne doit pas être modifié.

Solution 1 - Utilisez l'ancienne méthode

Vous pouvez désactiver tous les Codegen automatiques pour un modèle de données avec un seul paramètre:

  • Ouvrez les phases de construction de la cible du problème (dans Project Navigator , sélectionnez le projet, puis dans la liste des CIBLES qui apparaît, sélectionnez la cible du problème, puis l'onglet Build Phases ).
  • Développez l' entrée Compiler les sources et recherchez le modèle de données du problème ( .xcdatamodeldfichier).
  • Supprimez-le de la liste de compilation
  • Assurez-vous que le modèle de données est inclus dans la liste Copy Bundle Resources .

Solution 2 - Core Data Magic pour les débutants

Ici, vous vous lancez sur la nouvelle voie.

  • Laissez votre modèle de données tel quel dans la compilation des sources .
  • Dans chaque inspecteur d'entité de votre modèle de données, définissez Codegen sur Définition de classe .
  • Dans le Navigateur du projet, supprimez et supprimez tous les fichiers Foo + CoreDataClass et renommez tous les fichiers Foo + CoreDataProperties.m ou .swift en quelque chose comme Foo + MyProperties .
  • Dans chaque fichier Foo + MyProperties.m ou .swift , s'il existe des propriétés générées par Xcode, supprimez ces propriétés car elles se trouveront dans les fichiers cachés créés par Codegen .

Avec cette solution, vos définitions de classe sont générées automatiquement à partir du modèle de données sur chaque génération. Vous ne pouvez même pas les voir. C'est Core Data Magic , agréable et simple pour les débutants.

Solution 3 - Pour la plupart des applications du monde réel

Mais la solution 2 n'est pas bonne si vous voulez vraiment ajouter des propriétés non gérées. (Objective-C ne permet pas l'ajout de propriétés dans les catégories, et Swift ne permet pas l'ajout de propriétés stockées dans les extensions.) Ainsi, dans la plupart des applications du monde réel, vous voudrez probablement aller à mi-chemin entre les solutions 1 et 2…

  • Laissez votre modèle de données dans la liste des sources de compilation
  • Dans chaque inspecteur d'entité de votre modèle de données, définissez Codegen sur Catégorie / Extension .
  • Dans le Navigateur du projet, supprimez et supprimez tous les fichiers Foo + CoreDataClass.m ou .swift et, pour réduire la confusion future, renommez tous les fichiers Foo + CoreDataProperties.m ou .swift en peut-être simplement Foo.m ou .swift .
  • Assurez-vous que chaque fichier Foo.m ou .swift contient la définition de classe, à laquelle vous pouvez ajouter vos propres propriétés non gérées.

(Remerciements à la réponse de Positron. Ma réponse ici explique pourquoi la réponse de Positron (ma solution 1) fonctionne, et ajoute la solution 2 et la solution 3.)

Jerry Krinock
la source
cela a fonctionné pour moi. vous êtes génial!
Srujan Simha
Bonne réponse. Je voulais juste ajouter que vous pouvez effacer les fichiers cachés dupliqués en utilisant 'Produit> Nettoyer le dossier de construction' après avoir fixé le Codegen sur Manuel / Aucun extrait d'un commentaire d' ici .
indubitablement
21

Une option qui a résolu mon problème est de changer le système de build en système de build hérité. Veuillez suivre les étapes suivantes dans Xcode 10+.

Ici, j'ai écrit un article détaillé sur le problème et sa solution. Erreur Xcode: plusieurs commandes produisent

entrez la description de l'image ici

entrez la description de l'image ici

Asad Ali Choudhry
la source
1
Sauvé ma vie. Fonctionne parfaitement.
Reinaldo
2
Cette réponse a corrigé à elle seule, comme 12 problèmes que j'ai rencontrés dans Xcode avec React Native. Je vous remercie!
Chris Gilardi
19

Dans mon cas, PDFGenerator produisait un fichier info.plist, je viens de le supprimer.

entrez la description de l'image ici

Badr
la source
18

J'ai eu le même problème, j'avais une application d'assistance de plus dans l'application principale et copiez-la dans la ressource. Dans mon cas résolu comme: -

1) Cible -> 2) Phases de construction 2) Copier le fichier (n éléments) 3) Supprimer le fichier de copie.

L'application Helper est automatiquement copiée dans Xcode 10.0.

entrez la description de l'image ici

Prakash Jat
la source
3
Copie des fichiers + suppression de la copie des ressources du bundle aidée.
Oleksandr
Cela a fonctionné pour moi avec une légère modification - Dans mon cas, il y avait plusieurs fichiers à l'étape de copie des fichiers, en quelque sorte les mêmes noms de fichiers ont été copiés plusieurs fois / deux dans le bundle - entraînant l'erreur: la suppression d'une seule ligne nécessite que vous mettiez la ligne en surbrillance / filtrez le nom incriminé dans l'erreur et supprimez une ligne par le signe moins (c'est toujours sur la ligne du bas) au lieu de supprimer l'intégralité de l'étape de copie des fichiers.
AztecWarrior_25
16

Aucune des solutions proposées ici n'a fonctionné pour moi. Cela était notamment dû aux CocoaPods. J'utilisais auparavant Cocoapods 1.3.1. La simple mise à niveau vers 1.5.3 n'a pas résolu le problème tout de suite.

Les étapes que j'ai suivies étaient:

  1. Supprimer Podfile.lock
  2. Supprimer le répertoire des pods
  3. Supprimer les données dérivées et nettoyer
  4. Quitter Xcode
  5. Mettre à jour CocoaPods vers 1.5.3
  6. Courir pod install
  7. Ouvrir l'espace de travail et créer
Justin
la source
5
La mise à jour de CocoaPods vers 1.5.3 (sudo gem install cocoapods) et son exécution (pod install) étaient suffisantes pour que cela fonctionne pour moi. Merci!
mikemike396
J'ai fait quelques-uns des recommandations ci-dessus mais c'était le seul qui a résolu pour moi. Merci
Almeida
Celui-ci l'a résolu pour moi aussi. Je pense que c'est mieux que la solution de construction héritée car elle s'occupe réellement du problème.
MateusK
1
Cela a fonctionné pour moi, mais j'ai également dû ajouter install! 'cocoapods', :disable_input_output_paths => trueen haut de mon podfile. De plus, si vous ne souhaitez pas mettre à jour vos pods - ne supprimez pas podfile.lock et tous les pods seront installés à leur version actuelle.
DoesData
11

Avant de commencer, notez que mon projet utilise Carthage comme gestionnaire de dépendances.

Aucune des réponses existantes ici n'a résolu mon problème. Ce qui a résolu le problème pour moi était le suivant.

Tout d'abord, j'ai remarqué que l'erreur de construction a souligné un cadre en particulier. Ensuite, j'ai filtré Cible d'application> Phases de construction pour ce cadre. J'ai remarqué que ce cadre était présent à la fois dans "Link Binary With Libraries" et "Embed Frameworks". Notant qu'aucun des frameworks listés sous "Embed Frameworks" n'était celui géré par Carthage j'ai supprimé le framework en question de "Embed Frameworks". J'ai ensuite reconstruit mon projet et tout fonctionne bien, y compris les fonctionnalités activées par le cadre en question.

palmi
la source
1
J'ai utilisé des PODS. Tout supprimer de Embed Frameworks a fonctionné. J'ai nettoyé et reconstruit sans erreur. La solution héritée fonctionne également mais ne résout pas le problème à portée de main (pour tous ceux qui lisent ceci). Je suis sur xcode 10.2, cocoapods-1.6.1.
Nadine Rose
1
J'utilise Carthage et cela m'a corrigé!
Devin B
J'ai également utilisé des CocoaPods. Le framework est connecté en tant que pod de développement. "Embed Frameworks" est vide et a toujours ce problème
Luten
11

Pas:

  1. Accédez au fichier Xcode
  2. Cliquez sur Paramètres WorkSpace
  3. Build System Select comme Legacy Build System
Sanjay Mali
la source
4
Dans ce cas, Xcode signale un problème dans le projet, donc le retour au système de construction hérité le masquera pour l'instant. Le signalement par Xcode de ces types de problèmes est intentionnel et il est préférable de résoudre le problème. Pour plus d'informations, consultez help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard
Cela fonctionne pour moi. Changer le nom du produit ne le fait pas. Comme mon produit est mélangé avec un code à moitié objectif-c et un code rapide. Mon problème est "Plusieurs commandes produisent un module rapide"
wzhang84
10

Essayez toute cette option, n'importe laquelle de ces 3 options fonctionnera pour vous, c'est sûr

Option 1: Remove all files from

Cible >> Phases de construction >> Compiler les sources

Cible >> Phases de construction >> Copier les ressources de l'ensemble

Option 2: Change the build system

Xcode-> Fichier-> Paramètres du projet-> Build System -> Legacy Build System

Option 3: remove and update existing pod

pod cache clean PromisesObjC
pod cache clean PromisesSwift
cd [your_project_dir]
rm -rf Pods /
rm Podfile.lock
pod update

I hope this will help you, Happy coding :-)
Shoaib Bagwan
la source
-1. Non ça ne marche pas "à coup sûr". Quel est l'intérêt de supprimer les sources de compilation et de copier les ressources du bundle?! Le projet ne fonctionnera pas sans la compilation de code et de ressources.
Luten
9

Donc, le problème que je rencontrais est que j'avais accidentellement inclus Info.plist dans les paramètres du projet -> Phases de construction -> Copier les ressources du bundle pour ma cible.

Austin
la source
C'était précisément la solution pour moi aussi, car cette erreur s'est produite lors de l'exécution de tflite_camera_example dans Xcode 10
zai chang
9

Ce problème s'est posé pour moi après avoir ajouté une deuxième partie de la suite Fabric des SDK à l'application.

Ce qui s'est réellement passé, c'est que le cadre GoogleUtilies a été ajouté deux fois au projet Pods

Deux entrées pour GoogleUtilities.framework

Cela aurait été bien avant Xcode 10 mais Xcode 10 se plaindra si un fichier a deux actions contre lui (dans ce cas une action de copie).

Il est sûr de supprimer le deuxième cadre.

Damo
la source
La même chose pour moi, mais en utilisant Carthage en faisant glisser tous les .frameworks vers le projet de la section des bibliothèques
Ronaldo Albertini
Avez-vous corrigé ce @Damo
Harikarthick K
Je suis confronté à ce problème, pourriez-vous me dire comment résoudre ce problème, sans changer l'héritage
Harikarthick K
9

Voici une autre solution de travail: (Si vous utilisez des pods personnalisés)

  • Sélectionnez "Pods" dans la barre latérale comme surbrillance dans la capture d'écran.
  • Cliquez sur Build Phase. Développez la section "En-têtes". Il y a 3 options Public, Privé, Projet
  • Développez Public et vérifiez qu'il existe des fichiers en double. Retirez-le. TERMINÉ!!

entrez la description de l'image ici

Gajendra K Chauhan
la source
cette réponse doit également être considérée comme une solution au cas où le pod (personnalisé) serait à l'origine du problème!
MkaysWork
Vous pouvez également supprimer tous les fichiers * .plist d'ici. Cela semble fonctionner pour les pods personnalisés.
Amit Ahire
8

J'ai eu un tas d' Multiple commands produceavertissements - non limités à la duplication info.plist dans une cible. Y compris les ressources localisées et les fichiers de chaînes, les en-têtes, etc.

Solution: supprimez toutes les doublons dans l'appartenance à la cible.

Will Gwo
la source
J'ai eu cette erreur car j'avais une cible de surveillance avec son propre fichier infoplist.strings qui était copié dans le même répertoire que le fichier infoplist.strings de l'application principale. Ils finiraient tous les deux au même endroit lors de leur construction.
Lyck
7

J'ai eu ce problème lorsque j'avais un fichier du même nom dans deux cibles différentes. Pour une raison quelconque, l'un de ces fichiers faisait partie des deux cibles. Donc, fondamentalement, j'avais deux fichiers. Et ces deux fichiers appartenaient à une seule cible.

Il est logique qu'une cible ne puisse avoir qu'un seul nom de fichier par cible, donc tout simplement décocher la case de membre cible pour le fichier qui n'était pas lié à la cible principale a résolu le problème.

Charlie Fish
la source
7

J'utilise Carthage et Xcode 10.

Ma solution est -> Projet -> Cible -> Général ->

Supprimer les Frameworks ajoutés avec Carthage des "Binaires intégrés"

Habituellement, vous devez ajouter un script dans les phases de construction pour supprimer l'architecture de l'App Store.

Dans Xcode 10, le script semble toujours appelé. Il copie donc les frameworks au bon endroit et vous n'avez pas à les ajouter à l'onglet Général.

Remarque: si non défini -> dans les paramètres de construction -> Chemins de recherche -> Chemins de recherche du framework -> définissez le chemin vers le Framework u ajouté avec Carthage .... par exemple. "$ (PROJECT_DIR) / Carthage / Build / iOS"

Raegtime
la source
7

Il convient de noter que cette erreur peut être produite après la génération automatique de modèles CoreData lorsque le Codegen n'est pas défini sur Manuel / Aucun.

Pour corriger cela dans Xcode 10, double-cliquez sur votre fichier xcdatamodeId et sélectionnez chacune de vos entités et définissez Codegen sur Manuel / Aucun sous Classe dans votre inspecteur de modèle de données.

Aurelia W
la source
Oui! Et faites également un "Clean Build Folder".
Dirk
6

A eu un problème similaire mais avec des fichiers .swiftdoc.

J'ai des extensions et des cibles de tests unitaires dans le projet. Et ils avaient le même "Nom du module de produit" (PRODUCT_MODULE_NAME dans les paramètres de construction) que l'application. Après avoir rendu les noms uniques, le problème a disparu.

Igor Palaguta
la source
6

Passer à Xcode 10, des erreurs comme

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':

peut être résolu comme suit:

Allez à Xcode->File->Workspace/Project Settings-> Build System -> Legacy Build System.

Noor
la source
2
Dans ce cas, Xcode signale un problème dans le projet, donc le retour au système de construction hérité le masquera pour l'instant. Le signalement par Xcode de ces types de problèmes est intentionnel et il est préférable de résoudre le problème. Pour plus d'informations, consultez help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard
celui-ci l'a fait pour moi, vous monsieur êtes un génie
samouray
6

Allez dans la phase de construction du projet et supprimez info.plist des sources de compilation. Il supprimera ce problème et le projet sera à nouveau actif.

entrez la description de l'image ici

Aditya Sharma
la source
6

Un de mes CocoaPods était obsolète et a causé le problème. A fait une mise à jour des pods et cela a bien fonctionné.

Je pense que c'était peut-être le SDK LivePerson

ninjaneer
la source
pour moi, je devais juste faire 'pod install'
Pnar Sbi Wer
6

Mon problème était que Xcode 10 était exécuté dans Mojave, et pendant que j'essayais d'exécuter les tests unitaires que j'avais écrits avant de mettre à jour vers XCode 10.

Dans mon cas, j'ai eu ce problème lors de l'exécution de ma TestTargetcible. Pour résoudre, j'ai dû:

  • Supprimer l'une des dépendances cibles (in TestTarget > build phases > Target Dependencies)

car j'avais deux autres cibles en plus de la mienne TestTargetet les deux exécutaient le même script et créaient / copiaient des fichiers à un certain moment.

Et cela était en conflit avec ce qui était mentionné dans les notes de version de Build System pour Xcode 10 ici :

C'est une erreur pour tout fichier individuel de la génération d'être produit par plusieurs commandes de génération. Par exemple, si deux cibles déclarent chacune le même fichier de sortie d'une phase de script shell, factorisez la déclaration du fichier de sortie en une seule cible.

Nouvelle mise à jour après la mise à jour de Xcode 10.1 vers 10.2

Un problème similaire est apparu à nouveau après la mise à jour vers Xcode 10.2. J'ai plusieurs cibles par projet: Target1et Target2, et j'ai résolu ce problème en:

  • naviguer vers Edit Scheme > Buildet
  • supprimer une des cibles de la construction: décochez la case Target1sous Testcar je savais Target2importéTarget1

À noter également ici, Target2la case à cocher doit rester cochée sousTest

Samman Bikram Thapa
la source
6
error: Multiple commands produce '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings':
1) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-demo-master/TildeskWidget/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'
2) Target 'chat21' (project 'chat21') has copy command from '/Users/KunshtechNew/Downloads/chat21-ios-sdk-master 2/Chat21Core/Base.lproj/Chat.strings' to '/Users/KunshtechNew/Library/Developer/Xcode/DerivedData/chat21-fgjaqebxysmggqfdnetggdbzfqih/Build/Products/Debug-iphonesimulator/Chat21.app/Base.lproj/Chat.strings'

Il peut y avoir 2 solutions différentes pour se débarrasser de ce problème:

Solution 1

Comme on peut le voir , je recevais la même erreur .. dans mon cas il y avait une copie supplémentaire du dossier Chat21Core dans TildeskWidget problème a été la création du dossier ..Ce .. Donc , l' une des solutions possibles peut également être lu que l'erreur entièrement et essayez de trouver s'il existe une copie supplémentaire référencée à partir du projet ou non.

Solution 2

Une autre solution simple que j'ai trouvée lorsque je suis confronté au même type de problème pour un projet différent. Cette fois, j'ai dû appliquer une solution différente.

  • pod deintegrate du projet.
  • Supprimez le fichier d'espace de travail et le fichier pod.lock du dossier du projet.
  • Encore une fois pod install et essayez de construire le projet.

J'espère que cela pourrait fonctionner pour vous ..

Kunsh Technologies
la source