Xcode-Verzeichnisse aufräumen

Xcode produziert GByte-weise Datenmüll auf Ihrer Festplatte/SSD. Diese Anleitung fasst zusammen, was Sie löschen dürfen. Die Platzersparnis betrug bei mir, nach einem Jahr intensivem Xcode-Betrieb, beachtliche 90 GByte!

Der perfekte Zeitpunkt zur Durchführung der hier beschriebenen Aufräumarbeiten ist übrigens vor der Installation des nun verfügbaren Xcode 8 GM (Gold Master).

Bestandsaufnahme

Alle folgenden Kommandos sind in einem Terminal auszuführen.

df -h /

Filesystem   Size   Used  Avail Capacity   iused    ifree %iused  Mounted on
/dev/disk1  931Gi  797Gi  133Gi    86% 208997166 34991370   86%   /

du -h -d 1 Library | grep G

 13G    Library/Application Support
 25G    Library/Caches
2,1G    Library/Containers
 83G    Library/Developer
1,6M    Library/GameKit
 24K    Library/Google
396K    Library/Group Containers
6,0G    Library/Mail
8,3G    Library/Thunderbird
139G    Library




du -h -d 1 Library/Developer/Xcode

430M    Library/Developer/Xcode/Archives
 16G    Library/Developer/Xcode/DerivedData
 60K    Library/Developer/Xcode/DocumentationCache
116M    Library/Developer/Xcode/iOS Device Logs
 45G    Library/Developer/Xcode/iOS DeviceSupport
1,5M    Library/Developer/Xcode/Products
412K    Library/Developer/Xcode/Snapshots
7,6G    Library/Developer/Xcode/tvOS DeviceSupport
199M    Library/Developer/Xcode/UserData
  0B    Library/Developer/Xcode/XcodeServer
 69G    Library/Developer/Xcode



du -h -d 1 Library/Developer/CoreSimulator

6,5G    Library/Developer/CoreSimulator/Devices
6,5G    Library/Developer/CoreSimulator



du -h -d 1 Library/Caches

14G Library/Caches/com.apple.dt.Xcode/Downloads
8,4M    Library/Caches/com.apple.dt.Xcode/fsCachedData
2,9M    Library/Caches/com.apple.dt.Xcode/PlaygroundResults
  0B    Library/Caches/com.apple.dt.Xcode/WebKit
  0B    Library/Caches/com.apple.dt.Xcode/WebKitCache
 14G    Library/Caches/com.apple.dt.Xcode



du -h -d 1 | grep G Library/Application\ Support

  0B    Library/Application\ Support/com.github.GitHub.ShipIt
5,2G    Library/Application\ Support/GIMP
 16K    Library/Application\ Support/GitHub for Mac
4,0G    Library/Application\ Support/Google
3,0M    Library/Application\ Support/Gtk2
1,9G    Library/Application\ Support/MailMate
 13G    .

Kurz zusammengefasst: Am meisten Potential zum Aufräumen gibt es in den folgenden Verzeichnissen:

  • Library/Developer/Xcode
  • Library/Developer/CoreSimulator
  • Library/Caches/com.apple.dt.Xcode/Downloads (nur Xcode 8, existiert in Xcode 9 nicht mehr)

Aber natürlich können Sie in diesen Verzeichnissen nicht einfach alles blind löschen …

Unnötige Verzeichnisse vorerst umbenennen, dann löschen

Beginnen Sie mit Library/Developer/Xode. Hier können Sie den Inhalt von drei Verzeichnissen gefahrlos löschen:

  • DerivedData enthält Objektdateien und andere kompilierte Dateien. Diese Dateien werden bei Bedarf beim nächsten Kompilieren neu erzeugt. Bei großen Projekten wird das Kompilieren also erstmalig ein wenig länger als sonst dauern, davon abgesehen sind aber keine Nebenwirkungen zu erwarten.

  • iOS DeviceSupport enthält Debugging-Daten für alle iOS-Versionen, für die Sie je Apps entwickelt bzw. getestet haben. Am sinnvollsten wäre es hier, alle Unterverzeichnisse außer der für die gerade aktuellste iOS-Version zu löschen. Sie können es sich aber noch einfacher machen und überhaupt alle Unververzeichnisse löschen. Xcode wird dann vor dem Ausführen der nächsten App eine Weile processing symbol files anzeigen und die erforderlichen Dateien für die gerade aktuellste Version neu erzeugen. Bei mir hat das ca. eine Minute gedauert.

  • tvOS DeviceSupport enthält analoge Daten für tvOS-Versionen.

  • Wenn Sie Apps für watchOS entwickeln, wird es vermutlich auch dafür ein entsprechendes Verzeichnis geben — dazu kann ich aus eigener Erfahrung aber noch nichts sagen.

Bevor Sie loslegen, beenden Sie Xcode. (Kein Programm reagiert besonders erfreut, wenn man seine Dateien im laufenden Betrieb einfach löscht/verschiebt.) Danach öffnen Sie ein Terminal-Fenster und führen die folgenden Kommandos aus:

cd Library/Developer/Xcode
mkdir bak
mkdir bak/derived
mv DerivedData* bak/derived
mkdir bak/ios-device
mv iOS\ DeviceSupport/* bak/ios-device
mkdir bak/tvos-device
mv tvOS\ DeviceSupport/* bak/tvos-device

Die zu löschenden Verzeichnisse werden also vorerst nur in das bak-Verzeichnis verschoben. Sollten wider Erwarten Probleme auftreten, können Sie Ihre Aufräumarbeiten rückgängig machen.

Update 17.8.2017: In Xcode 9 gibt es in Library/Caches/com.apple.dt.Xcode kein Downloads-Unterverzeichnis mehr. Als Nächstes widmen Sie sich dem Caches-Verzeichnis: Sicherheitshalber gehen Sie hier analog vor, d.h., Sie verschieben die zu löschenden Dateien vorerst in ein Backup-Verzeichnis.

Etwas problematischer ist das Verzeichnis Library/Developer/CoreSimulator: Es enthält für jedes iOS-Gerät, das Ihnen momentan im Simulator zur Verfügung steht, ein Verzeichnis mit den jeweiligen Benutzerdaten (von Ihnen per Xcode installierte Apps, Einstellungen etc.). Hier gibt es auch unzählige Verzeichnisse für iOS-Geräte in alten Versionen, die Sie womöglich schon seit Jahren nicht mehr verwendet haben.

Es gibt hier zwei Strategien: Die eine besteht darin, gezielt die Verzeichnisse zu löschen, die Sie nicht mehr brauchen. Das ist aber mit viel Mühe verbunden, weil als Verzeichnisnamen UUIDs verwendet werden. Sie können nun natürlich auf das Datum der letzten Änderung achten, aber viel einfacher ist es, wiederum alles zu löschen bzw. vorerst in ein Backup-Verzeichnis zu verschieben.

cd
cd Library/Developer/CoreSimulator
mkdir bak
mv Devices/* bak

Das hat allerdings den Nachteil, dass Ihnen beim nächsten Start von Xcode kein einziger Simulator zur Verfügung steht. Sie müssen nun im Xcode-Fenster Windows/Devices and Simulators zuerst die noch vorhandenen Referenzen der gelöschten Simulaturen auch hier löschen (anklicken und [Backspace] drücken) und dann die gewünschten
Simulator-Modelle neu die gewünschten Simulator-Modelle neu einrichten.

In Xcode ein neues Simulator-Gerät einrichten
In Xcode ein neues Simulator-Gerät einrichten

Das kostet ein wenig Zeit und Mühe, hat aber den Vorteil, dass beim Start von Apps nicht eine riesige Auswahl von Simulatoren angezeigt werden, sondern wirklich nur die für Sie relevanten Modelle.

Das Ergebnis

Testen Sie nun, ob Xcode weiterhin funktioniert. Kompilieren Sie ein paar Apps, führen Sie diese auf iOS-Geräten und im neuen Simulator aus. Wenn alles klappt, dann können Sie die zuvor eingerichteten Backup-Verzeichnisse jetzt ganz löschen:

cd
rm -rf Library/Caches/com.apple.dt.Xcode/bak/
rm -rf Library/Developer/Xcode/bak/
rm -rf Library/Developer/CoreSimulator/bak
df -h /
Filesystem   Size   Used  Avail Capacity   iused    ifree %iused  Mounted on
/dev/disk1  931Gi  706Gi  225Gi    76% 185127135 58861401   76%   /

Ergebnis: 90 GByte Speicherplatz zurückgewonnen!

Time-Machine-Optionen

Um Platz auch bei Ihren Time-Machine-Backups zu sparen, können Sie bei dessen Optionen die Verzeichnisse, die Sie gerade aufgeräumt haben, in Zukunft ausschließen:

Bei Time-Machine-Backups einige Xcode-Verzeichnisse mit temporären Dateien ignorieren
Bei Time-Machine-Backups einige Xcode-Verzeichnisse mit temporären Dateien ignorieren

Zur Verzeichnisauswahl müssen Sie die Option Unsichtbare Objekte einblenden aktivieren — sonst wird das Library-Verzeichnis nicht angezeigt.

Quellen