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.
quelle
Antworten:
Das Problem kann aufgrund mehrerer Plist- oder anderer Dateien in App- auftreten.
Lösung -> Ziel öffnen -> Phasen erstellen> Bundle-Ressourcen kopieren und
info.plist
von dort entfernen .Hinweis: Wenn Sie auch eine Uhren-App entwickelt haben, müssen Sie die Liste auch von der Uhr und der Uhrenerweiterung entfernen.
quelle
info.plist
Datei in einer meiner privaten CocoaPods-Abhängigkeiten, die aufgeräumt wurde, weil sie mit dersource_files
Eigenschaft der Podspec übereinstimmte . Ich brauchte dieinfo.plist
Datei in meinem Modul nicht, also habe ich sie einfach gelöscht.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:
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!
quelle
Gehen Sie zu Xcode -> Datei -> Arbeitsbereichseinstellungen. Sie finden ein Popup wie.
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 :)
quelle
Versuchen Sie dies auch. Xcode-> Datei-> Projekteinstellungen-> Build-System -> Legacy-Build-System.
quelle
Wenn Sie dies von dem
Ditto
Befehl erhalten, der mehrere Instanzen mit demselben Namen erstellt (NICHT das'copy files' build phase
), müssen Sie möglicherweise das ändernProduct Module Name
.Build Settings
Product Module Name
Wir haben ein Überwachungsziel und einige Benachrichtigungsziele in unserer App, daher habe ich Dinge wie
Extension
das Ende des Modulnamens eingefügt.Ich habe diese Lösung ursprünglich hier gefunden: https://forums.developer.apple.com/thread/103913
quelle
All
rechts von der Stelle auswählen, nach der Sie suchenProduct Module Name
, damit diese Build-Konfiguration angezeigt wird.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:
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.
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".
quelle
Beim Überprüfen des Build-Protokolls wurde eine Warnung angezeigt:
Wenn dies Ihr Fall ist, gehen Sie einfach zu Ihrem Ziel:
info.plist
.quelle
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
quelle
Versuchen Sie dies. Es funktioniert:
Gehen Sie in Xcode zu Datei-> Projekt- / Arbeitsbereichseinstellungen.
Ändern Sie das Build-System in Legacy Build-System.
quelle
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.xcdatamodeld
Datei 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.Die Einstellungen sind:
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 :
.xcdatamodeld
Datei).Lösung 2 - Core Data Magic für Anfänger
Hier gehen Sie auf dem neueren Weg All-In.
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.
(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.)
quelle
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
quelle
In meinem Fall hat PDFGenerator eine info.plist-Datei erstellt, ich habe sie gerade gelöscht.
quelle
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.
quelle
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:
pod install
quelle
install! 'cocoapods', :disable_input_output_paths => true
oben 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.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.
quelle
Probieren Sie all diese Optionen aus. Jeder dieser 3 Optionen wird mit Sicherheit für Sie funktionieren
quelle
Schritte:
quelle
Das Problem war also, dass ich versehentlich die Info.plist in die Projekteinstellungen -> Build-Phasen -> Bundle-Ressourcen für mein Ziel kopieren aufgenommen hatte.
quelle
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
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.
quelle
Ich hatte eine Reihe von
Multiple commands produce
Warnungen - 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.
quelle
Hier ist eine weitere funktionierende Lösung: (Wenn Sie benutzerdefinierte Pods verwenden)
quelle
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.
quelle
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"
quelle
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.
quelle
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.
quelle
Beim Übergang zu Xcode 10 treten Fehler wie auf
kann wie folgt gelöst werden:
Gehe zu
Xcode->File->Workspace/Project Settings-> Build System -> Legacy Build System
.quelle
Gehen Sie in die Projekterstellungsphase und entfernen Sie info.plist aus den Kompilierungsquellen. Das Problem wird behoben und das Projekt wird wieder aktiv.
quelle
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
quelle
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
TestTarget
Ziels. Um das zu lösen, musste ich:TestTarget > build phases > Target Dependencies
).da ich neben meinem noch zwei andere Ziele hatte
TestTarget
und 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 :
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:
Target1
undTarget2
, und ich habe dieses Problem gelöst durch:Edit Scheme > Build
undTarget1
unter,Test
da ich wusste, dass esTarget2
importiert wurdeTarget1
Auch hier ist zu beachten,
Target2
dass das Kontrollkästchen unter aktiviert bleibtTest
quelle
Suchen und Entfernen Sie doppelte Dateien, die aus mehreren Befehlen erstellt wurden.
Hier sollte eine zusätzliche
Info.plist
Datei entfernt werden (in meinem Fall war esContents.json
)quelle