So leeren Sie Caches und bereinigen alle Ziele Xcode 4 und höher

238

Jonathan schlägt hier vor: Xcode Enthält gelöschte .xib-Dateien! Wenn Sie alle Ziele bereinigen und die Caches leeren, wird das Problem mit Xcode behoben, einschließlich gelöschter XIB-Dateien. Ich kann jedoch keine Möglichkeit finden, den Cache in Xcode 4 zu leeren.

Wie geht das in Xcode 4?

Tieme
quelle
Hier ist meine [Shell-Skript-Lösung] [1], die abgeleitete Daten für xCode 5 und 6 löscht. [1]: stackoverflow.com/a/27977848/1231948
Sheamus

Antworten:

514

Befehl-Option-Umschalt-K, um den Build-Ordner zu bereinigen. Beenden Sie Xcode noch besser und bereinigen Sie ~ / Library / Developer / Xcode / DerivedData manuell. Entfernen Sie den gesamten Inhalt, da es einen Fehler gibt, bei dem Xcode eine alte Version Ihres Projekts ausführt, die sich irgendwo dort befindet. (Xcode 4.2 zeigt Ihnen den Ordner Abgeleitete Daten: Wählen Sie Fenster> Organizer und wechseln Sie zur Registerkarte Projekte. Klicken Sie auf den Rechtspfeil rechts neben dem Ordnernamen Abgeleitete Daten.)

Wählen Sie im Simulator iOS Simulator> Inhalt und Einstellungen zurücksetzen.

Der Vollständigkeit halber können Sie den Inhalt von / var / folders löschen . Dort findet auch etwas Caching statt.

WARNUNG: Das Löschen von / var / -Ordnern kann zu Problemen führen. Möglicherweise müssen Sie anschließend Ihr Betriebssystem reparieren oder neu installieren.

BEARBEITEN: Ich habe gerade erfahren, dass Sie, wenn Sie Angst haben, sich mit / var / folders / auseinanderzusetzen , den folgenden Befehl im Terminal verwenden können, um gezielter zu löschen:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"

BEARBEITEN: Für bestimmte Swift-bezogene Probleme fand ich es nützlich, ~ / Library / Caches / com.apple.dt.Xcode zu löschen . Sie verlieren dabei viel, wie Ihre Ersatzkopien der heruntergeladenen Dokumentationssätze, aber es kann sich lohnen.

matt
quelle
6
Schön, den Pfad zu bereinigen: Bibliothek / Entwickler / Xcode / DerivedData + Zurücksetzen des Inhalts und Einstellen des Simulators funktioniert!
Tieme
10
Der Pfad scheint sich in meinem Home-Verzeichnis zu befinden (Hinweis Tilde): ~ / Library / Developer / Xcode / DerivedData Vielleicht war dies für andere offensichtlich, aber für den Fall, dass jemand anderes das Problem hat ...
Victor Van Hee
37
Hehe, da ich ein Gefühl00b bin, habe ich / var / db gelöscht, wo ich etwas gefunden habe, das von Xcode / meinem Projekt stammt. Das hat mich fünf Stunden Müll im Dateisystem, Reparatur und Neuinstallation von Lion usw. gekostet. Seien Sie gewarnt! :-)
Jonas Byström
4
@ Jonas Ich fühlte mich gezwungen, dem Hinweis "delete / var / folders" eine Warnung hinzuzufügen. Es ist nichts für Uneingeweihte!
LearnCocos2D
7
Führen Sie rm -rf / var / folders nicht mit sudo aus, sonst reparieren Sie am Ende wie ich :)
Josip B.
68

Command-Option-Shift-K sollte es tun. Alternativ gehen Sie zum Produktmenü und drücken Sie die Optionstaste. Jetzt ändert sich die Option "Bereinigen" in "Bereinigungsordner bereinigen ..." und wählen Sie diese Option aus.

sram
quelle
Nein, schade. Ich habe gerade eine xib-Datei geändert und umbenannt und die App wie gesagt bereinigt, aber sie wird trotzdem fehlerfrei geladen.
Tieme
2
Wow, nie neu über diesen Alt-Key-Trick für Mac OS X-Menüs !!! Das definiert wirklich die Bedeutung von "Alt" ernate.
Trusktr
19

Zusätzlich zu den folgenden Schritten kann dieses Problem auftreten, wenn die Storyboard-Dateien Ihrer App lokalisiert sind. Führen Sie zunächst alle folgenden Schritte aus:

  • Sauber bauen
  • Simulator zurücksetzen
  • Starten Sie Xcode neu
  • Löschen Sie Ihren DerivedDataOrdner in ~ / Library / Developer / Xcode / DerivedData
  • Starte den Computer neu

Was für mich schließlich funktionierte, war das erneute Generieren der Storyboard-Lokalisierungsdateien und das Löschen der englischen Lokalisierung (die nicht benötigt wurde, da das Basisgebietsschema Englisch ist). Informationen zum erneuten Laden Ihrer Storyboard-Zeichenfolgen finden Sie in dieser Antwort auf StackOverflow .

Ich hatte festgestellt, dass die Nicht-Text-Teile meines Storyboards aktualisiert wurden, nicht jedoch der lokalisierte Text. Wenn Ihre App eine Lokalisierung enthält, würde ich empfehlen, zu überprüfen, ob Ihre Lokalisierungen aktualisiert wurden (auch wenn es sich um .stringsDateien handelt).

Sam Spencer
quelle
2
Das Löschen des Inhalts (nicht des gesamten Ordners) von / var / folders hat es für mich getan! Wenn Sie nach /var/folders suchen ... Wählen Sie im Finder-Menü "Gehe zu" zu "Ordner" und geben Sie / var / als Speicherort des Ordners ein.
Patricia
+1 auf die Anweisung / var / folders ... Das Reinigen und Löschen von DerivedData hat teilweise funktioniert, aber dieser hat den Trick gemacht
EeKay
1
1. Clean Build 2. Simulator zurücksetzen 3. Xcode neu starten Das hat mein Problem gelöst.
Alan Dong
WARNUNG! Beachten Sie, dass das Löschen von Inhalten /var/folders/schwerwiegende Probleme verursachen und dazu führen kann, dass OSx vollständig von der Wiederherstellungskonsole neu installiert werden muss!
Magnus W
18

Ich habe zusätzlich zu Befehl + Option + Umschalt + K einen anderen Weg gefunden. In XCode 4.2 gibt es einen Organizer, der über das Symbol oben rechts geöffnet werden kann. Von dort aus können Sie alle Archive und gespeicherten Projektoptionen bereinigen. Dies half meiner Situation (ich sah alte entfernte Dateien im mainBundle).

mert
quelle
3
Ja, das ist ein einfacher Weg, als ~ / Library / Developer / Xcode / DerivedData manuell zu reinigen
Tieme
10

Ich habe mir die Haare aus dem Kopf gezogen, weil ich dachte, ich hätte das gleiche Problem. Beim Erstellen der App habe ich auf meinem iPhone nicht das gleiche Ergebnis erzielt wie auf dem Simulator.

Das Problem war, dass ich irgendwie eine lokalisierte Version der Datei MainStoryboard.storyboard erstellt hatte. Als ich die App auf meinem Handy ausführte, zeigte sie die dänische Version ... und der Simulator zeigte die englische Version.

Ja ich bin neu! :) :)

thehatisonfire
quelle
2
Ich hatte ähnliche Probleme. Hat Befehl-Option-Shift-K ohne Erfolg. Entfernt ... DerivedData, keine Lösung. Es stellte sich heraus, dass das Ändern der XIB der obersten Ebene nur die englische Version ändert, und ich habe mit der niederländischen Version der XIB getestet.
Seufz
1
Beachten Sie auch, dass es Möglichkeiten gibt, Ihre App zu lokalisieren, bei der für jede Sprache separate Textdateien erstellt werden. In solchen Fällen macht das Ändern der .xib nichts.
Dandan78
7

/var/foldersVerwenden Sie dieses kleine Ruby-Skript, um alle abgeleiteten Daten und den verwendeten Modul-Cache zu löschen .

derivedDataFolder = Dir.glob(Dir.home + "/Library/Developer/Xcode/DerivedData/*")
moduleCache = Dir.glob("/var/folders/**/com.apple.DeveloperTools*")
FileUtils.rm_rf derivedDataFolder + moduleCache

Dies hat gerade einen fatal error: malformed or corrupted AST file: 'Unable to load module "/var/folders/Fehler für mich behoben .

Orkoden
quelle
1
Der offensichtliche Fehler, der "schwerwiegender Fehler: fehlerhafte oder beschädigte AST-Datei: 'Modul kann nicht geladen werden" verursacht, und der Fehler der von Xcode vorgeschlagenen sanften Lösung treten weiterhin in Xcode 6.1 auf. Und die Lösung, Xcode zu beenden und ~ / Library / Developer / Xcode / DerivedData manuell zu bereinigen, funktioniert immer noch. Ich musste dort nicht alles putzen; Nur zwei Unterordner: ModuleCache und der Unterordner, dessen Name für das Problemprojekt relevant ist.
Jerry Krinock
5

Ich hatte einige Probleme mit Xcode 5.1, als ich das Dokumentfenster öffnete.

Ich bin mir der Ursache nicht sicher, da ich auch Docsets aktualisiert habe, während ich das Fenster geöffnet habe.

Nun, in Xcode 5 befindet sich das Modulverzeichnis jetzt im abgeleiteten Datenordner, den ich aus offensichtlichen Gründen nicht gelöscht habe. Ich habe den Inhalt von ~ / Library / Developer / Xcode / DerivedData / ModuleCache und ~ / Library / Preferences / com.apple.Xcode.plist gelöscht und alles scheint dann zu funktionieren, nachdem ich Xcode neu gestartet habe.

McUsr
quelle
1

Bei Verwendung eines "Datenmodells" gibt es im Inspektor Optionen zum Generieren von Klassen. Für mich war dies der Fall, da bereits eine Klasse mit dem vorhandenen Namen vorhanden war.

Codegen: hat es für mich gelöst.

Geben Sie hier die Bildbeschreibung ein

Wayne
quelle
1

Meine "DerivedData" mit Xcode 10.2 und Mojave war hier:

MacHD / Benutzer / [MyUser] / Bibliothek / Entwickler / Xcode

Mahdi Moqadasi
quelle
0

Sie müssen vorsichtig mit der xib-Datei sein. Ich habe alles versucht und nichts hat bei mir funktioniert. Ich habe benutzerdefinierte UIButtons verwendet, die in der xib definiert sind, und festgestellt, dass dies möglicherweise damit zusammenhängt, dass ich dort Attribute zugewiesen habe, die sich nicht programmgesteuert ändern. Wenn Sie dort Bilder oder Text definiert haben, entfernen Sie diese. Als ich das tat, begannen meine programmatischen Änderungen wirksam zu werden.

Aljoschak
quelle
0

Hier ist meine Shell-Skriptlösung , die abgeleitete Daten löscht und die zwischengespeicherten Assets eines Projekts für Xcode 4, 5 und 6 bereinigt.

Manchmal hinterlässt das einfache Aufrufen von rm -rf im Verzeichnis Derived Data ein oder zwei verbleibende Dateien, aber mein Skript wird wiederholt, bis alle Dateien gelöscht sind.

Sheamus
quelle
0

Ich habe fast alles versucht, konnte aber nicht helfen. Was mir geholfen hat, war das Deaktivieren von SIP (System Integration Protection). Es funktioniert. Ich weiß nicht, was wann und wie passiert, aber die Systemdatei wird irgendwo verwirrt und verursacht dies ... obwohl es Risiken geben könnte dies offensichtlich zu deaktivieren

hier ist, wie

1.Schalten Sie Ihren Mac ein und halten Sie die Tasten [Befehl] + [R] gedrückt, um auf die Wiederherstellungspartition zuzugreifen.

2. Klicken Sie in der Wiederherstellungspartition in der Menüleiste auf Dienstprogramme und wählen Sie dann Terminal aus.

3.Geben Sie den folgenden Befehl in Terminal ein und drücken Sie die Eingabetaste, um ihn auszuführen: csrutil disable

4. Sobald der Befehl ausgeführt wurde, verlassen Sie das Terminal und starten Sie den Mac neu. Wenn Sie sich wieder bei OS X anmelden, wird SIP deaktiviert.

Castro Zwelithini
quelle
1
Klingt in der Tat riskant. Was macht SIP?
Tieme
System Integrity Protection schützt Systemdateien und Verzeichnisse, die zum Schutz gekennzeichnet sind.
Dies