Ich versuche beim Kompilieren mit Xcode 10 auf das neue Build-System zu wechseln. Es wird jedoch der folgende Fehler angezeigt:
Cycle details:
→ Target 'project' : LinkStoryboards
Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'
Target 'project' : ValidateEmbeddedBinary /Users/project/Xcode/DerivedData/project-hgqvaddkhmzxfkaycbicisabeakv/Build/Products/Debug-iphoneos/project.app/PlugIns/stickers.appex
Target 'project' has process command with input '/Users/project/Resources/Info.plist'
Target 'project' has compile command with input '/Users/project/Commons/Components/ScreenshotSharing/ViewController/AppShare.storyboard'
Selbst nach dem Entfernen der Problemdatei erhalte ich dasselbe für ein anderes xib / Storyboard. Wie kann ich diesen Fehler beheben, ohne zum alten Build-System zurückzukehren?
xcode10
compile-time
build-system
Sahil Kapoor
quelle
quelle
Antworten:
Führen Sie die folgenden Schritte aus, um Probleme mit dem Xcode 10-Buildsystem zu beheben:
Das Build-Problem mit dem neuen Xcode wird behoben.
Wenn Sie mit dem neuen Build-System arbeiten möchten, finden Sie die Hilfe zur Fehlerbehebung auf dieser Apple Xcode-Hilfeseite .
quelle
Ich hatte dieses Problem mit Cocoapods. Die Lösung bestand darin, den Build-Ordner zu bereinigen, alle Pods neu zu installieren und dann die App neu zu erstellen. Das Problem löste sich auf diese Weise von selbst.
quelle
Ich habe mein Problem behoben, indem ich die Erstellungsphase "Bundle-Ressourcen kopieren" vor alle Erstellungsphasen "Dateien kopieren" und "Binär mit Bibliotheken verknüpfen" verschoben habe
quelle
Das neue Build-System von Xcode 10 erkennt Abhängigkeitszyklen in Ihrem Build und bietet Diagnosen, mit denen Sie diese beheben können. Das Korrigieren dieser Abhängigkeitszyklen verbessert die Zuverlässigkeit Ihres Builds, sodass die richtigen Produkte konsistent produziert werden (Zyklen sind eine mögliche Ursache dafür, dass Ihre abgeleiteten Daten gelöscht werden müssen). Es verbessert auch Ihre inkrementellen Erstellungszeiten, da Zyklen im Build dazu führen, dass etwas in Ihrem Build-Diagramm bei jedem Build immer veraltet ist, sodass die Neuerstellung des Builds bei jedem Build unnötig funktioniert.
In der Xcode-Hilfe finden Sie eine Dokumentation zum Auflösen einiger gängiger Arten von Abhängigkeitszyklen: https://help.apple.com/xcode/mac/current/#/dev621201fb0
Trotzdem sieht diese Zyklusdiagnose etwas seltsam aus. Es hört sich so an, als ob Sie es lösen konnten, indem Sie Ihre Build-Phasen neu arrangierten, aber ich glaube nicht, dass die Diagnose das Problem wirklich erklärt hat. Wenn es Ihnen nichts ausmacht, wäre ein Fehlerbericht über die Verbesserung dieser Diagnose für diesen speziellen Fall sehr willkommen. Sie können eine unter https://bugreport.apple.com einreichen . Bitte geben Sie alle Details zu Ihrem Projekt an, die Sie für relevant halten. Ein Beispielprojekt, das das Problem reproduziert, ist ideal. Wenn Sie dies jedoch nicht anhängen können, sind die Diagnose und eine Vorstellung von der Projektstruktur weiterhin hilfreich.
quelle
Ich hatte dieses Problem mit Cocoapods und fand eine vorübergehende Problemumgehung:
sudo gem update cocoapods
rm -rf ~/Library/Developer/Xcode/DerivedData/*
pod install
Quelle hier und ich bin auf Xcode 10 Beta 4.
EDIT : jetzt auf Xcode 10.0 und immer noch relevant.
quelle
Clean Build Folder
(und das Beenden von Xcode kann ebenfalls hilfreich sein), bevor Sie die Schritte2.
und ausführen3.
.Ich konnte dies endlich beheben, indem ich das
Embed App Extensions
SkriptBuild Phases
des Hauptziels an die letzte Position verschob.quelle
Ich hatte ein ähnliches Problem mit einer gemischten Interaktion zwischen Swift, Objective-C und CoreData : In meinem Projekt (geschrieben in Swift) habe ich auch die automatisch generierten Swift-Klassen von Core Data verwendet.
Aber irgendwann brauchte ich eine Objective C-Klasse mit öffentlichen Eigenschaften (definiert in ihrem Header-Gegenstück), die auf die Kerndatenentitäten verweisen.
Sobald ich das CoreData-Modell geändert habe, hat XCode versucht, die Klassen neu zu erstellen, und ich wurde mit dem angegebenen Zykluserstellungsfehler aufgehängt.
Nach einem ersten Moment der Verzweiflung stellte ich fest, dass die Lösung recht einfach war, da ich in meinem Projekt keine Kompilierungsheaderphasen hatte, um die Reihenfolge zu ändern:
In der habe
myObjCClass.h
ich die gemeinsam genutzte Swift-Header-Importanweisung entfernt und durch eine@class
Direktive geändert :und ich habe die
#import "ProjectName-Swift.h"
Anweisung in diemyObjCClass.m
Klassendefinitionsdatei verschoben .Und es machte sich keine Sorgen.
quelle
Tatsächlich müssen Sie nur auf die Eingabeaufforderung von Xcode achten
This usually can be resolved by moving the target's Headers build phase before Compile Sources
, und dann können Sie es tun.Als ich auf dieses Problem stieß, forderte mich Xcode auf:
:-1: Cycle inside XXXX; building could produce unreliable results. This usually can be resolved by moving the target's Headers build phase before Compile Sources. Cycle details: → Target 'XXXX': LinkStoryboards ○ Target 'XXXX: Ditto Path/XXXX-Swift.h /Path/XXXX-Swift.h ○ Target 'XXXX has compile command for Swift source files ○ That command depends on command in Target 'XXXX: script phase “Run Script”
Ich habe nur eines getan und das Problem perfekt gelöst:
Wählen Sie
Target
und dann auswählenBuild Phase
, um dieRun Script
nach vorne zu verschiebenCompile Sources
.Ausführen, erfolgreich kompiliert.
Das Prinzip ist einfach, ändern Sie einfach die Kompilierungsreihenfolge.
Xcode 10.2 & Swift 5
quelle
Ich hatte das gleiche Problem: Unten war der Fehler
Ich habe es mit den folgenden Schritten gelöst:
1). Gehen Sie im Pods-MyAppName-Projekt zum Ziel RxCocoa
2) Gehen Sie, um Phasen zu erstellen
3) Ziehen Sie die Header-Phase und verschieben Sie sie über die Build-Phase "Quellen vervollständigen".
Dies hat mein Problem behoben. Ich hoffe es hilft!
quelle
In dem Ziel ist
Scheme
, finden Sie das EtikettBuild
, und sicherzustellen , dassFind Implicit Dependencies
nicht geprüft wird. Diese Schritte können funktionieren.quelle
Meine Lösung bestand einfach darin, den Build-Ordner zu bereinigen und dann neu zu erstellen.
quelle
Mein Problem hatte mit einer zyklischen Abhängigkeit zwischen meinem schnellen Bridging-Header und meinen objektiven c-Dateien zu tun.
In meinen Ziel-C-Header-Dateien hatte ich eine
#import "...-swift.h"
Datei und in einigen meiner schnellen Dateien habe ich diese Dateien mit diesem Import aufgenommen und damit eine zyklische Abhängigkeit verursacht.Dies ist der StackOverflow, der mich dazu gebracht hat, die Lösung zu finden:
Ziel C, Problem der schnellen Interoperabilität aufgrund zirkulärer Abhängigkeit
So verhindern Sie Zirkelverweise, wenn der Swift-Bridging-Header eine Datei importiert, die Hopscotch-Swift.h selbst importiert
BEARBEITEN:
Ich habe die oben genannten Dateien schnell konvertiert und dies hat mein Problem gelöst.
quelle
Es scheint, dass Sie die Reihenfolge der Erstellungsphasen innerhalb Ihrer Pods-Ziele ändern müssen. Für mich hat es funktioniert, Header über den Rest zu bewegen. Sie können dies in Ihrem Podfile automatisieren:
quelle
Gleiches Problem
Version 10.0 beta 3 (10L201y)
und ich wollte das New Build System haben .Problem ist deaktiviert
Enable Modules (C and Objective-C)
im
Build Settings -> Apple Clang - Language - Modules
Nach dem Aktivieren (auf YES gesetzt) wurde der Fehler behoben.
quelle
Beim Versuch, mein Projekt auf Xcode 10 zu archivieren, ist ein ähnliches Problem aufgetreten. Hier ist der Detailtext:
Fest es durch das Setzen
$(USER)
inmytarget -> Build Settings -> Deployment -> Install Owner
quelle
Kerndatei
Ich hatte das gleiche Problem und den gleichen Fehler, aber meiner ist aufgetreten, als ich für meine Entität "NSManagedObject-Unterklasse erstellt" habe und dieser Fehler aufgetreten ist. Wenn Sie also der Meinung sind, dass Ihr Fehler in Bezug auf Core Data mit meinem identisch ist, können Sie wahrscheinlich (und haben mir geholfen) Folgendes tun:
Ich denke, weil Xcode in anderen Szenarien automatisch eine Datei erstellt und wenn wir eine andere erstellen, verursacht dies einen Konflikt.
quelle
Xcode 10.2.1 / Unit Test Target. Mein Unit-Test-Ziel ist unabhängig vom Host-Ziel, um die Bauzeit zu verbessern. Lösen Sie es, indem Sie
Find Implicit Dependencies
inScheme
-Build
Optionen deaktivieren , da ich alle Abhängigkeiten inBuild Settings
- spezifiziereCompile Sources
.quelle
Möglicherweise können Sie dies hier beheben:
Datei -> Arbeitsbereichseinstellungen -> Build-System: Neues Build-System
quelle
Ich habe Dinge von dieser Seite ausprobiert, aber das einzige, was mir geholfen hat, war, dass ich eine Kopie des Ziels erstellt und den Namen der Kopie aktualisiert (das Kopiersuffix entfernt), die alte gelöscht und anschließend die Pod-Installation durchgeführt habe.
quelle
Ich hatte dieses Problem, nachdem ich Xcode auf Version 11.4 aktualisiert hatte. Ein Downgrade auf 11.2.1 hat das Problem behoben.
quelle
Xcode: 11.3.1 Ziel: XCUITest-Ziel
Führen Sie den Befehl aus, um den Build-Ordner zu bereinigen: rm -rf ~ / Library / Developer / Xcode / DerivedData / *
Arbeitsbereichseinstellungen ändern: Wählen Sie Legacy Build System
quelle
Ich habe dieses Problem gelöst, indem ich das "Run Script" an den Anfang der Build-Phasen verschoben habe.
quelle
Die folgenden zwei Optionen haben bei mir funktioniert: Datei-> Projekt- / Arbeitsbereichseinstellungen.
1, Ändern Sie das Build-System unter Datei-> Projekteinstellungen in "Legacy-Build-System"
2, Schema bearbeiten und im Abschnitt "Erstellen" die Option "Build parallelisieren" auswählen.
quelle
Wählen Sie im Projektbereich auf der LHS für Ihre Build-Produkte diese nicht in der Liste für die Zielmitgliedschaft im RHS-Bereich aus.
quelle