Levo-Anleitungen · Entwickler: Apple
DerivedData löschen: So geht’s, und ist das sicher?

Ja, das ist sicher. DerivedData enthält nur Build-Ergebnisse, Indizes und Protokolle, die Xcode aus deinem Quellcode erzeugt. Löschen kostet dich also einen langsamen Build und sonst nichts. Beende vorher Xcode, und lösch den Ordner nicht, während ein Build oder Archiv läuft.
| Was drin ist | Wo | Was beim Löschen passiert |
|---|---|---|
| Build-Produkte | DerivedData/<Project>-<hash>/Build | Werden beim nächsten Build neu erstellt |
| Index | …/Index.noindex | Xcode indiziert neu, Suche und Vervollständigung sind eine Weile langsam |
| Protokolle | …/Logs | Alte Build-Protokolle verschwinden aus dem Report navigator |
| Swift-Pakete | …/SourcePackages | Pakete werden neu geladen, du brauchst also eine Internetverbindung |
| Modul-Cache | DerivedData/ModuleCache.noindex | Wird neu erstellt, gilt für alle Projekte |
So machst du es selbst
Der Ordner ist ~/Library/Developer/Xcode/DerivedData, mit einem Unterordner pro Projekt, benannt nach dem Projekt plus einem Hash. Wähl die Methode, die zu deinem Ziel passt.
- Ein Projekt, in Xcode. Wähle Product › Clean Build Folder (⇧⌘K). Das löscht die Build-Produkte des Projekts, lässt aber seinen Index stehen.
- Ein Projekt, im Finder. Öffne Xcode › Settings › Locations, klick auf den kleinen Pfeil neben Derived Data und leg den Ordner des Projekts in den Papierkorb.
- Alles, im Terminal. Bei beendetem Xcode:
du -sh ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Developer/Xcode/DerivedData/*
Der Ordner selbst kann bleiben. Fehlt er, legt Xcode ihn neu an. Bei Builds über die Kommandozeile mit -derivedDataPath löschst du stattdessen diesen Ordner.
Warte, wenn gerade ein Build, ein Archiv oder ein UI-Test läuft, oder wenn du im Flugzeug sitzt und Swift-Pakete nutzt: SourcePackages verschwindet mit und muss neu geladen werden. Willst du ihn behalten, lösch nur die Ordner Build und Index.noindex.
Verhält sich ein Projekt danach seltsam, setz auch die Pakete zurück, mit File › Packages › Reset Package Caches. Dasselbe gilt für die Caches von SwiftPM und CocoaPods.
Wenn das Löschen das Problem nicht löst
Entwickler leeren DerivedData, wenn ein Build hängt, und oft hilft das, weil ein veralteter Modul-Cache oder Index schuld ist. Wenn nicht, liegt das Problem woanders: ein Paket mit falscher Version, ein veralteter Pods-Ordner oder eine Signatur-Einstellung. Probier als Nächstes das Zurücksetzen der Pakete aus der Anleitung zu Paket-Caches.
Wächst der Ordner immer wieder auf 30 GB oder mehr, schau, welche Projektordner am größten sind: du -sh ~/Library/Developer/Xcode/DerivedData/* | sort -h. Jeder Branch und jeder Klon eines Projekts bekommt einen eigenen Ordner, weil der Hash aus dem Projektpfad entsteht. Zehn Checkouts einer App sind zehn Kopien.
Du kannst DerivedData auch woandershin verlegen, etwa auf ein externes Laufwerk, unter Xcode › Settings › Locations. Das funktioniert, aber Builds auf einem langsameren Laufwerk sind spürbar langsamer. Für die meisten ist regelmäßiges Leeren der bessere Kompromiss.
So macht es Levo
Levo zeigt den DerivedData-Ordner jedes Projekts in der Gruppe der Xcode-Build-Daten, mit Größe und dem Zeitpunkt des letzten Builds. Ordner von Projekten, die du lange nicht angefasst hast oder deren Quellordner weg ist, hakt Select › Smartly zuerst an. Das Projekt, das du heute Morgen gebaut hast, bleibt ohne Haken.
Solange Xcode, xcodebuild oder die Build-Dienste laufen, markiert Levo die Zeile als gesperrt und erklärt, warum. Du entfernst den Haken bei allem, was du behalten willst, dann klickst du auf Clean up. In Levo für iOS- und Mac-Entwickler steht die vollständige Liste, wonach es sucht.
FAQ
Ist es sicher, DerivedData zu löschen?
Ja. Der Ordner enthält Build-Ergebnisse, Indizes und Protokolle, die aus deinem Quellcode entstehen. Xcode legt ihn neu an, der erste Build danach dauert also länger.
Wo liegt DerivedData auf dem Mac?
In ~/Library/Developer/Xcode/DerivedData. Öffne in Xcode Settings und dann Locations und klick auf den Pfeil neben Derived Data, um den Ordner im Finder zu zeigen.
Verliere ich Breakpoints oder Schemes, wenn ich DerivedData lösche?
Nein. Die liegen in deinem Projekt oder Workspace, nicht in DerivedData. Du verlierst alte Build-Protokolle und den zwischengespeicherten Index.
Warum füllt Xcode DerivedData immer wieder?
Jeder Build schreibt dorthin, ein Ordner pro Projekt, dazu der Index. Große Projekte und viele Branches summieren sich auf zig Gigabyte, deshalb ist es normal, den Ordner alle paar Wochen zu leeren.