Xcode 10 Fehler: Es werden mehrere Befehle erzeugt

658

Fehler: Mehrere Befehle erzeugen '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist': 1) Ziel 'Optimal' '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist' to '/ Users / uesr / Library / Entwickler / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Products / Debug-i .app / Info.plist '2) Das Ziel' OptimalLive 'verfügt über einen Kopierbefehl von' /Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Server/Masonry/Info.plist 'nach' / Users / uesr / Bibliothek / Entwickler / Xcode / DerivedData / OptimalLive-fxatvygbofczeyhjsawtebkimvwx / Build / Produkte / Debug-iphoneos / OptimalLive.app / Info.plist '3) Ziel' OptimalLive 'hat einen Prozessbefehl mit der Eingabe '/Users/uesr/Desktop/workSpace/SEALIVE/SeaLive1.1/OptimalLive/Info.plist'

Das Ausführen des Codes in Xcode9 funktioniert, in Xcode10 ist jedoch ein Fehler aufgetreten.

machen
quelle
Informationen zu von Cocoapods verwalteten Abhängigkeiten finden Sie unter stackoverflow.com/a/52421345/334999
Shuo
Dies geschieht, wenn Sie ein Framework eines Drittanbieters in Ihr Projekt importieren und die Quelldateien info.plist enthalten. Diese info.plist widerspricht der Ihrer App. Entfernen Sie es einfach aus den Build-Phasen
Protspace
Lieber Leser, lesen Sie JEDE Antwort auf diese Frage, es gibt viele verschiedene Dinge, die falsch sein können.
Iluvcapra
Gehe zum Pfad "Phasen erstellen-> Bundle-Ressourcen kopieren". Überprüfen Sie den Dateinamen und löschen Sie ihn. Reinigen Sie die Anwendung und führen Sie sie aus
Sagar Sukode

Antworten:

1218

Das Problem kann aufgrund mehrerer Plist- oder anderer Dateien in App- auftreten.

Lösung -> Ziel öffnen -> Phasen erstellen> Bundle-Ressourcen kopieren und info.plistvon dort entfernen .

Geben Sie hier die Bildbeschreibung ein

Hinweis: Wenn Sie auch eine Uhren-App entwickelt haben, müssen Sie die Liste auch von der Uhr und der Uhrenerweiterung entfernen.

Alok
quelle
12
Möglicherweise müssen Sie auch in Abhängigkeiten, z. B. CocoaPods, nach falsch hinzugefügten info.plist-Dateien suchen
Chris Paveglio
68
Um es etwas näher zu erläutern: Dieser Fehler tritt auf, weil das neue Build-System von Xcode 10 Probleme bei der Projektkonfiguration besser erkennen kann. Probleme wie diese können manchmal subtile Probleme mit Ihrem Build verursachen. Es ist daher gut, sie zu beheben.
Rick Ballard
2
In meinem Fall musste ich einige Lokalisierungsdateien mit dem Namen InfoPlist.strings entfernen
neowinston
8
In meinem Fall hatte ich eine info.plistDatei in einer meiner privaten CocoaPods-Abhängigkeiten, die aufgeräumt wurde, weil sie mit der source_filesEigenschaft der Podspec übereinstimmte . Ich brauchte die info.plistDatei in meinem Modul nicht, also habe ich sie einfach gelöscht.
aapierce
3
Vielen Dank! Ich hatte vor einiger Zeit einige Entwickler-Plugins in meinen Code eingefügt und es gab auch eine info.plist-Datei, die mit der info.plist meiner App in Konflikt stand
Christopher Smit
567

Ich habe die Lösung für diesen Build-Fehler gefunden. Wenn alle anderen das gleiche Problem mit dem Xcode 10-Build-System haben, führen Sie die folgenden Schritte aus, um das Problem zu beheben:

  1. Gehen Sie in Xcode zu Datei-> Projekt- / Arbeitsbereichseinstellungen.
  2. Ändern Sie das Build-System in Legacy Build-System.

Geben Sie hier die Bildbeschreibung ein Das Build-Problem mit dem neuen Xcode 10 wird behoben.

Wenn Sie mit dem neuen Build-System arbeiten möchten, finden Sie die Hilfe zur Fehlerbehebung auf dieser Apple Xcode-Hilfeseite .

Hoffe das hilft!

Akshay Sunderwani
quelle
4
Können Sie erklären, warum dieses Problem auftritt und wie es durch Auswahl von Legacy Build System behoben wird? @ Akshay Sunderwani
user832
142
Sie beheben das Problem nicht, Sie verstecken sie nur.
Caio
4
Behebt den Build-Fehler für reaktionsnative Projekte. Siehe Problem hier: github.com/facebook/react-native/issues/20492 Es gibt eine mögliche Lösung, wenn Sie nicht zum Legacy Build System wechseln möchten: github.com/facebook/react-native/issues/…
Eugen Timm
6
Dies ist keine langfristige Lösung. Schließlich wird das Legacy-Build-System keine Option mehr sein.
Paul King
6
Nun, ich werde das Problem zu 100% verbergen, anstatt es zu beheben, da keine dieser Lösungen funktioniert. Scheint ein bekanntes Problem mit Cocoapods zu sein; Siehe github.com/CocoaPods/CocoaPods/issues/7949 . Ich hoffe, dass es sich irgendwie selbst behebt, wenn diese Problemumgehung keine Option mehr ist.
Sudo
170

Gehen Sie zu Xcode -> Datei -> Arbeitsbereichseinstellungen. Sie finden ein Popup wie.

Geben Sie hier die Bildbeschreibung ein

Wählen Sie " Legacy Build System " aus dem Tag " Build System ". Drücken Sie auf " Fertig "

Hinweis: - Stellen Sie sicher, dass Sie Ihr Projekt mit " cmd + shift + alt + k " und " Derived Data " löschen.

Erstellen Sie Ihr Projekt, es wird Charme funktionieren :)

Hardik1344
quelle
Nach meinem Verständnis werden unsere bestehenden Projekte in altem Swift und Xcode erstellt, die alte Versionen von Swift und Xcode unterstützen. Also gingen wir früher zu "Bundle-Einstellungen-> Swift Legacy Build System" und wählten eine frühere Version aus.
Hardik1344
Ich hatte es ursprünglich auf "Swift Legacy Build System", aber es wurde nach dem Neustart meines Computers gewechselt. Selbst wenn Sie der Meinung sind, dass Sie dieses Set richtig eingestellt haben, kann es sich dennoch lohnen, es noch einmal zu überprüfen.
EndersJeesh
Diese Lösung behebt das Problem nicht, sondern versteckt es nur.
Argus
Stellen Sie außerdem sicher, dass Sie die Einstellungen für den Arbeitsbereich pro Benutzer auf die gleichen ändern;)
Wei Shen
114

Versuchen Sie dies auch. Xcode-> Datei-> Projekteinstellungen-> Build-System -> Legacy-Build-System.

Hari Prasath Balachandran
quelle
38
In diesem Fall weist Xcode auf ein Problem im Projekt hin. Wenn Sie also auf das ältere Build-System zurückgreifen, wird es vorerst nur ausgeblendet. Xcode meldet diese Art von Problemen absichtlich und es ist am besten, das Problem zu beheben.
Rick Ballard
2
Wenn der Fehler im generierten Projekt von CocoaPods liegt, würde ich das neue Build-System deaktivieren, bis eine neue CocoaPods-Version das Problem behebt.
Rivera
@ RickBallard macht jetzt Sinn, was könnte die richtige Lösung sein? Es scheint eine Mischung aus Antworten zu geben
Rolando
1
Es gibt mehrere Ursachen für diese Art von Fehler, aber Sie können mehr darüber lesen, was es bedeutet unter help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0
Rick Ballard
73

Wenn Sie dies von dem DittoBefehl erhalten, der mehrere Instanzen mit demselben Namen erstellt (NICHT das 'copy files' build phase), müssen Sie möglicherweise das ändern Product Module Name.

  1. Klicken Sie auf Ihre Ziele, über die sich Xcode beschwert
  2. Klicke auf Build Settings
  3. Suchen nach Product Module Name
  4. Ändern Sie den Namen in etwas Einzigartiges

Wir haben ein Überwachungsziel und einige Benachrichtigungsziele in unserer App, daher habe ich Dinge wie Extensiondas Ende des Modulnamens eingefügt.

Ich habe diese Lösung ursprünglich hier gefunden: https://forums.developer.apple.com/thread/103913

u2Fan
quelle
1
Es hat ein bisschen gut funktioniert, aber dann ist es mit der Bridging-Datei kaputt gegangen.
Mohamad Kaakati
5
In meinem Fall musste ich Allrechts von der Stelle auswählen, nach der Sie suchen Product Module Name, damit diese Build-Konfiguration angezeigt wird.
Hodson
56
Ich habe das gleiche Problem in Xcode 10. Das gleiche Projekt hat in Xcode 9.4.1 einwandfrei funktioniert. Die Lösung ist also sehr einfach. Entfernen Sie einfach alle info.plist-Dateien vom Ziel. Bitte tun Sie dies für alle info.plist-Dateien. Schritt 1. Wählen Sie die Datei info.plist aus. 2. Deaktivieren Sie im Dateiinspektor das Projekt in der Zielmitgliedschaft. Führen Sie dann Ihr Projekt aus. Vielen Dank !
Ein Kit
12
Für mich musste ich zu [Projektname]> Phasen erstellen> Bundle-Ressourcen kopieren gehen und die Duplikate dort entfernen
user3322509
5
@Bharath Entfernen Sie keine info.plist-Dateien aus Ihrem Projekt. Sie müssen nur von Target entfernen, wie ich bereits erwähnt habe. Wir können info.plist nicht entfernen. Es ist sehr wichtig für das Projekt.
Ein Kit
68

Ich habe mit Core Data experimentiert. Ich habe ein Datenmodell für ein einfaches Checklistenprogramm erstellt und die NSManagedObjects generiert. Beim Kompilieren des Projekts wurde folgende Fehlermeldung angezeigt:

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

Das Problem war, dass sich das Datenmodell (in meinem Fall CheckList.xcdatamodeld) in der Liste "Quellen kompilieren" befand. Das Projekt wurde sauber kompiliert, als ich es aus der Liste entfernte.

  1. Öffnen Sie den Projektnavigator und wählen Sie das Projekt aus (allererster Eintrag oben)
  2. Wählen Sie Ihr Build-Ziel unter "Ziele" im Bereich "Projekte und Ziele" aus
  3. Wählen Sie oben die Option Phasen erstellen
  4. Erweitern Sie den Eintrag "Quellen kompilieren" und suchen Sie nach Ihrem Datenmodellnamen. Suchen Sie nach "xcdatamodeld", wenn Sie Probleme haben, es zu finden.
  5. Löschen Sie das Modell aus der Kompilierungsliste
  6. Stellen Sie sicher, dass das Datenmodell in der Liste "Cople Bundle Resources" enthalten ist. Fügen Sie es hinzu, wenn es fehlt.

BEARBEITEN

Als @WilliamT. In den Kommentaren erklärt, dass Sie das xcdatamodeld in der Kompilierungsliste benötigen. Wechseln Sie stattdessen zu Ihren Entitäten in der Datei xcdatamodeld. Wählen Sie die fehlerhaften Modelle aus, erweitern Sie das linke Feld und ändern Sie das Feld "Codegen" in "Manuell / Keine".

Positron
quelle
36
Die xcdatamodeld-Datei sollte sich tatsächlich in Compile Sources befinden. Wenn dieser Fehler in Bezug auf Kerndaten auftritt, liegt dies wahrscheinlich daran, dass Sie "NSManagedObject-Unterklasse erstellen" aufgerufen haben, Ihre Entität jedoch auf Codegen = "Klassendefinition" festgelegt ist. Dies bedeutet, dass diese Klassen automatisch für Sie erstellt werden und Sie sie manuell erstellt haben, sodass sie zweimal vorhanden sind.
William T.
1
Sie sind ein Lebensretter
user578386
1
@ WilliamT. Welchen Wert sollte Codegen haben, wenn die Unterklasse "NSManaged-Objekt erstellen" aufgerufen wird?
Kaunteya
2
@Kaunteya Es gibt eine Option, um den Codegen für jedes CoreData-Attribut (Tabelle) auf "Manuell" zu setzen
William T.
1
Folgen Sie @WilliamT. beraten und dann reinigen und bauen.
PruitIgoe
40

Beim Überprüfen des Build-Protokolls wurde eine Warnung angezeigt:

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')

Wenn dies Ihr Fall ist, gehen Sie einfach zu Ihrem Ziel:

  1. Phasen erstellen
  2. Bundle-Ressource kopieren
  3. Entfernen info.plist.
AndrewSas
quelle
32
Die Datei info.plist ist nicht in den Ressourcen des
Kopierpakets vorhanden und zeigt
Das Entfernen einer übermäßigen Info.plist aus der Erstellungsphase der Ressourcen für das Kopierpaket hat das Problem für mich gelöst. Meine Warnung war jedoch anders, da versehentlich eine Info.plist eines anderen Ziels, jedoch innerhalb desselben Projekts, zur Erstellungsphase von Copy Bundle Resources hinzugefügt wurde. Die Warnung lautete: "Warnung: doppelte Ausgabedatei '... MyApp.app/Info.plist' für Aufgabe: ProcessInfoPlistFile". Und dies führt zu demselben Fehler wie in der ursprünglichen Frage: "Fehler: Mehrere Befehle erzeugen '... MyApp.app/Info.plist'".
Martin Polak
in meinem Fall war es „LIZENZ“ Datei - sobald ich es entfernt haben, wurde das Problem behoben, so dass ich das Problem erraten ist allgemeiner als „plist“, scheint nur gerade ein häufiger anzutreffen zu sein
vir uns
37

Wenn Sie CocoaPods verwenden, möchten Sie möglicherweise versuchen, die Pods zu deintegrieren und erneut zu installieren. Für mich geht das.

pod deintegrate

pod install

Ming Chu
quelle
Ja, mein Problem wurde durch ein Pod-Paket verursacht und nur dies hat das Problem behoben! danke
CodeBrew
@ Ming Chu Danke
N. Der
30

Versuchen Sie dies. Es funktioniert:

Gehen Sie in Xcode zu Datei-> Projekt- / Arbeitsbereichseinstellungen.

Ändern Sie das Build-System in Legacy Build-System.

Akash Patel
quelle
2
In diesem Fall weist Xcode auf ein Problem im Projekt hin. Wenn Sie also auf das ältere Build-System zurückgreifen, wird es vorerst nur ausgeblendet. Xcode meldet diese Art von Problemen absichtlich und es ist am besten, das Problem zu beheben. Weitere Informationen finden Sie unter help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard
27

Lesen Sie diese Antwort, wenn die Fehlermeldung auf Core Data-Dateien verweist

Synopsis: Möglicherweise verfügen Sie über automatisch generierte und manuell generierte Core Data-verwaltete Objektklassendateien.

Diese Antwort gilt, wenn sich die erste Zeile des Fehlers auf eine Datei Foo + CoreDataProperties.o oder Foo + CoreDataClass.o bezieht . Beispiel:

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

Die Hauptursache kann durch Erweitern des Abschnitts Compile Swift Source Files des Build Transcript ermittelt werden. Zum Beispiel:

<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'

Die erste dort erwähnte Datei ist eine Quelldatei in Ihrem Projektverzeichnis, die jemand generiert hat, indem er Ihr Datenmodell im Projektnavigator ausgewählt und im Menü Editor > Verwaltete Objektunterklasse erstellen geklickt hat . Diese Funktion wurde in Xcode 7 oder so hinzugefügt.

Die zweite Datei ist eine gleichnamige Datei, die jedoch in Xcodes vergraben ist DerivedData. Diese Datei wird bei jedem Build automatisch von Xcode generiert , wenn die .xcdatamodeldDatei data model ( ) in der Build-Phase Compile Sources des Ziels enthalten ist . Diese Funktion wurde in Xcode 9 oder so hinzugefügt. Abhängig von der Einstellung des Codegen-Popups werden für jede Entität / Klasse null, ein oder zwei Dateien generiert . Dieses Popup befindet sich im Datenmodellinspektor, wenn Sie beim Bearbeiten Ihres Datenmodells eine Entität auswählen.

Screenshot von Data Model Inspector

Die Einstellungen sind:

  • Manuell / Keine Es werden keine Dateien generiert
  • Kategorie / Erweiterung Eine Datei, Foo + CoreDataProperties.m oder .swift, wird generiert und enthält eine Objective-C-Kategorie oder eine Swift-Erweiterung.
  • Klassendefinition Am selben Kategorie / Verlängerungs - Datei generiert wird, und zusätzlich ein Foo + CoreDataClass.m oder .swift erzeugt wird , Klassendeklaration und Definition enthält.

Sie sehen also, dass das Problem auftritt, wenn ein Entwickler (wie ich), der an den älteren Xcode gewöhnt ist, ein Projekt in einem neueren Xcode startet. Wir sind der Meinung, dass wir den Menüpunkt " Verwaltete Objektunterklasse erstellen" verwenden müssen, um die Dateien zu erstellen, die im Projektnavigator angezeigt werden, ohne zu bemerken, dass unsere Einstellungen im Codegen- Popup dazu führen, dass Xcode doppelte Dateien erstellt, die Apple verwendet "clever" wird im Projektnavigator nicht angezeigt, da sie den Entwicklern nicht vertrauen, dass sie den Kommentar in der Kopfzeile lesen und beachten. // Diese Datei wurde automatisch generiert und sollte nicht bearbeitet werden.

Lösung 1 - Verwenden Sie den älteren Weg

Sie können alle automatischen Codegen für ein Datenmodell mit nur einer Einstellung deaktivieren :

  • Öffnen Sie das Problem des Ziels Build - Phasen (im Projekt - Navigator , wählen Sie Projekt, dann in der Liste der ZIELVORGABEN , die angezeigt wird , wählen Sie das Problem Ziel, dann auf die Registerkarte Build - Phasen ).
  • Erweitern Sie den Eintrag Quellen kompilieren und suchen Sie das Problemdatenmodell ( .xcdatamodeldDatei).
  • Löschen Sie es aus der Kompilierungsliste
  • Stellen Sie sicher, dass das Datenmodell in der Liste Copy Bundle Resources enthalten ist.

Lösung 2 - Core Data Magic für Anfänger

Hier gehen Sie auf dem neueren Weg All-In.

  • Lassen Sie Ihr Datenmodell unverändert in den Compile Sources .
  • In jedem Entity - Inspektor in Ihrem Datenmodell setzen Codegen auf Klassendefinition .
  • Löschen und löschen Sie im Projektnavigator alle Foo + CoreDataClass- Dateien und benennen Sie alle Foo + CoreDataProperties.m- oder .swift- Dateien in Foo + MyProperties um .
  • Wenn in jeder Foo + MyProperties.m- oder .swift- Datei Eigenschaften vorhanden sind, die von Xcode generiert wurden, löschen Sie diese Eigenschaften, da sie sich in den von Codegen erstellten versteckten Dateien befinden .

Mit dieser Lösung werden Ihre Klassendefinitionen bei jedem Build automatisch aus dem Datenmodell generiert. Sie können sie nicht einmal sehen. Es ist Core Data Magic , nett und einfach für Anfänger.

Lösung 3 - Für die meisten realen Apps

Lösung 2 ist jedoch nicht gut, wenn Sie wirklich nicht verwaltete Eigenschaften hinzufügen möchten. (In Objective-C können keine Eigenschaften in Kategorien hinzugefügt werden, und in Swift können gespeicherte Eigenschaften nicht in Erweiterungen hinzugefügt werden.) In den meisten realen Apps möchten Sie also wahrscheinlich auf halbem Weg zwischen Lösung 1 und 2 wechseln.

  • Belassen Sie Ihr Datenmodell in der Liste der Kompilierungsquellen
  • Setzen Sie in jedem Entitätsinspektor in Ihrem Datenmodell Codegen auf Kategorie / Erweiterung .
  • Löschen Sie im Projektnavigator alle Foo + CoreDataClass.m- oder .swift- Dateien und legen Sie sie in den Papierkorb. Um zukünftige Verwirrung zu vermeiden , benennen Sie alle Foo + CoreDataProperties.m- oder .swift- Dateien in möglicherweise nur Foo.m oder .swift um .
  • Stellen Sie sicher, dass jede Foo.m- oder .swift- Datei die Klassendefinition enthält, zu der Sie Ihre eigenen nicht verwalteten Eigenschaften hinzufügen können.

(Danksagung zur Antwort von Positron. Meine Antwort hier erklärt, warum die Antwort von Positron (meine Lösung 1) funktioniert, und fügt Lösung 2 und Lösung 3 hinzu.)

Jerry Krinock
quelle
das hat bei mir funktioniert. du bist unglaublich!
Srujan Simha
Gute Antwort. Ich wollte nur hinzufügen, dass Sie die duplizierten versteckten Dateien mit 'Produkt> Clean Build Folder' löschen können, nachdem Sie den Codegen auf Manual / None aus einem Kommentar von hier korrigiert haben .
zweifellos
20

Eine Option, die mein Problem gelöst hat, besteht darin, das Build-System in ein Legacy-Build-System zu ändern. Bitte befolgen Sie die folgenden Schritte in Xcode 10+.

Hier habe ich einen ausführlichen Artikel über das Problem und seine Lösung geschrieben. Xcode-Fehler: Es werden mehrere Befehle erzeugt

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein

Asad Ali Choudhry
quelle
1
Hat mein Leben gerettet. Hat perfekt funktioniert.
Reinaldo
2
Diese Antwort wurde im Alleingang behoben, wie 12 Probleme, die ich in Xcode mit React Native hatte. Vielen Dank!
Chris Gilardi
19

In meinem Fall hat PDFGenerator eine info.plist-Datei erstellt, ich habe sie gerade gelöscht.

Geben Sie hier die Bildbeschreibung ein

Badr
quelle
18

Ich hatte das gleiche Problem, ich hatte eine weitere Hilfs-App in der Haupt-App und kopiere diese in die Ressource. In meinem Fall gelöst als: -

1) Ziel -> 2) Phasen erstellen 2) Datei kopieren (n Elemente) 3) Kopierdatei entfernen.

Die Helper-App wird automatisch in Xcode 10.0 kopiert.

Geben Sie hier die Bildbeschreibung ein

Prakash Jat
quelle
3
Kopieren von Dateien + Löschen von Bundle-Ressourcen kopieren hat geholfen.
Oleksandr
Dies funktionierte bei mir mit geringfügigen Änderungen. In meinem Fall befanden sich im Schritt "Dateien kopieren" mehrere Dateien. Irgendwie wurden dieselben Dateinamen mehrmals / zweimal in das Bundle kopiert. Dies führte zu dem Fehler: Beim Löschen einer einzelnen Zeile müssen Sie die Zeile markieren / Filtern Sie den im Fehler beanstandeten Namen und löschen Sie eine Zeile durch ein Minuszeichen (immer in der unteren Zeile), anstatt den gesamten Schritt der Kopierdateien zu löschen.
AztecWarrior_25
16

Keine der hier vorgeschlagenen Lösungen hat bei mir funktioniert. Dies war insbesondere auf CocoaPods zurückzuführen. Ich habe zuvor Cocoapods 1.3.1 verwendet. Ein einfaches Upgrade auf 1.5.3 hat das Problem nicht sofort behoben.

Die Schritte, denen ich folgte, waren:

  1. Löschen Sie Podfile.lock
  2. Pods-Verzeichnis löschen
  3. Abgeleitete Daten löschen und bereinigen
  4. Beenden Sie Xcode
  5. Aktualisieren Sie CocoaPods auf 1.5.3
  6. Lauf pod install
  7. Arbeitsbereich öffnen und erstellen
Justin
quelle
5
Das Aktualisieren von CocoaPods auf 1.5.3 (sudo gem install cocoapods) und das Ausführen (pod install) reichten aus, um es für mich zum Laufen zu bringen. Vielen Dank!
mikemike396
Ich habe einige der oben genannten Empfehlungen gemacht, aber dies war die einzige, die für mich gelöst wurde. Vielen Dank
Almeida
Dieser hat es auch für mich gelöst. Ich denke, es ist besser als die Legacy-Build-Lösung, da es sich tatsächlich um das Problem kümmert.
MateusK
1
Das hat bei mir funktioniert, aber ich musste auch install! 'cocoapods', :disable_input_output_paths => trueoben in meiner Poddatei hinzufügen. Wenn Sie Ihre Pods nicht aktualisieren möchten, löschen Sie podfile.lock nicht. Alle Pods werden in der aktuellen Version installiert.
DoesData
11

Bevor ich anfange, beachten Sie, dass mein Projekt Karthago als Abhängigkeitsmanager verwendet.

Keine der hier vorhandenen Antworten hat mein Problem gelöst. Was das Problem für mich gelöst hat, war das Folgende.

Zunächst bemerkte ich, dass der Build-Fehler insbesondere auf ein Framework hinwies. Als nächstes habe ich App Target> Build Phases für dieses Framework gefiltert. Ich habe festgestellt, dass dieses Framework sowohl in "Link Binary With Libraries" als auch in "Embed Frameworks" vorhanden ist. Da ich feststellte, dass keines der unter "Frameworks einbetten" aufgeführten Frameworks von Karthago verwaltet wurde, entfernte ich das betreffende Framework aus "Frameworks einbetten". Ich habe dann mein Projekt neu erstellt und alles funktioniert einwandfrei, einschließlich der Funktionalität, die durch das betreffende Framework aktiviert wird.

Palmi
quelle
1
Ich habe PODS benutzt. Das Entfernen von allem aus Embed Frameworks hat funktioniert. Ich putze und ohne Fehler wieder aufgebaut. Die Legacy-Lösung funktioniert ebenfalls, löst jedoch das vorliegende Problem nicht (für alle, die dies lesen). Ich bin auf xcode 10.2, cocoapods-1.6.1.
Nadine Rose
1
Ich benutze Karthago und das hat es für mich behoben!
Devin B
Ich habe auch CocoaPods verwendet. Framework ist als Entwicklungs-Pod verbunden. "Embed Frameworks" ist leer und hat immer noch dieses Problem
Luten
11

Probieren Sie all diese Optionen aus. Jeder dieser 3 Optionen wird mit Sicherheit für Sie funktionieren

Option 1: Remove all files from

Ziel >> Phasen erstellen >> Quellen kompilieren

Ziel >> Phasen erstellen >> Bundle-Ressourcen kopieren

Option 2: Change the build system

Xcode-> Datei-> Projekteinstellungen-> Build-System -> Legacy-Build-System

Option 3: remove and update existing pod

Pod-Cache bereinigen PromisesObjC
Pod-Cache bereinigen PromisesSwift
cd [your_project_dir]
rm -rf Pods /
rm Podfile.lock
Pod-Update

I hope this will help you, Happy coding :-)
Shoaib Bagwan
quelle
11

Schritte:

  1. Gehen Sie zu Xcode-Datei
  2. Klicken Sie auf WorkSpace-Einstellungen
  3. Build-System Als Legacy-Build-System auswählen
Sanjay Mali
quelle
3
In diesem Fall weist Xcode auf ein Problem im Projekt hin. Wenn Sie also auf das ältere Build-System zurückgreifen, wird es vorerst nur ausgeblendet. Xcode meldet diese Art von Problemen absichtlich und es ist am besten, das Problem zu beheben. Weitere Informationen finden Sie unter help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard
Das funktioniert bei mir. Das Ändern des Produktnamens funktioniert nicht. Da mein Produkt mit halbem Ziel-C-Code und schnellem Code gemischt ist. Mein Problem ist "Mehrere Befehle erzeugen schnelles Modul"
wzhang84
9

Das Problem war also, dass ich versehentlich die Info.plist in die Projekteinstellungen -> Build-Phasen -> Bundle-Ressourcen für mein Ziel kopieren aufgenommen hatte.

Austin
quelle
Dies war genau die Lösung für mich, da dieser Fehler beim Versuch auftrat, tflite_camera_example in Xcode 10
zai chang
9

Dieses Problem trat bei mir auf, nachdem ich der App einen zweiten Teil der Fabric-Suite von SDKs hinzugefügt hatte.

Was tatsächlich geschah, war, dass das GoogleUtilies Framework dem Pods-Projekt zweimal hinzugefügt wurde

Zwei Einträge für GoogleUtilities.framework

Dies wäre vor Xcode 10 in Ordnung gewesen, aber Xcode 10 wird sich beschweren, wenn eine Datei zwei Aktionen gegen sie hat (in diesem Fall eine Kopieraktion).

Es ist sicher, das zweite Framework zu entfernen.

Damo
quelle
Das gleiche gilt für mich, aber mit Karthago ziehen Sie alle .frameworks in das Projekt der Bibliotheksabteilung
Ronaldo Albertini
Haben Sie dieses @Damo
Harikarthick K
Ich bin vor dieser Frage, Könnten Sie mir sagen , wie dieses Problem zu beheben, ohne Legacy - Wechsel
Harikarthick K
8

Ich hatte eine Reihe von Multiple commands produceWarnungen - nicht beschränkt auf die Duplizierung von info.plist in einem Ziel. Einschließlich lokalisierter Ressourcen und Zeichenfolgendateien, Header usw.

Lösung: Entfernen Sie alle Duplikate in der Zielmitgliedschaft.

Will Gwo
quelle
Ich hatte diesen Fehler, weil ich ein Überwachungsziel mit einer eigenen infoplist.strings-Datei hatte, die in dasselbe Verzeichnis wie die infoplist.strings-Datei der Haupt-App kopiert wurde. Sie würden beide am selben Ort landen, wenn sie gebaut würden.
Lyck
8

Hier ist eine weitere funktionierende Lösung: (Wenn Sie benutzerdefinierte Pods verwenden)

  • Wählen Sie "Pods" aus der Seitenleiste als Highlights im Screenshot.
  • Klicken Sie auf Build Phase. Erweitern Sie den Abschnitt "Header". Es gibt 3 Optionen: Öffentlich, Privat, Projekt
  • Erweitern Sie Öffentlich und überprüfen Sie, ob doppelte Dateien vorhanden sind. Entfernen Sie es. ERLEDIGT!!

Geben Sie hier die Bildbeschreibung ein

Gajendra K Chauhan
quelle
Diese Antwort sollte auch als Lösung für den Fall angesehen werden, dass der (benutzerdefinierte) Pod das Problem verursacht!
MkaysWork
Sie können auch alle * .plist-Dateien von hier entfernen. Es scheint für benutzerdefinierte Pods zu funktionieren.
Amit Ahire
7

Ich hatte dieses Problem, als ich eine Datei mit demselben Namen in zwei verschiedenen Zielen hatte. Aus irgendeinem Grund war eine dieser Dateien Teil beider Ziele. Im Grunde hatte ich zwei Dateien. Beide Dateien gehörten zu einem Ziel.

Es ist sinnvoll, dass ein Ziel nur einen Dateinamen pro Ziel haben kann. Wenn Sie also das Kontrollkästchen für das Zielmitglied für die Datei deaktivieren, die nicht mit dem Hauptziel zusammenhängt, wurde das Problem behoben.

Charlie Fish
quelle
7

Ich benutze Karthago und Xcode 10.

Meine Lösung ist -> Projekt -> Ziel -> Allgemein ->

Entfernen Sie die mit Karthago hinzugefügten Frameworks aus "Embedded Binaries".

Normalerweise müssen Sie in Build-Phasen ein Skript hinzufügen, um die Architektur für den App Store zu entfernen.

In Xcode 10 scheint das Skript immer aufgerufen zu sein. Die Frameworks werden also an die richtige Stelle kopiert, und Sie müssen sie nicht zur Registerkarte "Allgemein" hinzufügen.

Hinweis: Wenn nicht festgelegt -> in den Build-Einstellungen -> Suchpfade -> Framework-Suchpfade -> Legen Sie den Pfad zu dem mit Karthago hinzugefügten Framework fest. "$ (PROJECT_DIR) / Karthago / Build / iOS"

Raegtime
quelle
7

Es ist erwähnenswert, dass dieser Fehler nach der automatischen Generierung von CoreData-Modellen auftreten kann, bei denen der Codegen nicht auf Manuell / Keine eingestellt ist.

Um dies in Xcode 10 zu korrigieren, doppelklicken Sie auf Ihre xcdatamodeId-Datei, wählen Sie jede Ihrer Entitäten aus und setzen Sie Codegen in Ihrem Datenmodellinspektor unter Klasse auf Manuell / Keine.

Aurelia W.
quelle
Ja! Und machen Sie auch einen "Clean Build Folder".
Dirk
6

Hatte ein ähnliches Problem, aber mit .swiftdoc-Dateien.

Ich habe Erweiterungen und Unit-Test-Ziele im Projekt. Und sie hatten den gleichen "Produktmodulnamen" (PRODUCT_MODULE_NAME in den Build-Einstellungen) wie die Anwendung. Nachdem Sie Namen einzigartig gemacht haben, ist das Problem verschwunden.

Igor Palaguta
quelle
6

Beim Übergang zu Xcode 10 treten Fehler wie auf

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

kann wie folgt gelöst werden:

Gehe zu Xcode->File->Workspace/Project Settings-> Build System -> Legacy Build System.

Noor
quelle
2
In diesem Fall weist Xcode auf ein Problem im Projekt hin. Wenn Sie also auf das ältere Build-System zurückgreifen, wird es vorerst nur ausgeblendet. Xcode meldet diese Art von Problemen absichtlich und es ist am besten, das Problem zu beheben. Weitere Informationen finden Sie unter help.apple.com/xcode/mac/10.0/#/dev14a2fd0c0 .
Rick Ballard
Dieser hat es für mich getan, Sie, mein Herr, sind ein Genie
Samouray
6

Gehen Sie in die Projekterstellungsphase und entfernen Sie info.plist aus den Kompilierungsquellen. Das Problem wird behoben und das Projekt wird wieder aktiv.

Geben Sie hier die Bildbeschreibung ein

Aditya Sharma
quelle
6

Einer meiner CocoaPods war verstopft und verursachte das Problem. Habe ein Pods Update gemacht und es hat gut funktioniert.

Ich glaube, es könnte das LivePerson SDK gewesen sein

Ninjaneer
quelle
für mich musste ich nur 'pod install' machen
Pnar Sbi Wer
6

Mein Problem war, dass Xcode 10 in Mojave ausgeführt wurde und ich versuchte, Unit-Tests auszuführen, die ich vor dem Update auf XCode 10 geschrieben hatte.

In meinem Fall hatte ich dieses Problem beim Ausführen meines TestTargetZiels. Um das zu lösen, musste ich:

  • Löschen Sie eine der Zielabhängigkeiten (in TestTarget > build phases > Target Dependencies).

da ich neben meinem noch zwei andere Ziele hatte TestTargetund beide das gleiche Skript ausführten und zu einem bestimmten Zeitpunkt Dateien erstellten / kopierten.

Und das widersprach dem, was hier in den Build System Release Notes für Xcode 10 erwähnt wurde :

Es ist ein Fehler, wenn eine einzelne Datei im Build von mehr als einem Build-Befehl erstellt wird. Wenn beispielsweise zwei Ziele jeweils dieselbe Ausgabedatei aus einer Shell-Skriptphase deklarieren, zerlegen Sie die Deklaration der Ausgabedatei in ein einzelnes Ziel.

Neues UPDATE nach dem Update von Xcode 10.1 auf 10.2

Ein ähnliches Problem trat erneut auf, nachdem ich auf Xcode 10.2 aktualisiert hatte. Ich habe mehrere Ziele pro Projekt: Target1und Target2, und ich habe dieses Problem gelöst durch:

  • Navigieren zu Edit Scheme > Buildund
  • Entfernen eines der Ziele aus dem Build: Deaktivieren Sie das Kontrollkästchen Target1unter, Testda ich wusste, dass es Target2importiert wurdeTarget1

Auch hier ist zu beachten, Target2dass das Kontrollkästchen unter aktiviert bleibtTest

Samman Bikram Thapa
quelle
5

Suchen und Entfernen Sie doppelte Dateien, die aus mehreren Befehlen erstellt wurden.

Hier sollte eine zusätzliche Info.plistDatei entfernt werden (in meinem Fall war es Contents.json)

error: Multiple commands produce '/Users/uesr/Library/Developer/Xcode/DerivedData/OptimalLive-fxatvygbofczeyhjsawtebkimvwx/Build/Products/Debug-iphoneos/OptimalLive.app/Info.plist'
Roy
quelle
Nervig. Ich weiß, dass es doppelt dieselbe Datei ist, also habe ich mich nie darum gekümmert, dass sie übereinander kopiert wird.
Martin