Speicher-Leitfaden für Entwickler

Xcode nimmt mir den ganzen Platz weg

Zwanzig bis sechzig Gigabyte auf einem aktiven Mac, verteilt auf sechs Ordner, von denen Xcode keinen je selbst aufräumt. Hier steht zu jedem, wofür er da ist und ob Sie ihn löschen können.

14 Tage kostenlos testen, keine Karte nötig. Danach einmalig 15 $ für 3 Rechner.

Bytesweep listet Xcodes DerivedData- und Gerätedateien-Ordner nach Größe

Zuerst messen

Ein Befehl zeigt Ihnen, wie sich die Summe auf Xcodes Ordner verteilt, damit Sie wissen, welchen Sie sich vornehmen:

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

Die sechs Ordner

DerivedData — meist der größte · gefahrlos löschbar

Build-Zwischenstände, Indizes und Modul-Caches, ein Ordner je Projekt, für immer aufbewahrt, auch für Projekte, die Sie längst gelöscht haben.

~/Library/Developer/Xcode/DerivedData

Es zu löschen kostet einen langsamen Build und sonst nichts. Es ist außerdem die Standardlösung, wenn Xcode sich seltsam verhält — deshalb kennt jeder iOS-Entwickler diesen Pfad auswendig.

iOS DeviceSupport — groß · gefahrlos löschbar

Symbol-Caches, kopiert von jedem physischen Gerät, das Sie je angeschlossen haben, ein Ordner je iOS-Build. Mehrere Gigabyte pro Stück, und sie sammeln sich für Telefone, die Sie nicht mehr haben.

~/Library/Developer/Xcode/iOS DeviceSupport

Xcode kopiert sie neu, sobald Sie das nächste Mal ein Gerät mit dieser iOS-Version anschließen — eine langsamere erste Verbindung, sonst nichts.

CoreSimulator-Geräte — groß · meist unbedenklich

Jedes simulierte Gerät hat sein eigenes Dateisystem, und sie werden nie zurückgeholt. Nutzen Sie Xcodes eigenen Befehl statt Ordner zu löschen, damit seine Datenbank konsistent bleibt:

xcrun simctl delete unavailable

Wenn Sie weiter gehen wollen: xcrun simctl delete all entfernt jedes Simulatorgerät. Die Simulator-Laufzeiten selbst verwalten Sie unter Xcode → Einstellungen → Komponenten.

Archive — klein, aber unersetzlich · behalten

Jeder Build, den Sie je ausgeliefert haben, mit seinen dSYM-Debugsymbolen.

~/Library/Developer/Xcode/Archives

Das ist der eine, den Sie in Ruhe lassen sollten. Ohne das dSYM eines veröffentlichten Builds können Sie Absturzberichte von Nutzern dieser Version nicht symbolisieren — die Stacktraces bleiben für immer Hex-Adressen. Wenn Sie hier unbedingt Platz schaffen müssen, behalten Sie die Archive jeder Version, die noch im Umlauf ist.

Und nach dem nächsten iOS-Release wieder

DerivedData ist an dem Tag zurück, an dem Sie bauen, DeviceSupport wächst mit jedem Gerät, das Sie anschließen — das ist eine wiederkehrende Pflicht, keine Lösung. Bytesweep findet alle sechs Ordner in einem Durchgang, hält Archive als zu prüfen statt zum Aufräumen markiert und macht jede Bereinigung sieben Tage lang rückgängig — was an dem Tag zählt, an dem Sie das falsche Projekt löschen.

Swift-Package-Manager-Cache — gefahrlos löschbar

Geklonte Abhängigkeits-Repositories, bei Bedarf neu geholt.

~/Library/Caches/org.swift.swiftpm

Alte Simulator-Laufzeiten und alte Xcode-Versionen — mit Bedacht löschbar

Ein früheres Xcode.app allein ist 15 GB groß, seine Laufzeiten noch ein paar mehr. Behalten Sie die Version, die Sie für ein älteres Projekt noch brauchen; löschen Sie den Rest im Finder und entfernen Sie danach die zugehörigen Laufzeiten unter Einstellungen → Komponenten.

Zwei Gewohnheiten, die es klein halten

DerivedData je Projekt löschen, nicht am Stück

Jeder Unterordner ist nach einem Projekt benannt. Den ganzen Ordner zu leeren erzwingt einen Neubau von allem, woran Sie gerade arbeiten; die Ordner der letztes Jahr beendeten Projekte zu leeren kostet überhaupt nichts.

DeviceSupport nach jedem iOS-Release prüfen

Es wächst um einen Ordner je iOS-Build und je angeschlossenem Gerät, klettert also das ganze Jahr leise nach oben. Zwei Minuten jeden September verhindern, dass daraus 30 GB werden.

Alle sechs auf einmal finden

Bytesweep erkennt jeden Xcode-Ordner am Namen, zeigt seine Größe und markiert Archive als zu prüfen statt zum Aufräumen. Alles, was Sie leeren, geht in einen Wiederherstellungspunkt, Rückgängig ist also sieben Tage lang ein Klick.

Verwandt: Docker disk space · die vollständige Mac-Liste

Fragen

Ist es sicher, DerivedData zu löschen?

Ja. Es ist vollständig aus Ihrem Quellcode abgeleitet, genau das bedeutet der Name. Der einzige Preis ist, dass der nächste Build jedes betroffenen Projekts ein vollständiger ist.

Zerstört das Löschen von DeviceSupport das Debuggen auf meinem Telefon?

Nein. Xcode kopiert die Symbole neu, sobald Sie das nächste Mal ein Gerät mit dieser iOS-Version anschließen. Die erste Verbindung danach dauert ein paar Minuten länger.

Kann ich Xcode-Archive löschen?

Können Sie, aber überlegen Sie vorher. Archive enthalten die dSYM-Dateien ausgelieferter Builds, und ohne sie lassen sich Absturzberichte dieser Versionen nicht symbolisieren. Behalten Sie alles, was noch bei Nutzern ist; alte Betas dürfen weg.

Warum ist Xcode.app selbst so groß?

Rund 15 GB, weil es die Toolchains, SDKs und Simulator-Laufzeiten für jede Plattform mitbringt, die Apple unterstützt. Ungenutzte Simulator-Laufzeiten können Sie unter Xcode → Einstellungen → Komponenten entfernen, aber das App-Bundle selbst ist, wie es ist.

Räumt Xcode davon irgendetwas automatisch auf?

Nein. Keiner dieser Ordner hat eine Größenbegrenzung oder ein Ablaufdatum. Genau deshalb gibt es diese Seite.