Pruneo-LogoPruneo

Xcode DerivedData und Caches löschen, ohne etwas kaputt zu machen

Kurze Antwort

Du kannst ~/Library/Developer/Xcode/DerivedData jederzeit löschen: Xcode erstellt den Ordner beim nächsten Build neu, du verlierst also nur Build-Zeit. Alte Simulatoren und Runtimes entfernst du am besten mit xcrun simctl oder in den Xcode-Einstellungen. Vorsicht bei Archives: Dort liegen die dSYM-Dateien, die du zum Lesen von Absturzberichten brauchst.

Wenn du iOS- oder macOS-Apps entwickelst, füllt Xcode deine Festplatte nach und nach mit Build-Daten, Simulatorgeräten, Simulator-Runtimes und Gerätesymbolen. Das meiste davon ist Cache, den Xcode neu erstellen kann. Manches nicht. Dieser Guide zeigt dir jeden Ordner, wie du ihn misst, wie du ihn aufräumst und was du dabei verlierst.

Was in Xcode Platz belegt

Das sind die wichtigsten Orte, an die Xcode schreibt, alle in deinem Benutzerordner:

Ordner oder Element Was es ist Wird automatisch neu erstellt?
~/Library/Developer/Xcode/DerivedData Build-Produkte, Zwischendateien, Indizes und Logs pro Projekt Ja, beim nächsten Build
~/Library/Developer/Xcode/Archives Archive aus Product > Archive, mit deinen dSYM-Dateien Nein
~/Library/Developer/Xcode/iOS DeviceSupport Debug-Symbole, kopiert von Geräten, die du angeschlossen hast Ja, wenn du das Gerät wieder anschließt
~/Library/Developer/CoreSimulator/Devices Jedes Simulatorgerät, mit seinen installierten Apps und Daten Nein, das Gerät und seine Daten sind weg
Simulator-Runtimes Das iOS-, watchOS-, tvOS- oder visionOS-System, auf dem jeder Simulator läuft Du kannst sie erneut laden
~/Library/Developer/CoreSimulator/Caches Caches, die der Simulator anlegt Ja, der Simulator legt sie neu an

Die Grundidee: Was neu erstellt wird, kannst du ruhig löschen. Bei allem anderen erst nachdenken.

Schritt 1: Erst messen, dann löschen

Schau immer zuerst nach. Dieser Befehl liest nur, er ändert nichts:

du -sh ~/Library/Developer/Xcode/DerivedData \
       ~/Library/Developer/Xcode/Archives \
       ~/Library/Developer/Xcode/"iOS DeviceSupport" \
       ~/Library/Developer/CoreSimulator/Devices \
       ~/Library/Developer/CoreSimulator/Caches 2>/dev/null

So siehst du, welche Projekte in DerivedData am meisten Platz belegen:

du -sh ~/Library/Developer/Xcode/DerivedData/* 2>/dev/null | sort -h

Jeder Ordnername beginnt mit dem Projektnamen, gefolgt von einem zufälligen Suffix. Siehst du Projekte, die du vor Monaten gelöscht hast, sind diese Ordner reine Überreste.

Schritt 2: DerivedData löschen

DerivedData ist der Ordner, den du am gefahrlosesten aufräumen kannst. Er enthält nur Daten, die Xcode aus deinem Projekt erzeugt: kompilierte Dateien, den Code-Index für Autovervollständigung und Suche sowie Build-Logs.

Zuerst die vorsichtigere Variante: Clean Build Folder

Öffne in Xcode dein Projekt und wähle Product > Clean Build Folder (Umschalt + Befehl + K). Das entfernt nur die Build-Produkte des geöffneten Projekts. Ein guter erster Schritt, wenn sich ein Build seltsam verhält.

Den ganzen Ordner löschen

Wenn du den Platz für alle Projekte zurückhaben willst:

rm -rf ~/Library/Developer/Xcode/DerivedData/*

Um nur ein Projekt zu löschen, entfernst du stattdessen seinen Ordner, zum Beispiel rm -rf ~/Library/Developer/Xcode/DerivedData/MyApp-abc123. Auch die Abhängigkeiten des Swift Package Manager, die Xcode auflöst, liegen in DerivedData, der nächste Build lädt sie also eventuell erneut herunter.

Schritt 3: Vorsicht bei Archives (dSYM-Dateien)

Jedes Mal, wenn du Product > Archive verwendest, legt Xcode ein Paket in ~/Library/Developer/Xcode/Archives ab. Apple beschreibt ein Archiv als „einen Build deiner App, einschließlich Debugging-Informationen“ (Distributing your app). Diese Debugging-Informationen sind die dSYM-Datei.

Apple ist da eindeutig: Du musst das Xcode-Archiv jedes Builds, den du verteilst, aufbewahren, sonst kannst du Absturzberichte womöglich nicht auswerten (Building your app to include debugging information).

Die sichere Regel lautet also:

  1. Öffne in Xcode Window > Organizer > Archives.
  2. Behalte die Archive aller Versionen, die Nutzer noch verwenden.
  3. Lösche nur Archive von Test-Builds oder von Versionen, die niemand mehr nutzt. Du kannst ein Archiv mit der rechten Maustaste anklicken und Delete wählen oder es dir vorher im Finder anzeigen lassen.

Schritt 4: Simulatoren aufräumen

Simulatoren belegen auf zwei Arten Platz: Geräte (das iPhone 16, das du angelegt hast, mit seinen Apps und Daten) und Runtimes (das iOS-System, auf dem diese Geräte laufen).

Auflisten, was du hast

xcrun simctl list devices
xcrun simctl list runtimes

simctl list liest nur. Als unavailable markierte Geräte gehören zu Runtimes, die nicht mehr installiert sind oder nicht mehr unterstützt werden.

Nicht verfügbare Geräte löschen

Laut der eingebauten Hilfe (xcrun simctl help delete) löscht unavailable „Geräte, die das aktuelle Xcode-SDK nicht unterstützt“.

xcrun simctl delete unavailable

Verzichte auf xcrun simctl delete all, außer du willst wirklich jedes Simulatorgerät entfernen, auch die, die du täglich nutzt.

Simulator-Runtimes entfernen, die du nicht mehr nutzt

Runtimes sind oft der größte Posten. Apple empfiehlt, sie unter Xcode > Settings > Components zu verwalten: Xcode zeigt dort jede installierte Komponente mit dem Speicherplatz, den du zurückgewinnen kannst, und du entfernst sie über die Info-Taste und Delete (Downloading and installing additional Xcode components).

Im Terminal kann xcrun simctl runtime dasselbe. Nutze zuerst --dry-run, um zu sehen, was entfernt würde:

xcrun simctl runtime list
xcrun simctl runtime delete --notUsedSinceDays 90 --dry-run

Wenn die Liste passt, führe denselben Befehl ohne --dry-run aus. Eine gelöschte Runtime kannst du bei Bedarf unter Settings > Components erneut laden, das kostet aber Zeit und Bandbreite.

Schritt 5: iOS DeviceSupport und CoreSimulator-Caches

Wenn du ein iPhone oder iPad zum Debuggen anschließt, kopiert Xcode die Debug-Symbole dieser iOS-Version nach ~/Library/Developer/Xcode/iOS DeviceSupport. Jede neue iOS-Version fügt einen neuen Ordner hinzu, und alte werden nie für dich entfernt. Du kannst sie dir nach Version anzeigen lassen:

du -sh ~/Library/Developer/Xcode/"iOS DeviceSupport"/* 2>/dev/null
rm -rf ~/Library/Developer/Xcode/"iOS DeviceSupport"/"<old-version-folder>"

Der Ordner ~/Library/Developer/CoreSimulator/Caches enthält Caches, die der Simulator erzeugt. Beende Xcode und die Simulator-App, bevor du seinen Inhalt löschst; der nächste Start des Simulators ist langsamer, während er sie neu aufbaut.

Was neu erstellt wird und was nicht

Wenn du dir nur eine Sache merkst: DerivedData ist Cache, Archives sind Belege.

Häufige Probleme nach dem Aufräumen

Behalte es im Griff

Führe den du -sh-Befehl aus Schritt 1 einmal im Monat aus. Lösche DerivedData, wenn es wächst, räume nach jedem Xcode-Update nicht verfügbare Simulatoren auf und prüfe die Archives nach jedem Release. Wenn du auch mit Containern oder JavaScript arbeitest, lies, wie du mit docker prune Speicherplatz freigibst und wie du node_modules und die Caches von npm, pnpm und yarn aufräumst. Für einen kompletten Rundgang über deine Festplatte fang mit Speicherplatz auf dem Mac freigeben an, oder lade Pruneo kostenlos herunter.

FAQ

Ist es sicher, den Ordner DerivedData zu löschen?

Ja. DerivedData enthält Build-Produkte, Indizes und Logs, die Xcode beim nächsten Build neu erstellt. Beende Xcode vorher und rechne damit, dass der erste Build und die Indexierung länger dauern.

Löscht das Löschen von DerivedData meinen Code?

Nein. Dein Quellcode, die Projektdateien und der Git-Verlauf liegen in deinem Projektordner, nicht in DerivedData. Entfernt werden nur generierte Build-Daten.

Kann ich Xcode-Archives löschen?

Nur Archive von Builds, die du nicht mehr unterstützt. Laut Apple musst du das Archiv jedes verteilten Builds aufbewahren, weil es die dSYM-Dateien enthält, mit denen Absturzberichte symbolisiert werden.

Was macht xcrun simctl delete unavailable?

Es löscht Simulatorgeräte, die das aktuelle Xcode-SDK nicht unterstützt, zum Beispiel Geräte, die an eine Runtime gebunden sind, die du nicht mehr installiert hast.

Probier es mit Pruneo

Kostenlos für macOS 14 oder neuer. Alles, was es aufräumt, lässt sich aus der Quarantäne zurückholen.

Pruneo ist für den Mac

Schick dir den Link und lade Pruneo auf deinem Mac herunter. Kostenlos, ohne Konto.

Per Mail an mich
Trotzdem herunterladen