Warum wird das abgelehnt?! Dies ist ein legitimes Problem. Das Kompilieren dauert jedes Mal 4 Minuten und hat die gesamte Teamproduktivität beeinträchtigt.
Josh
1
Ich bekomme auch dieses Problem.
AJ9
3
Ändern Sie xib / storyboards mit einigen IBDesignable-Dingen?
Aber für mich ist es nicht zu lösen, ich bin mit diesem Problem konfrontiert, auch wenn ich Xcode 8.2 verwende. Sie können es versuchen (Xcode8.2 Beta2 hier herunterladen )
System erstellen • Xcode erstellt nicht das gesamte Ziel neu, wenn nur kleine Änderungen vorgenommen wurden. (28892475)
Alte Antwort:
Dies ist eine Problemumgehung:
Registerkarte "Build Setting" -> "C Language Dialect" -> Ändern Sie es in "Compiler Default".
Der "C Language Dialect" wurde auf "GNU99" anstelle von "Compiler Default" gesetzt. Früher war der Standard GNU99, jetzt aber nicht mehr. Irgendwann hat Xcode die Einstellungen des Bibliotheksprojekts nicht korrekt migriert und wurde daher auf GNU99 gesetzt. Sobald ich es auf GNU99 geändert habe, wurde mein gesamter Code jedes Mal neu kompiliert!
So weit, ist es gut!!! Gib mir eine Stunde und das Kopfgeld gehört dir, wenn es mithält.
Adam Waite
7
Argh es ist zurück, um alles neu zu kompilieren
Adam Waite
1
Ich habe das gleiche Verhalten. Wenn ich die abgeleiteten Daten lösche (oder den Dialekt der C-Sprache ändere), funktioniert dies für ungefähr 10 Builds. Danach fällt es zurück, um alles wieder aufzubauen.
Bluebamboo
1
Xcode 8.2 (Beta 2) funktioniert für 10 Builds und erstellt dann alles von Grund auf neu, aber immer noch besser als das vorherige.
Markus
3
Leider besteht das Problem in Xcode 8.3 Beta 2 weiterhin (zumindest für uns). In unserem Projekt kann keine spürbare Verbesserung gemessen werden.
Kasper Munck
20
Gehen Sie zu Produkt -> Schema -> Schema bearbeiten. Wählen Sie In linker Spalte erstellen und deaktivieren Sie " Implizite Abhängigkeiten suchen ".
Dieses Flag sollte jedoch aktiviert bleiben, wenn Sie das Projekt zum ersten Mal erstellen.
@Josh, verwenden Sie mehrere Projekte in Ihrem Projekt (z. B. Teilprojekt oder enthalten)? Und sind Sie sicher, wenn Sie sich Ihre Build-Ausgabe ansehen, dass sie wirklich alles neu erstellt?
Mobile Ben
3
Es ist ein grundlegender Arbeitsbereich mit Cocoapods und dem Hauptprojekt. CocoaPods bleibt erstellt, aber das Hauptprojekt erstellt jede Datei neu. Beobachten Sie die Build-Ausgabe und die Wiederherstellung aller über 100 Dateien.
Josh
1
Update: Es scheint, dass diese Lösung für einige Builds danach funktioniert, aber auch für die Bereinigung des gesamten Projekts und die Neuerstellung. Beim 2-8. Mal wird jedoch alles neu kompiliert. Irgendwelche Ideen? Mehr als frustrierend.
Josh
Dies funktioniert nicht, zumindest nicht mit einem CocoaPods-Arbeitsbereich. Alles baut sich jedes Mal auf. Super nervig, zumal Apple Jahre hatte, um dieses Problem zu beheben.
Womble
7
Fix für mich war nur das Schließen des Storyboards, ich hatte die Quelldatei mit dem unterstützten Editor geöffnet und die Storyboard-Datei auch geöffnet (Schließen des Storyboards --- da ich keine Änderungen daran vorgenommen habe), um alle unnötigen Kompilierungen zu entfernen
Die größte Verbesserung, die ich erzielen konnte, war die Modularisierung meines Projekts. Spezielle Modularisierung der ORM-Schicht, die in fast jeder anderen Klasse verwendet wird. Durch Verschieben dieses Codes in ein separates Ziel in meinem Projekt und Importieren als Modul konnte ich die Kompilierungszeiten erheblich verbessern. Xcode entscheidet sich nicht mehr dafür, unnötige Dateien neu zu kompilieren, wenn ich einen Build durchführe.
Jetzt verwende ich die Single File Compilation-Methode für schnelle inkrementelle Debug-Builds.
Mit Xcode 9 war ich immer noch ein ständiges Problem. Wie viele von Ihnen arbeite ich an einem großen, schnellen 4 / Cocoapods- Projekt mit vielen Quelldateien und kompiliere jede Datei jedes Mal neu, was ärgerlich ist.
Bisher erhalte ich mit den folgenden Einstellungen die besten Ergebnisse. Ich schlage vor, Sie probieren es aus und sehen, wie es bei Ihnen funktioniert.
Ich habe mit meinem Code einige Dinge bezüglich des Präfix-Headers geändert, die dieses Problem anscheinend behoben haben. Ich weiß nicht, wer den Trick tatsächlich gemacht hat, aber ich werde sie alle in der Hoffnung teilen, dass es jemand anderem da draußen hilft. Wenn Sie keinen Präfix-Header festgelegt haben, ist dies vermutlich nicht das Problem (oder das Problem ist vielfältig).
Entfernen Sie alle Importe aus dem Präfix-Header, bei denen es sich um Dateien aus dem Verzeichnis der erstellten Produkte handelt, damit Sie die Build-Einstellung für dieses Verzeichnis ("Vorkompilierter Header verwendet Dateien aus dem Build-Verzeichnis") in "Nein" ändern können. Stellen Sie sicher, dass es nicht auch indirekt über andere Importe importiert wird.
Entfernen Sie alle Importe aus dem Präfix-Header, die Clang-Module verwenden (Bibliotheken oder Frameworks, deren Header-Verzeichnis eine module.modulemap-Datei enthält, damit Sie Code wie schreiben können @import MyModule). (Für mich waren dies und Schritt 1 ein und dasselbe.)
Setzen Sie die Build-Einstellung für die Freigabe von Präfix-Headern auf "Ja". (Ich denke nicht, dass dies notwendig ist, und es sollte keine Auswirkungen auf mein eigenes Projekt haben. Ich sage dies nur, weil ich es geändert habe, weil ich bereit war, alles zu versuchen. :))
Beenden Sie Xcode und löschen Sie Ihr DerivedData / ModuleCache-Verzeichnis (konfiguriert, wenn ich mich richtig erinnere, unter ~ / Library / Developer).
Wenn dies immer noch nicht funktioniert, können Sie versuchen, weitere Importe aus Ihrem Präfix-Header zu entfernen. Es könnte etwas auslösen ...
Ich habe diesen Wert ebenfalls hinzugefügt. Die Erstellungszeit ist schneller, aber der inkrementelle Build wurde nicht gelöst. Ich habe den Swift Compiler - Codegenerierung / Debugging auf schnelle, vollständige Moduloptimierung geändert ... ist das bisher beste Ergebnis
Antonio Junior
Ich kann nicht einmal User Defined finden)
David Seek
2
@ DavidSeek ist ganz unten in den Build-Einstellungen
Überprüfen Sie Ihren gesamten Code in @IBDesignableDirektiven in meinem speziellen Xcode-Build-Projekt die ganze Zeit, da ich einige Ansichten in meinem Storyboard hatte, die diese @IBDesignableAttribute enthielten . Zweitens habe ich mein Storyboard auch in einem separaten Fenster (nicht auf einer Registerkarte) geöffnet, in dem mein Xcode für alle Simulatoren für immer erstellt wird.
Wir verwenden eine ganze Reihe von @IBDesignableRichtlinien ... gibt es etwas Besonderes, nach dem wir suchen sollten?
Stan
Ich denke, dass es möglich ist, sie zu finden, indem man sie einzeln ausschließt und das Ergebnis überprüft. In meinem Fall waren es nur zwei von @IBDesignable-Direktiven im gesamten Projekt.
ua24
2
Madhuri Mane hat diesbezüglich vollkommen recht. Um ein wenig mehr Klarheit zu schaffen, sind einige wichtige Punkte zu beachten:
Dies gilt NUR, wenn Sie implizite Abhängigkeiten von Bibliotheken / Frameworks haben, auf die sich Ihr Ziel stützt.
Wenn "Implizite Abhängigkeiten suchen" deaktiviert ist:
Ergebnis: Die Bibliothek wird vor dem Erstellen des Anwendungsziels nicht erstellt. Das Anwendungsziel kann nicht erstellt werden.
Fix: Um sicherzustellen, dass das zweite Szenario nicht auftritt, müssen Sie die erforderlichen Ziele zur Zielliste hinzufügen und korrekt sortieren.
Wenn sich Ihr gesamtes Projekt in einem Ziel befindet und das Kompilieren 4 Minuten dauert, können Sie nicht viel dagegen tun, außer es in Frameworks aufzuteilen, um die oben genannten Vorteile zu nutzen oder herauszufinden, wo die Kompilierung nachlässt. Wenn Sie so etwas wie PaintCode verwenden oder große Teile des UIKit-Codes schnell haben, ändern Sie ihn in Objective-c, der viel schneller kompiliert wird
Gehen Sie zu den Build-Einstellungen Ihres Ziels und setzen Sie Defines Moduleauf Yes.
Ich habe für ein paar Builds für mich gearbeitet, zu früh, um zu behaupten, dass dies eine endgültige Problemumgehung ist, aber zumindest versuchen wir es.
Bitte gehen Sie zur Build-Einstellung des Projekts und ändern Sie den "C Language Dialect".
Der "C Language Dialect" wird beim Aktualisieren der xcode-Version auf "GNU99" anstelle von "Compiler Default" gesetzt. Irgendwann hat Xcode die Einstellungen des Bibliotheksprojekts nicht korrekt migriert und wurde daher auf GNU99 gesetzt. Dies wird das Problem lösen
Wenn Sie Änderungen an der Swift-Datei vorgenommen haben, starten Sie die Erstellung der App, gehen Sie zur letzten Registerkarte und klicken Sie auf das Erstellungsprotokoll. Während der Phase "Abhängigkeiten prüfen" beenden Sie die Erstellung und führen Sie sie erneut aus. Beim zweiten Durchlauf sollten nur die von Ihnen geänderten Dateien erstellt werden. Wenn es richtig gemacht wurde, habe ich festgestellt, dass es jedes Mal funktioniert. Es müssen keine Änderungen an den Projekteinstellungen vorgenommen werden.
Dies scheint ein Fehler in Xcode zu sein.
Wenn Sie sehen, dass die App einen vollständigen Build ausführt, stoppen Sie den Build und versuchen Sie diesen Trick erneut.
Wenn Sie keine Änderungen am Code vorgenommen haben, können Sie CMD + STRG + R ausführen, ohne die App zu erstellen, die den Debugger anfügt. Erstellt keine App, kann aber unnötige Zeit sparen.
Dies funktioniert wirklich, aber manchmal schlägt XCode mit Code 1 fehl und Sie müssen einen sauberen Build erstellen. Es ist ein Albtraum
Antonio Junior
Es gibt andere Szenarien, in denen Xcode immer vollständig erstellt wird. Ich habe festgestellt, dass beim Ändern der im Bridging-Header enthaltenen .h-Datei alle Swift-Dateien neu erstellt werden. Möglicherweise gibt es andere Szenarien, die nicht mit dem Xcode-Fehler zusammenhängen.
Vlad
Es gibt Szenarien, in denen die einzige Änderung darin besteht, eine Funktion umzubenennen oder eine neue Eigenschaft zu einer vorhandenen Klasse / Struktur hinzuzufügen, die zu einer vollständigen Neuerstellung führt.
Antonio Junior
Beziehen Sie sich auf diese Frage / Antwort, dieser Thread ist ein Duplikat davon: Haben Sie eine Lösung, die besser funktioniert: stackoverflow.com/questions/39456223/…
Vlad
1
Das Problem von meiner Seite wurde behoben, indem das Kontrollkästchen auf die Lösung "Implizite Abhängigkeiten suchen" angewendet wurde.
ABER denken Sie daran, wenn Sie Cocoapods verwenden, diese Einstellungen auch auf Ihr Pod-Projekt anzuwenden, indem Sie es auswählen
Produkt -> Schema -> Pods- "yourProjectName"
gelten auch in:
Produkt -> Schema -> "IhrProjektname"
Es hilft mir, also hoffe ich, dass dieser Hinweis jemand anderem hilft.
Versuchen Sie Folgendes: 1. Navigieren Sie zu Projekt. 2. Klicken Sie auf Build Settings. 3. Überprüfen Sie, ob OptimizationLevel zum Debuggen auf None festgelegt ist. 4. Klicken Sie auf Benutzerdefinierte Einstellung hinzufügen. 5. Setzen Sie SWIFT_WHOLE_MODULE_OPTIMIZATION auf YES.
nichts zu arbeiten kompiliere es noch, wenn ich einen einzelnen Brief schreibe.
Chandni
-2
Um die Kompilierungszeit von xcode zu verkürzen, kann IRAMDISK (Virtual Memory Disk) verwendet werden. Sehr nützliche und effektive Mittel, um die Kompilierungszeit zu verkürzen.
Kann auch verwendet werden, um häufig verwendete Anwendungen zu beschleunigen.
Antworten:
Update 2017/1/2
Dieses Problem wurde in Xcode 8.2.1 (für mein Projekt) nicht behoben.
Wie man überlebt?
Update 17.12.2016
Dieses Problem wurde bei Xcode 8.2 nicht behoben.
Update 12.12.2016
Atom zum Codieren und Befehlszeile zum Erstellen und Debuggen ist jetzt meine Wahl. Hoffe, Apple wird diesen legitimen Fehler bald beheben.
Update 2016/12/04
Dieses Problem scheint mit Xcode 8.2 (Beta 2) behoben zu sein .
Aber für mich ist es nicht zu lösen, ich bin mit diesem Problem konfrontiert, auch wenn ich Xcode 8.2 verwende. Sie können es versuchen (Xcode8.2 Beta2 hier herunterladen )
Alte Antwort: Dies ist eine Problemumgehung:
Registerkarte "Build Setting" -> "C Language Dialect" -> Ändern Sie es in "Compiler Default".
Als Referenz :
quelle
Gehen Sie zu Produkt -> Schema -> Schema bearbeiten. Wählen Sie In linker Spalte erstellen und deaktivieren Sie " Implizite Abhängigkeiten suchen ".
Dieses Flag sollte jedoch aktiviert bleiben, wenn Sie das Projekt zum ersten Mal erstellen.
quelle
Fix für mich war nur das Schließen des Storyboards, ich hatte die Quelldatei mit dem unterstützten Editor geöffnet und die Storyboard-Datei auch geöffnet (Schließen des Storyboards --- da ich keine Änderungen daran vorgenommen habe), um alle unnötigen Kompilierungen zu entfernen
quelle
AKTUALISIERT
Die größte Verbesserung, die ich erzielen konnte, war die Modularisierung meines Projekts. Spezielle Modularisierung der ORM-Schicht, die in fast jeder anderen Klasse verwendet wird. Durch Verschieben dieses Codes in ein separates Ziel in meinem Projekt und Importieren als Modul konnte ich die Kompilierungszeiten erheblich verbessern. Xcode entscheidet sich nicht mehr dafür, unnötige Dateien neu zu kompilieren, wenn ich einen Build durchführe.
Jetzt verwende ich die Single File Compilation-Methode für schnelle inkrementelle Debug-Builds.
Es gibt einige andere gute Vorschläge in diesem Link, einschließlich Code-Refactoring, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5
ALT
Mit Xcode 9 war ich immer noch ein ständiges Problem. Wie viele von Ihnen arbeite ich an einem großen, schnellen 4 / Cocoapods- Projekt mit vielen Quelldateien und kompiliere jede Datei jedes Mal neu, was ärgerlich ist.
Bisher erhalte ich mit den folgenden Einstellungen die besten Ergebnisse. Ich schlage vor, Sie probieren es aus und sehen, wie es bei Ihnen funktioniert.
Benutzerdefinierte benutzerdefinierte Build-Einstellungen hinzugefügt,
Hinweis: Ich habe nicht die benutzerdefinierte Einstellung für die Optimierung des gesamten Moduls.
quelle
Ich habe mit meinem Code einige Dinge bezüglich des Präfix-Headers geändert, die dieses Problem anscheinend behoben haben. Ich weiß nicht, wer den Trick tatsächlich gemacht hat, aber ich werde sie alle in der Hoffnung teilen, dass es jemand anderem da draußen hilft. Wenn Sie keinen Präfix-Header festgelegt haben, ist dies vermutlich nicht das Problem (oder das Problem ist vielfältig).
@import MyModule
). (Für mich waren dies und Schritt 1 ein und dasselbe.)Wenn dies immer noch nicht funktioniert, können Sie versuchen, weitere Importe aus Ihrem Präfix-Header zu entfernen. Es könnte etwas auslösen ...
quelle
Sieht so aus, als würden sie laut https://forums.developer.apple.com/thread/62737 aktiv daran arbeiten, aber eine Problemumgehung ist hinzuzufügen
HEADERMAP_USES_VFS = YES
unter den Build-Einstellungen Ihres Ziels (Projekt -> Ziel -> Build-Einstellungen -> Benutzerdefiniert).
Diese Lösung hat heute jedes Mal für mich funktioniert, nachdem im letzten Monat keine andere Lösung konsequent funktioniert hat.
BEARBEITEN: Manchmal wird immer noch alles neu kompiliert, obwohl es mit dieser definierten Einstellung viel seltener zu tun scheint.
quelle
Überprüfen Sie Ihren gesamten Code in
@IBDesignable
Direktiven in meinem speziellen Xcode-Build-Projekt die ganze Zeit, da ich einige Ansichten in meinem Storyboard hatte, die diese@IBDesignable
Attribute enthielten . Zweitens habe ich mein Storyboard auch in einem separaten Fenster (nicht auf einer Registerkarte) geöffnet, in dem mein Xcode für alle Simulatoren für immer erstellt wird.quelle
@IBDesignable
Richtlinien ... gibt es etwas Besonderes, nach dem wir suchen sollten?Madhuri Mane hat diesbezüglich vollkommen recht. Um ein wenig mehr Klarheit zu schaffen, sind einige wichtige Punkte zu beachten:
Dies gilt NUR, wenn Sie implizite Abhängigkeiten von Bibliotheken / Frameworks haben, auf die sich Ihr Ziel stützt.
Wenn "Implizite Abhängigkeiten suchen" deaktiviert ist:
Quelle und weiterführende Literatur zum Thema: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action
Wenn sich Ihr gesamtes Projekt in einem Ziel befindet und das Kompilieren 4 Minuten dauert, können Sie nicht viel dagegen tun, außer es in Frameworks aufzuteilen, um die oben genannten Vorteile zu nutzen oder herauszufinden, wo die Kompilierung nachlässt. Wenn Sie so etwas wie PaintCode verwenden oder große Teile des UIKit-Codes schnell haben, ändern Sie ihn in Objective-c, der viel schneller kompiliert wird
quelle
Gehen Sie zu den Build-Einstellungen Ihres Ziels und setzen Sie
Defines Module
aufYes
.Ich habe für ein paar Builds für mich gearbeitet, zu früh, um zu behaupten, dass dies eine endgültige Problemumgehung ist, aber zumindest versuchen wir es.
quelle
Apple hat gestern (14. November) eine neue Beta-Version von Xcode veröffentlicht.
Xcode 8.2 beta 2
Und dieses Problem wurde im Versionshinweis als behoben markiert.
Es funktioniert für mich. Die Build-Geschwindigkeit kam wie gewohnt zurück. Jeder, der mit diesem Problem konfrontiert ist, sollte es versuchen!
https://developer.apple.com/download/
quelle
Bitte gehen Sie zur Build-Einstellung des Projekts und ändern Sie den "C Language Dialect".
Der "C Language Dialect" wird beim Aktualisieren der xcode-Version auf "GNU99" anstelle von "Compiler Default" gesetzt. Irgendwann hat Xcode die Einstellungen des Bibliotheksprojekts nicht korrekt migriert und wurde daher auf GNU99 gesetzt. Dies wird das Problem lösen
quelle
Wenn Sie Änderungen an der Swift-Datei vorgenommen haben, starten Sie die Erstellung der App, gehen Sie zur letzten Registerkarte und klicken Sie auf das Erstellungsprotokoll. Während der Phase "Abhängigkeiten prüfen" beenden Sie die Erstellung und führen Sie sie erneut aus. Beim zweiten Durchlauf sollten nur die von Ihnen geänderten Dateien erstellt werden. Wenn es richtig gemacht wurde, habe ich festgestellt, dass es jedes Mal funktioniert. Es müssen keine Änderungen an den Projekteinstellungen vorgenommen werden.
Dies scheint ein Fehler in Xcode zu sein.
Wenn Sie sehen, dass die App einen vollständigen Build ausführt, stoppen Sie den Build und versuchen Sie diesen Trick erneut.
Wenn Sie keine Änderungen am Code vorgenommen haben, können Sie CMD + STRG + R ausführen, ohne die App zu erstellen, die den Debugger anfügt. Erstellt keine App, kann aber unnötige Zeit sparen.
quelle
Das Problem von meiner Seite wurde behoben, indem das Kontrollkästchen auf die Lösung "Implizite Abhängigkeiten suchen" angewendet wurde.
ABER denken Sie daran, wenn Sie Cocoapods verwenden, diese Einstellungen auch auf Ihr Pod-Projekt anzuwenden, indem Sie es auswählen
Produkt -> Schema -> Pods- "yourProjectName"
gelten auch in:
Produkt -> Schema -> "IhrProjektname"
Es hilft mir, also hoffe ich, dass dieser Hinweis jemand anderem hilft.
Vielen Dank
quelle
Versuchen Sie Folgendes: 1. Navigieren Sie zu Projekt. 2. Klicken Sie auf Build Settings. 3. Überprüfen Sie, ob OptimizationLevel zum Debuggen auf None festgelegt ist. 4. Klicken Sie auf Benutzerdefinierte Einstellung hinzufügen. 5. Setzen Sie SWIFT_WHOLE_MODULE_OPTIMIZATION auf YES.
quelle
Um die Kompilierungszeit von xcode zu verkürzen, kann IRAMDISK (Virtual Memory Disk) verwendet werden. Sehr nützliche und effektive Mittel, um die Kompilierungszeit zu verkürzen.
Kann auch verwendet werden, um häufig verwendete Anwendungen zu beschleunigen.
Informationen zum Herunterladen und Verwenden finden Sie unter folgendem Link: http://iramdisk.findmysoft.com/mac/
quelle