Xcode bleibt bei der Indizierung hängen

116

Ein Projekt, an dem ich seit 2 Monaten arbeite, hat ohne Grund aufgehört zu arbeiten, weil Xcode bei "Indexierung" hängen geblieben ist. Ich kann das Projekt nicht mehr erstellen. Wenn ich versuche zu bauen, friert Xcode ein und ich muss das Beenden erzwingen. Dies geschieht nur bei diesem Projekt.

Ich habe versucht, alle abgeleiteten Daten zu bereinigen, aber es hat nicht geholfen.

Ich benutze Xcode 4.5.2.

Irgendwelche Ideen?

tomDev
quelle
Ist das Projekt mit einer Art Versionskontrolle verbunden? Wenn es mit einem Repository verknüpft ist, überprüft es regelmäßig den Quellstatus und indiziert anschließend die Dateien. Wenn Ihr Projekt groß ist, kann dies dazu führen, dass es bei der Indizierung hängen bleibt.
Gibertoni
Das Projekt ist nicht so groß. Heute habe ich das Framework GameKit hinzugefügt, aber es hat den ganzen Tag großartig funktioniert. Als ich das Game Center fertig einrichten wollte, begann das Problem. Ich sage "Indizierung | 3 von 4 Dateien verarbeitet". Manchmal "0 von 1 Datei", manchmal 83 von 84 Dateien ... Ich denke, ich muss ein neues Projekt erstellen und so ziemlich alles kopieren und einfügen. Will ein paar Stunden ...
TomDev
2
Apple und seine Großartigkeit haben das gleiche Problem auf xcode 5
Roma-MT
2
Ich bin mit diesem Problem auf Xcode 9.1 konfrontiert. Nach 4 Jahren haben sie immer noch das gleiche Problem: |
Sabri Meviş
3
Xcode 10 GM auch
QED

Antworten:

163
  1. Öffnen Sie Ihren Projektordner.
  2. Suchen Sie die Datei ProjectName.xcodeproj.
  3. Klicken Sie mit der rechten Maustaste auf Kopieren und an einem sicheren Ort einfügen.
  4. Klicken Sie mit der rechten Maustaste auf Paketinhalt anzeigen.
  5. Suchen Sie die Datei project.xcworkspace und löschen Sie diese Datei.
  6. Öffnen Sie Ihr Projekt erneut und bereinigen und erstellen Sie es neu.

Wenn Ihr Problem nicht behoben ist, ersetzen Sie die Datei durch Ihre Sicherungsdatei.

Pratik Mistry
quelle
1
Die Datei project.xcworkspace kann in der Datei * .xcodeproj auf xcode 6.2 nicht gefunden werden. Die Antwort von @ aleksandar-vacic hat bei mir funktioniert.
Kie
xcode scheint immer noch beim "Indizieren | Warten auf xcodebuild" hängen zu bleiben, aber es wird erfolgreich erstellt, wenn ich auf "Play" drücke, also ist das etwas.
ChiliNUT
3
Könnten Sie näher erläutern, wofür diese Datei bestimmt ist und wie sie mit dem vorliegenden Problem zusammenhängt?
de.
@marlonpya Ich denke, Sie arbeiten mit Cocoapods. In diesem Fall ist die Arbeitsbereichsdatei getrennt von der, über die ich spreche. Hier spreche ich über die Datei in der .project-Datei. Ich hoffe, dies hilft, aber führen Sie immer ein Backup durch, bevor Sie Änderungen an Projektdateien oder Arbeitsbereichsdateien vornehmen.
Pratik Mistry
Befolgen Sie bei der Verwendung von Cocoapods die gleichen Anweisungen und öffnen Sie die .xcworkspace-Datei des Stammordners
Leap Hawk
70
  1. Schließen Sie das Projekt über Xcode
  2. Öffnen Sie Xcode Organizer und suchen Sie das problematische Projekt
  3. Löschen Sie den Ordner "Abgeleitete Daten" im Organizer
  4. Xcode schließen / erneut öffnen

Das Nuking abgeleiteter Daten ist das erste, was Sie in allen Fällen von Xcode-Fehlverhalten versuchen sollten

Aleksandar Vacić
quelle
9
Beachten Sie, dass Sie in Xcode 6.4 anstelle von Organizer zu Fenster → Projekte wechseln sollten.
Kennytm
Viel einfachere Lösung als die akzeptierte Antwort, danke!
Tim
8
Abgeleitete Daten befinden sich in ~ / Library / Developer / Xcode / DerivedData / auf meinem Computer.
Suragch
23

Ich hatte genau dieses Problem, es wurde durch ein Array-Literal mit 20 Elementen verursacht. Musste zu anderer Syntax wechseln. Ziemlich dumm.

Jehan
quelle
4
Auch für mich. Funktioniert für Array 4x4. Array 6x6 war zu viel für xcode ... Drama
dfens
@Jehan Sie haben Recht, aber wenn Sie den Typ eines Arrays definieren, dauert es nicht lange, bis mein Problem behoben ist. Wie zB let propertyType: [[[String: String]]] = [["propertyKey": "All Types"], ["propertyKey": "House"]], [["propertyKey": "Apartment & Unit" ], ["propertyKey": "Townhouse"]] ....... usw.] Wenn Sie den Typ nicht definieren, dauert es länger
Shrikant K
2
Auch für mich. Dies ist absolut bizarr und ein echter Fehler von Apple und Xcode
wuf810
1
Wie finden Sie die Stellen im Code heraus, an denen der Compiler hängen bleibt?
Tomasz Nazarenko
1
@TomaszNazarenko - Siehe meine Antwort unten. Sie können xcode erhalten, um Sie vor Code zu warnen, dessen Ausarbeitung zu lange dauert.
Greencardigan
18
  1. Schließen Sie alle geöffneten Xcodes
  2. rm -rf ~/Library/Developer/Xcode/DerivedData
  3. Klicken Sie mit der rechten Maustaste auf Ihren PROJECT_NAME.xcworkspace, wählen Sie "Inhalt anzeigen" und löschen Sie den Ordner "xcuserdata"
kjian
quelle
9

Ich hatte ein ähnliches Problem und stellte fest, dass ich versehentlich eine Klasse als eigene Unterklasse definiert habe. Ich habe keine Warnung oder Fehler dafür erhalten, aber die Kompilierung blieb hängen.

class mainClass : mainClass
{
    ...
}
Philipp Otto
quelle
Tatsächlich war dies die Lösung für die Indizierung, die in meinem Fall stecken blieb. Gute Antwort!
rghome
Warum führt dies (effektiv) zum Absturz eines Unterprozesses von Xcode und nicht zu einem Fehler wie bei anderen Codefehlern?
Kirkland
8

Bei Verwendung von Xcode 6 heißt es

Warten auf machen

Möglicherweise wird bereits eine Instanz von make ausgeführt. Beenden Sie den Prozess und die Indizierung wird fortgesetzt. Dumm, aber für mich gearbeitet.

oarfish
quelle
Das hat es für mich behoben. Ich hatte einen Docker-Container mit "make start" im Hintergrund.
Devin Young
7

Eine andere Sache zu versuchen, wenn Sie versuchen, Indexierungsprobleme zu lösen und Sie so weit unten auf der Seite sind!

Versuchen Sie, dieses Flag zu Ihren Build-Einstellungen hinzuzufügen.

-Xfrontend -warn-long-expression-type-checking=400

Build Settings Flag

Es wird eine Warnung ausgelöst, wenn der Compiler lange braucht, um einen komplexen Ausdruck abzuleiten.

Warnung

Dies kann zu einem Build-Fehler führen, der behoben wird, nachdem Sie die langsamen Ausdrücke gefunden und das Build-Flag entfernt haben.

Greencardigan
quelle
Dies ist die perfekte und genaue Antwort.
Jaya Raj
4

Halten Sie alt> Produkt> Build-Ordner bereinigen gedrückt

rogger2016
quelle
4

Es ist ein Xcode-Fehler (Xcode 8.2.1) und ich habe Apple gemeldet, dass dies passieren wird, wenn Sie ein großes Wörterbuchliteral oder ein verschachteltes Wörterbuchliteral haben. Sie müssen Ihr Wörterbuch in kleinere Teile zerlegen und diese mit der Append-Methode hinzufügen, bis Apple den Fehler behoben hat.

Saeed Ir
quelle
4
  • Trennen Sie zunächst die Verbindung zum Netzwerk. Sowohl Ihr kabelgebundenes als auch Ihr kabelloses Netzwerk sollten ausgeschaltet sein.
  • Zweitens, töte den com.apple.dt.SourceKitServiceProzess. Dann würde XCode wieder indizieren, anstatt zu stecken.

Geben Sie hier die Bildbeschreibung ein

ooOlly
quelle
1
Scheint com.apple.dt.SKAgentin Xcode 10 genannt zu werden.
Zitronenmojo
3

Für mich hat das vollständige Schließen von Xcode und das anschließende Neustarten des Projekts funktioniert.

Dies ist nicht die Lösung für die ursprüngliche Frage, glaube ich nicht, aber es ist eine einfachere Sache, es zu versuchen, bevor Sie Dateien und Ordner usw. löschen. Dank dieser Antwort für die Idee.

Suragch
quelle
3

Das ist mir passiert. Wenn Sie Cocoapods verwenden, gehen Sie wie folgt vor:

  1. Löschen Sie project.xcworkspace
  2. Installieren Sie die Pods mit 'pod install' auf dem Terminal neu
  3. Es wird ein neuer project.xcworkspace erstellt
  4. Öffnen Sie die neue Datei project.xcworkspace -> Clean -> Build
meow2x
quelle
1
Danke. Ich habe ein Problem in xcode11.1 und es funktioniert für mich
Rahul Parikh
1
Hatte dieses Problem mit Xcode 11.5, das auch dadurch behoben wurde.
frankenapps
2

Ich hatte ein ähnliches Problem, bei dem Xcode viel Zeit mit der Indizierung verbrachte und häufig beim Erstellen des Projekts hängen blieb. Zu diesem Zeitpunkt musste ich Xcode zwangsweise beenden und neu starten. Es war sehr nervig.

Dann bemerkte ich im Projekt eine Warnung vor einer nicht ordnungsgemäßen Zuweisung selfals Delegierter. Sicher genug, es gab ein fehlendes Protokoll in der Klassendeklaration. Beachten Sie, dass der Beispielcode des OP eine ähnliche Zuordnung enthält (obwohl anhand des Beispiels nicht zu erkennen ist, ob das richtige Protokoll deklariert ist):

leaderboardController.leaderboardDelegate == self;

Nachdem diese Warnung behoben wurde (indem das implementierte Protokoll korrekt deklariert wurde), hörte Xcode auf, sich schlecht zu verhalten. Ich sollte auch beachten , dass das Projekt richtig war ausführen , da die Protokoll Methoden wurden implementiert. Es war nur so, dass Xcode nicht bestätigen konnte, dass das Protokoll tatsächlich von der Klasse implementiert werden sollte.

Peter Gluck
quelle
2

Nichts funktioniert für mich, mein Projekt zu groß ist (Verschmelzung Ziel c, c++, swift, und javaDateien mit j2obj). Ich habe die Xcode-Indizierung deaktiviert und monatelang ohne Code-Vervollständigung gearbeitet (und es ist ein Schmerz). Aber endlich habe ich eine Problemumgehung gefunden. Die Idee ist, Xcode weiterhin den Code zu indizieren, aber seine CPU-Auslastung mit einem externen Tool wie zu begrenzen cputhrottle.

Zuerst müssen Sie cputhrottle im Terminal installieren

brauen installieren cputhrottle

Begrenzen Sie dann den Xcode-Indizierungsprozess wie folgt (20 = 20%).

sudo cputhrottle $ (pgrep -f com.apple.dt.SKAgent) 20

Ich habe meine "Lösung" hier mit Details zum Modus dargestellt: So verhindern Sie, dass Xcode beim Indizieren großer Projekte 100% der CPU verwendet

jptsetung
quelle
Dies hilft, obwohl cputhrottle nicht mehr im Homebrew ist. Sie können stattdessen cpulimit verwenden, das jedoch eine etwas andere Syntax hat: "sudo cpulimit -l 20 -p $ (pgrep -f com.apple.dt.SKAgent)" - Obwohl ich jetzt wieder nachverfolgen kann (vorher unmöglich), Ich würde lieber herausfinden, was so lange dauert, um das zu indizieren und von der Indizierung zu überspringen, aber ich habe keine Ahnung, was es ist, wie man es herausfindet oder wie man etwas überspringt (ich vermute einige größere verknüpfte Binärdateien oder vielleicht sogar Boost? Ich kompiliere nur C ++, keine Verwendung von Swift) ..
Eike
Ok, darauf muss ich zurück rudern. Es schien zu helfen, aber tatsächlich bekam ich später ein seltsames Verhalten mit cpulimiting skagent. Das spricht sowieso nur das Symptom an, also nicht zu empfehlen.
Eike
Ich benutze das immer noch. Die andere Möglichkeit besteht darin, die Xcode-Indizierung vollständig zu deaktivieren, aber das ist das Schlimmste für mich. Wenn ich dies nicht tue, indiziert Xcode jedes Mal, wenn ich eine Datei ändere (also im Grunde 24h / 24), bei 100%. Wenn ich den Editor eingebe, wird alle 2 Sekunden 1 Zeichen gedruckt, das nicht verwendet werden kann.
jptsetung
Nun, dies ist eine effektive Brute-Force-Methode, um das Problem anzugehen. Wenn das für Sie funktioniert, ist das gut. Ich hatte Xcode Abstürze / Swods nachdem ich es getan habe. Und dann habe ich Schritt 3 in Kijans Antwort versucht (dh nicht nur abgeleitete Daten löschen, sondern .xcuserdata aus .xcworkspace entfernen) und jetzt ist alles wieder in Ordnung. Wusste nichts davon ..
Eike
1

Hatte ein ähnliches Problem in Xcode 6.4. Der Fortschrittsbalken zeigte an, dass "Indizierung" "Angehalten" war. Es wurde versucht, project.xcworkspace zu löschen und dann abgeleitete Daten wie oben beschrieben zu löschen. Schien nicht zu helfen. Als ich feststellte, dass die obigen Beiträge auch das Beheben von Warnungen vorschlagen, und da ich dieses riesige Projekt mit 180 Warnungen geerbt hatte, sagte ich mir: "Was zum Teufel sieht das nach einem guten Tag aus, um Warnungen zu beheben?" Als ich eine halbe Stunde später Warnungen korrigierte, bemerkte ich, dass der Fortschrittsbalken "Indizierung" von 10% auf etwa 20% gestiegen war. Eine Stunde später war es bei 50%, dann noch eine Stunde bis 80%, dann nach einer weiteren halben Stunde war es geschafft! Fazit: Fügen Sie den obigen Vorschlägen "ein langes Mittagessen oder ein Nickerchen machen" hinzu.

Jerry Krinock
quelle
Ich denke, das ist der letzte Ausweg für mich.
Rishab
1

Ich habe das gleiche Problem für Xcode 7.0 Beta festgestellt. In meinem Fall unterschieden sich die Werte für "Bereitstellungsprofil" und "Produktpaket-ID" von "Build-Einstellungen" zwischen PROJECT und TARGETS. Ich habe die gleichen Werte für sie eingestellt. Und ich habe auch die gleichen Werte für ZIELE von "appName" und "appNameTest" verwendet. Schließen Sie dann das Projekt und öffnen Sie es erneut. Das hat meinen Fall gelöst.

Manispin
quelle
1

In meinem Fall hat das Löschen des abgeleiteten Datenverzeichnisses nicht geholfen. Anscheinend hatte ich eine Datei durch einen anderen Prozess gesperrt, da nach dem Schließen einiger Terminalfenster und Emacs und dem Beenden eines reaktionsnativen Packager-Prozesses alles gelöst war.

Chetstone
quelle
Auch hier hatte ich früher einen Wiederaufbau in Karthago unterbrochen. Anscheinend wurden nicht alle Prozesse nicht mehr ausgeführt, sodass vermutlich einige Dateien weiterhin verwendet werden. Das Schließen des Terminals und das Schließen und Wiedereröffnen von XCode haben den Trick getan.
CyberDude
1

Für mich habe ich einen dummen Fehler gemacht. Ich schreibe eine Klasse wie diese:

class A: A {
.......
}

Eine Klasse erbt sich selbst, die das Einfrieren verursacht. Es gibt keinen Hinweis von Xcode.

Victor Choy
quelle
Dies ist eine sehr wahrscheinliche Ursache. Das war es in meinem Fall. Ich bin mir ziemlich sicher, dass ich das auch schon einmal erlebt habe.
Form
1

Ich habe dieses Problem in einigen Projekten mit Xcode 9.3.1 festgestellt. In meinem Fall ist das Problem auf einen schnellen Code zurückzuführen, den Xcode aus irgendeinem Grund nicht mag. Dieses Problem ist schwer zu lösen, da es schwierig ist zu finden, welche Datei das Problem verursacht.

Wenn ich dieses Problem habe, entferne ich einige Dateien aus dem Xcode-Projekt (Entfernen von Referenzen) und versuche zu testen, ob die Indizierung funktioniert. Mein Prozess dazu

  1. Entfernen Sie einige Dateien
  2. Schließen Sie Xcode
  3. Öffnen Sie Xcode
  4. Wenn die Indizierung abgeschlossen ist, versuchen Sie, eine Methode umzubenennen, wenn die von Ihnen entfernten Dateien wahrscheinlich etwas Seltsames für Xcode haben.

In meinem Fall hatte ich eine Klassendefinition mit einer reaktiven Erweiterung in derselben Datei und aus irgendeinem Grund mag Xcode sie nicht. Ich habe die reaktive Erweiterung in eine andere Datei verschoben und jetzt funktioniert die Indizierung einwandfrei.

El Belga
quelle
Dies ist eine wirklich gute Lösung, da Sie damit den Engpass auch in einem Code identifizieren können, den Sie nicht geschrieben haben. In meinem Fall handelte es sich um eine nicht gewartete pod / lib, und ich habe Tage gebraucht, um festzustellen, dass keine Warnung ausgegeben wurde, selbst mit den Flags "-Xfrontend -warn-long-expression-type-testing = 300".
Cédric
0

Stoppen Sie auch die App. Wenn eine andere Anwendung mit Ihrem xcode ausgeführt wird, stoppen Sie diese zuerst und Sie sollten die Indizierung fortsetzen.

NFerocious
quelle
0

Für mich war die Ursache, dass ich dieselbe Datei gleichzeitig im Primäreditor und im Assistenteneditor geöffnet habe . Nachdem ich Assistant Editor geschlossen hatte, kam es durch. (Xcode Version 7.2.1)

wye
quelle
0

Schließen Sie Ihren Xcode, schließen Sie einen beliebigen Git-Client (Quellbaum oder Terminal), falls dieser geöffnet ist, und starten Sie Ihr Projekt schließlich neu.

Mohit Anand
quelle
0

Vor kurzem mit XCode 7.3.1 konfrontiert - für mich ist mir aufgefallen, dass die RAM-Auslastung von CleanMyMac3 zu 100% steigt. Das Problem wurde auf magische Weise behoben, nachdem ich meinen Computer neu gestartet hatte. Um ehrlich zu sein, hatte ich bereits die akzeptierte Antwort ausprobiert, daher sollten Sie dasselbe tun, bevor Sie neu starten, nur für den Fall :-)

Angad
quelle
0

Ich habe dies behoben, indem ich einfach die App von meinem Gerät gelöscht und neu erstellt habe.

robertsan
quelle
0

Ich hatte das gleiche Problem in Swift 2.2

Es hatte mit einer generischen Funktion überladene Funktion zu tun

func warnLog() {
    print("Warning line: \(#line) file: \(#file) ")
}

func warnLog<T>(input:T? = nil) -> T? {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}

func warnLog<T>(input:T) -> T {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}

Alles, was ich tun musste, war eine der nicht verwendeten Überladungen zu entfernen

func warnLog<T>(input:T? = nil) -> T? {
    print("Warning line: \(#line) file: \(#file) ")
    return input
}
Chéyo
quelle
0

Mein Fall: Es war nicht die Datei project.xcworkspace, es war nicht der Ordner Derived Data.

Ich habe viel Zeit verschwendet. Schlimmer noch, keine Fehlermeldung. Keine Ahnung seitens Xcode. Absolut verloren.

Schließlich ist diese Funktion (mit mehr als 10 Parametern) verantwortlich.

func animationFrames(level: Float,
                     image: String,
                     frame0: String,
                     frame1: String,
                     frame2: String,
                     frame3: String,
                     frame4: String,
                     frame5: String,
                     frame6: String,
                     frame7: String,
                     frame8: String,
                     frame9: String,
                     frame10: String) {
}

Verrückt werden! Die Wahrheit ist, dass es besorgniserregend ist (weil es keinen Syntaxfehler oder irgendeinen Typ gibt)

Markus
quelle
0

Bei Indizierungsproblemen mit XCode 9.3 - Deinstallieren Sie den XCode und installieren Sie ihn erneut von Null. Funktioniert bei mir.

Maximo Lucosi
quelle
1
Die Größe von XCode beträgt nicht wenige KB. Es sind ein paar GB.
Iphondroid
0

Dieses Problem ist mir passiert, als auf meiner Maschine kein Swap-Platz mehr vorhanden war. Mehrere Programme und Browser-Registerkarten wurden geschlossen, und der Build war nach 30 Minuten festgefahren. Ich habe nichts mit abgeleiteten Daten, gesperrten Dateien usw. zu tun.

Jacob Torres
quelle
0

Ich habe alle aufgelisteten Dinge ausprobiert, die Indizierung friert immer wieder ein. Dies hat mir geholfen: Wenn Ihre Indizierung einfriert und Sie einen oder mehrere schnelle Prozesse haben, die 99% Ihrer CPU verbrauchen, beenden Sie einfach diese schnelle (n) Aufgabe (n), warten Sie ein wenig, und der Fortschritt sollte sich bewegen. Es kann sich wiederholen, bis es fertig ist. In meinem Fall habe ich den Prozess sieben Mal abgebrochen, aber am Ende war die Indizierung abgeschlossen!

David Kyslenko
quelle
0

Hatte dieses Problem bei einem SwiftUI-Projekt. Es stellte sich heraus, dass eine meiner SwiftUI-Ansichten eine falsch deklarierte Variable hatte. Ich hatte:

@EnvironmentObject var roomViewModel

wo ich brauchte:

@EnvironmentObject var roomViewModel: RoomViewModel

Es gab keinen Compilerfehler, nur endlose Indizierung. Nachdem ich den Fehler behoben hatte, wurde das Projekt schnell erstellt.

Christopher Monsour
quelle