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.
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:
Zur Verzeichnisauswahl müssen Sie die Option Unsichtbare Objekte einblenden aktivieren — sonst wird das Library-Verzeichnis nicht angezeigt.