error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist':
1) Target 'OptimalLive' has copy command from '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' to '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
2) Target 'OptimalLive' has copy command from '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist' to '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
3) Target 'OptimalLive' has process command with input '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist'
l'exécution du code dans Xcode9 fonctionne, mais génère une erreur dans Xcode10.
Si vous obtenez cela à partir de la commande Ditto
créant plusieurs instances du même nom (PAS le 'copy files' build phase
), vous devrez peut-être modifier le Product Module Name
.
Build Settings
Product Module Name
Nous avons une cible de surveillance et quelques cibles de notification dans notre application. Je viens donc d'insérer des éléments tels que Extension
à la fin du nom du module.
J'ai trouvé cette solution à l'origine ici: https://forums.developer.Apple.com/thread/103913
Le problème peut être dû à plusieurs fichiers Plist ou autres dans App-
Solution -> Cible ouverte -> phases de construction> Copier les ressources d'un ensemble et supprimer info.plist
à partir de là.
Remarque: Si vous avez également développé une application de surveillance, vous devrez également supprimer le plist de la surveillance et son extension.
J'ai trouvé la solution à cette erreur de construction. Pour tous ceux qui ont le même problème avec le système de construction Xcode 10, suivez les étapes ci-dessous pour résoudre ce problème:
- Dans Xcode, sélectionnez Fichier-> Paramètres du projet/espace de travail.
- Changez le système de compilation en Legacy Build System.
Cela résoudra le problème de construction avec le nouveau Xcode 10.
Si vous souhaitez utiliser le nouveau système de construction, vous pouvez trouver l'aide de dépannage à partir de cette page d'aide Apple Xcode .
J'espère que cela t'aides!
Allez dans Xcode -> Fichier -> Paramètres de l'espace de travail. Vous trouverez un pop-up comme.
Sélectionnez "Legacy Build System" dans la balise Build System . Appuyez sur "Done".
Remarque: - Assurez-vous d'effacer votre projet avec "cmd + shift + alt + k" et "Données dérivées"
Construisez votre projet ça va marcher charme :)
Essayez aussi . Xcode-> Fichier-> Paramètres du projet-> Construire le système -> Système de construction hérité.
En vérifiant le 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:
info.plist
.Essayez ceci:
Dans Xcode, sélectionnez Fichier-> Paramètres du projet/espace de travail.
Changez le système de compilation en Legacy Build System.
J'expérimentais avec Core Data. J'ai construit un modèle de données pour un simple programme de liste de contrôle 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) figurait dans la liste "Compiler les sources". Le projet s'est compilé proprement lorsque je l'ai retiré de la liste.
Si vous utilisez CocoaPods, vous pouvez essayer de désintégrer les modules et de les réinstaller. Ça marche pour moi.
pod deintegrate
pod install
J'ai eu le même problème, j'avais une application supplémentaire dans l'application principale et la copiais dans la ressource. Dans mon cas résolu comme: -
1) Cible -> 2) Créer les phases 2) Copier le fichier (n éléments) 3) Supprimer le fichier de copie.
L'application Helper copiée automatiquement dans Xcode 10.0.
Essayez tout ce que cette option n'importe qui de cette option 3 travaillera pour vous, à coup sûr
Option 1: Remove all files from
Cible >> Construire les phases >> 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-> Système de construction -> Système de construction hérité
Option 3: remove and update existing pod
pod cache propre PromisesObjC
pod cache propre PromisesSwift
cd [votre_rép_projet]
Pods rm -rf /
rm Podfile.lock
pod update
I hope this will help you, Happy coding :-)
Avant de commencer, notez que mon projet utilise Carthage en tant que gestionnaire de dépendance.
Aucune des réponses existantes ici résolu mon problème. Ce qui a résolu le problème pour moi a été le suivant.
Premièrement, j'ai remarqué que l'erreur de construction avait mis en évidence un framework en particulier. Ensuite, j'ai filtré App Target> Build Phases pour ce framework. J'ai remarqué que ce cadre était présent à la fois dans "Link Binary With Libraries" et "Embed Frameworks". Notant qu’aucun des cadres énumérés sous «Cadres intégrés» n’était géré par Carthage, j’ai supprimé le cadre en question de «Cadres intégrés». J'ai ensuite reconstruit mon projet et tout fonctionne bien, y compris la fonctionnalité activée par le framework en question.
Aucune des solutions proposées ici ne fonctionnait pour moi. Cela était particulièrement dû à CocoaPods. J'utilisais auparavant Cocoapods 1.3.1. Le simple passage à la version 1.5.3 n'a pas résolu le problème immédiatement.
Les étapes que j'ai suivies étaient:
pod install
Pas:
Le problème que je rencontrais, c’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.
J'ai eu un tas d'avertissements Multiple commands produce
- pas limité à la duplication info.plist dans une cible. Y compris les ressources localisées et les fichiers de chaîne, les en-têtes, etc.
Solution: supprimer toutes les duplications dans les membres cibles.
J'ai eu ce problème quand j'avais un fichier avec le 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 cible.
Il est logique qu'une cible ne puisse avoir qu'un seul nom de fichier par cible. Par conséquent, il suffit de décocher la case du membre cible pour le fichier qui n'était pas lié à la cible principale afin de résoudre le problème.
Passant à 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
.
Un de mes CocoaPods était périmé et a causé le problème. Est-ce qu'une mise à jour des pods a fonctionné correctement?.
Je crois que c’est peut-être le SDK LivePerson
J'utilise Carthage et Xcode 10.
Ma solution est -> Projet -> Cible -> Général ->
Supprimer les cadres ajoutés avec Carthage de "Binaires incorporés"
habituellement, vous devez ajouter un script dans les phases de construction pour supprimer l'architecture pour App Store.
Dans Xcode 10, le script semble toujours appelé. Ainsi, les cadres sont copiés au bon endroit et vous n'avez pas besoin de les ajouter à l'onglet Général.
Remarque: si non défini -> dans Paramètres de construction -> Chemins de recherche -> Chemins de recherche Framework -> définissez le chemin d'accès au Framework ajouté à Carthage ... "$ (PROJECT_DIR)/Carthage/Build/iOS"
Cela signifie que vous avez plusieurs fichiers nommés Info.plist
; En général, tout va bien, mais vos fichiers sont accidentellement définis sur la même composition cible. Le correctif est donc le suivant: cliquez sur chaque fichier et vérifiez son adhésion cible à droite, assurez-vous qu'ils ne se chevauchent pas.
Avait un problème similaire, mais avec les fichiers .swiftdoc.
J'ai des extensions et des cibles de tests unitaires dans le projet. Et ils avaient le même "Nom de module de produit" (PRODUCT_MODULE_NAME dans les paramètres de construction) que l'application. Après avoir rendu les noms unique problème disparu.
Voici une autre solution de travail: (Si vous utilisez des pods)
Rechercher & Supprimer dupliquer les fichiers produits par plusieurs commandes.
Ici, un fichier Info.plist
supplémentaire doit être supprimé (dans mon cas, il s'agissait de Contents.json
)
error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
_ {Mon problème était dans Xcode 10 en cours d'exécution dans Mojave et en essayant d'exécuter des tests unitaires que j'avais écrits avant de mettre à jour XCode 10.
Dans mon cas, j'ai eu ce problème lors de l'exécution de ma cible "TestTarget". Pour résoudre ce problème, je devais supprimer une dépendance de la cible (dans TestTarget> phases de construction> Dépendances cible) car j'avais deux autres cibles en plus de mon "TestTarget" et que toutes deux exécutaient le même script et créaient/copiaient des fichiers à un moment donné.
Et cela entrait en conflit avec ce qui était mentionné dans Build System Notes de publication pour Xcode 10here :
C'est une erreur pour tout fichier individuel dans la construction d'être généré par plus d'une commande de construction. Par exemple, si deux cibles déclarent chacune le même fichier de sortie à partir d'une phase de script Shell, décomposez la déclaration du fichier de sortie en une seule cible.
J'ai eu le même problème avec un plist… .. Il s'est avéré que j'en avais deux copies, une était vide et l'autre dans mon dossier de ressources localisées… .. Supprimer l'un d'entre eux (le vide) a résolu le problème.
Si vous vérifiez votre erreur, les lignes 1) et 2) ont des chemins différents. Vous avez probablement ce fichier défini deux fois dans votre phase de copie.
Vérifiez les propriétés de votre cible, Build Phases, Copy Bundle Resources et recherchez un fichier dupliqué info.plist. Déterminez quel chemin est incorrect et supprimez-le. (Vous voudrez probablement le supprimer du système de fichiers également.)
Dans mon cas, un fichier Info.plist a été récupéré d’un de mes Cocoapods. Supprimé et résolu le problème.
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'
Comme nous pouvons le constater, la même erreur se produisait .. Dans mon cas, il y avait une copie supplémentaire du dossier " Chat21Core " in " TildeskWidget " dossier .. Cela créait un problème ... Par conséquent, l’une des solutions possibles peut être simplement de lire entièrement l’erreur et d’essayer de déterminer s’il existe une copie supplémentaire référencée du projet ou non.
Ce problème s'est posé à moi après avoir ajouté une deuxième partie de la suite de kits de développement logiciel Fabric à l'application.
En réalité, le cadre GoogleUtilies a été ajouté deux fois au projet Pods.
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).
Vous pouvez supprimer le second cadre en toute sécurité.
J'ai eu plusieurs copies du même fichier. Conservez simplement une copie et enlevez tout le reste. Clean Build, et sort triés.
Dans mon cas, le nettoyage des données privées et des paramètres de construction (dans cet ordre), ainsi que le redémarrage de Xcode et de Simulator ont aidé.
J'ai essayé de faire Solution -> Cible ouverte -> phases de construction> Copier les ressources d'ensemble, mais il est apparu là encore. Nettoyage des données privées aidé. dans l'erreur, il indique où se trouve le doublon. Dans mon cas, il est indiqué qu'il se trouvait dans mon lot d'applications et dans des données privées.
Pour moi, le problème était lié au fait que le même fichier soit inclus deux fois dans les ressources de l'ensemble. Je ne sais pas comment cela s'est passé, mais j'ai retiré l'un d'entre eux et le nouveau système de compilation a été compilé correctement.
OK, donc pour tous ceux qui n'ont pas trouvé la bonne réponse ici car cela n'a rien à voir avec info.plist ...
J'ai rencontré ce problème alors que je développais une application macOS sans CocoaPods ou Carthage, uniquement avec des packages SPM, en faisant glisser manuellement xcodeproj
s vers le lieu de travail.
Lorsque j'utilisais une seule dépendance (elle utilisait Swift-NIO de l'intérieur), tout allait bien, mais lorsque j'ai ajouté une dépendance de plus avec des sous-dépressions qui se chevauchent, j'ai eu ce problème désagréable.
La solution consiste à essayer de compiler séparément toutes les dépendances majeures (cela échouerait à cause de dossiers de contrôle inexistants dans les dossiers respectifs .build
, et cela est probablement dû au fait que vous avez mis vos pkgs en mode édition (Swift package edit YourPkg ...
).
Vous venez de unedit
vos pkgs et forcez toutes les dépendances à se compiler. Après cela, vous devez vous assurer que vos fichiers binaires liés dans la cible principale ne se chevauchent pas (je ne suis pas sûr que ce soit vraiment nécessaire, mais juste au cas où).
Après cela, tout devrait fonctionner parfaitement bien :)
Nous avons passé des mois à examiner cette question avec plusieurs de nos projets pour enfants. Nous avons constaté que AVAILABLE_PLATFORMS
était défini sur "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator"
, ce qui entraînait la création de plusieurs plates-formes, ce qui entraînerait le message "Plusieurs commandes produisent une erreur". Par exemple, la plate-forme "Foo" était en construction pour iOS et TVOS, et donc plusieurs commandes de construction créaient un fichier Foo.framework
.
Dès que nous avons mis
AVAILABLE_PLATFORMS = iphoneos iphonesimulator
dans notre fichier racine xcconfig
, ce problème a supprimé tous les projets enfants.
Courir
xcodebuild -project FitbitMobile.xcodeproj -target "FitbitMobile" -showBuildSettings > BuildSettings.txt
Voyez si la sortie est réglée sur ce que vous attendez. Si vous êtes une application iOS et que vous construisez pour tvOS, vous voudrez mettre à jour votre configuration.
Mon ProjectName.xcodeproj
avait une référence valide et non valide à un fichier portant le même nom. Même nom de fichier dans le navigateur de projet, un nom de fichier était en rouge, l'autre correct. Je me suis débarrassé de la référence invalide (la rouge), problème résolu.
Dans mon cas (j'utilise Carthage) le problème avec
error: Multiple commands produce
1) Target *** has copy command from
2) That command depends on command in Target ***: script phase “Run Carthage Script”
a été causé en raison de l'importation de cadres à la fois dans Cadres intégrés et Exécuter le script carthage phases dans la configuration de Build Phases
Ces deux phases copient les infrastructures dans les données dérivées, afin que Xcode voie les fichiers en double et imprime ces erreurs avec avertissement:
ignoring duplicated output file: (in target ***)
Après avoir supprimé les infrastructures en double de la phase Embeded framework, tout fonctionne correctement.
Si vous obtenez cette erreur avec React Native, en particulier avec libyoga.a
, consultez this Github comment
Si le problème avec votre erreur est .app/(et non .app/Info.plist), voyez cette réponse ici: erreur xcode 10: plusieurs commandes produisent - réagissent nativement
Le problème a été produit par des fichierslibRN ... a. Je l'ai corrigé en supprimant certains d'entre eux, tels que libRNScreens.a et libRNGestureHandler.a de Build Phases -> Link Binary with Libraries car ils étaient déjà référencés depuis une autre bibliothèque. D'autres devaient être remplacés par leur version de Pod comme libRNDeviceInfo.a:
Dans mon cas, j’ai ajouté le fichier GoogleService-Info.plist
deux fois avec déception à mon projet Firebase.
Je supprime le premier ajouté GoogleService-Info.plist
et le problème est résolu.
Dans mon cas, j'avais importé des fichiers d'un autre projet et j'avais la même classe à deux endroits.
J'ai eu le message d'erreur lié suivant:
Lorsque j'ai copié l'erreur, il s'est avéré que beaucoup plus d'informations textuelles étaient copiées, et lorsque j'ai lu le dump, je suis arrivé à la ligne correspondante:
: 0: erreur: nom du fichier "EventNode.Swift" utilisé deux fois:
qui a été suivi par les emplacements et m'a permis d'éliminer le problème.
Au cours du processus, j'ai découvert ce qu'il fallait dans "Copier les ressources du paquet":
Si votre application génère l'erreur liée aux multiples fichiers .app
, supprimez les fichiers .plist
de "Copier les ressources du paquet" NE FONCTIONNERA PAS.
Si l'erreur est liée au fichier .app, suivez les étapes suivantes
Sélectionnez la cible.
Aller à l'onglet Build Phases
.
Output Files
General
Tab dans Linked Frameworks and Libraries
cet Xcode mentionné dans l’erreur.Continuez à ajouter ces bibliothèques (que Xcode pose par le biais d’erreurs de compilation) dans Linked Frameworks and Libraries
jusqu’à ce que le code soit compilé avec succès.
J'espère que cela t'aides.
Dans mon cas, le problème vient du podfile . Je dois ajouter mon tester projeter au podfile :
target 'MyApp' do
pod 'Firebase'
target 'MyAppTests' do
inherit! :search_paths
pod 'Firebase'
end
end
Après cela, j'ai besoin d'exécuter:
pod update
Pour les projets de dépendance gérés par les cocoapods, le problème a été résolu en fournissant un podspec local pour exclure info.plist des sources. Godzippa par exemple
Podfile
pod 'Godzippa', :podspec => "venders/godzippa.podspec"
vendeurs/godzippa.podspec
s.source_files = 'Sources/*.{h,m}'
Pour les personnes qui comptent sur les noms comme étant identiques pour les importations d'en-têtes Swift. (Ex: nom du fichier d'en-tête: #import "MyApp-Swift.h"
):
Le nom de ce fichier d'en-tête est en fait déterminé par ${Swift_MODULE_NAME}-Swift.h
, où Swift_MODULE_NAME
utilise PRODUCT_MODULE_NAME
comme valeur par défaut.
De plus, il existe un paramètre de construction pour l'ensemble du projet appelé Swift_OBJC_INTERFACE_HEADER_NAME
"Nom d'en-tête d'interface généré par Objective-C" et sa valeur par défaut est ${Swift_MODULE_NAME}-Swift.h
. En changeant cette valeur en MyApp-Swift.h
, toutes les cibles de notre construction d'agrégats ont pu partager le même nom d'en-tête et nous avons pu modifier leur valeur PRODUCT_MODULE_NAME
value.
Dans mon cas, erreur d'archive de construction vs Xcode10
-1: plusieurs commandes produisent des messages/Vous n'avez pas le droit de faire 'yoga' avec une sortie '/ utilisateurs/kk//Libraryh/Code/Xcode/DocoDocD/Docid_Form./ __. La classe "yoga" a une commande avec sortie "/ utilisateurs
Il devrait y avoir quelque chose comme ci-dessous dans votre Podfile
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "React"
target.remove_from_project
end
if target.name == "yoga"
target.remove_from_project
end
end
end
puis exécutez pod install
Dans mon cas, j'ai copié plusieurs fois mon fichier GoogleService-info.plist
, car il est inclus à la fois dans mon application principale et dans un projet d'extension de partage.
La solution consiste à exclure ce fichier du projet d'extension (en le décochant de la cible dans sa vue Inspecteur de fichiers fenêtre latérale); comme je n'aime pas l'option de passer à Legacy Build System (qui fonctionne aussi pour moi).
Dans mon cas, j'avais le même custom Chemin du dossier d'en-tête public pour deux bibliothèques statiques différentes. L'une était pour une application principale, une autre pour une application de surveillance. Changé le chemin pour l'application de la montre et maintenant tout va bien.
En fait, vous pouvez utiliser un système de construction hérité, mais vous n'aurez pas les temps de construction rapides, c.-à-d.) Vous n'obtiendrez pas les nouvelles fonctionnalités des systèmes de construction qui ont été définies par défaut dans XCode10 Il s'agit simplement d'une solution de contournement pour ne pas obtenir les dernières fonctionnalités de construction https://developer.Apple.com/documentation/xcode_release_notes/xcode_10_release_notes/build_system_release_notes_for_xcode_10