Poradnik miejsca dla programistów

Xcode zabiera mi całe miejsce

Dwadzieścia do sześćdziesięciu gigabajtów na czynnym Macu, rozłożonych na sześć folderów, z których Xcode nigdy sam żadnego nie sprząta. Oto każdy z nich, po co jest i czy możesz go usunąć.

14 dni za darmo, bez karty. Potem 15 $ jednorazowo na 3 komputery.

Bytesweep wypisuje według rozmiaru foldery DerivedData i obsługi urządzeń Xcode

Najpierw zmierz

Jedno polecenie mówi, jak suma rozkłada się na foldery Xcode, żebyś wiedział, który wziąć na cel:

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

Sześć folderów

DerivedData — zwykle największy · bezpieczny do usunięcia

Pliki pośrednie kompilacji, indeksy i pamięci podręczne modułów, jeden folder na projekt, trzymane na zawsze, także dla projektów usuniętych dawno temu.

~/Library/Developer/Xcode/DerivedData

Usunięcie kosztuje jedną wolną kompilację i nic więcej. To także standardowe rozwiązanie, gdy Xcode zachowuje się dziwnie, i dlatego każdy programista iOS zna tę ścieżkę na pamięć.

iOS DeviceSupport — duży · bezpieczny do usunięcia

Pamięci podręczne symboli skopiowane z każdego fizycznego urządzenia, jakie podłączyłeś, jeden folder na wersję iOS. Po kilka gigabajtów każdy i zbierają się dla telefonów, których już nie masz.

~/Library/Developer/Xcode/iOS DeviceSupport

Xcode skopiuje je ponownie, gdy następnym razem podłączysz urządzenie z tą wersją iOS — wolniejsze pierwsze połączenie i nic więcej.

Urządzenia CoreSimulator — duże · w większości bezpieczne

Każde symulowane urządzenie ma własny system plików i nigdy nie są odzyskiwane. Użyj polecenia samego Xcode, zamiast usuwać foldery, żeby jego baza pozostała spójna:

xcrun simctl delete unavailable

Aby pójść dalej, xcrun simctl delete all usuwa każde urządzenie symulowane. Same środowiska symulatorów zarządzane są w Xcode → Ustawienia → Komponenty.

Archiwa — małe, ale niezastąpione · zachowaj

Każda kompilacja, jaką kiedykolwiek wydałeś, wraz z jej symbolami debugowania dSYM.

~/Library/Developer/Xcode/Archives

To ten, który należy zostawić w spokoju. Bez dSYM wydanej kompilacji nie zsymbolizujesz raportów awarii od użytkowników, którzy jej używają — ślady stosu zostaną adresami szesnastkowymi na zawsze. Jeśli musisz tu odzyskać miejsce, zachowaj archiwa każdej wersji, która wciąż jest w obiegu.

I znowu po kolejnym wydaniu iOS

DerivedData wraca w dniu, w którym kompilujesz, DeviceSupport rośnie z każdym podłączonym urządzeniem — to powtarzalny obowiązek, nie rozwiązanie. Bytesweep znajduje wszystkie sześć folderów w jednym przebiegu, trzyma archiwa oznaczone jako do przejrzenia, a nie do sprzątnięcia, i cofa każde sprzątanie przez siedem dni — co ma znaczenie w dniu, w którym wyczyścisz niewłaściwy projekt.

Pamięć podręczna Swift Package Manager — bezpieczna do usunięcia

Sklonowane repozytoria zależności, pobierane ponownie na żądanie.

~/Library/Caches/org.swift.swiftpm

Stare środowiska symulatorów i stare wersje Xcode — z rozwagą

Poprzedni Xcode.app to samo w sobie 15 GB, a jego środowiska kolejne kilka. Zachowaj wersję, której nadal potrzebujesz do starszego projektu; resztę usuń przez Finder, a potem usuń powiązane środowiska w Ustawienia → Komponenty.

Dwa nawyki, które trzymają to w ryzach

Usuwaj DerivedData na projekt, nie hurtem

Każdy podfolder nosi nazwę projektu. Wyczyszczenie całego folderu wymusza przebudowę wszystkiego, nad czym właśnie pracujesz; wyczyszczenie tych z projektów zakończonych w zeszłym roku nie kosztuje absolutnie nic.

Sprawdzaj DeviceSupport po każdym wydaniu iOS

Rośnie o jeden folder na wersję iOS i na każde podłączone urządzenie, więc przez cały rok pnie się w górę po cichu. Dwie minuty każdego września nie pozwalają, by zrobiło się z tego 30 GB.

Znajdź wszystkie sześć naraz

Bytesweep rozpoznaje każdy folder Xcode po nazwie, pokazuje jego rozmiar i oznacza archiwa jako warte przejrzenia, a nie do sprzątnięcia. Wszystko, co czyścisz, trafia do punktu przywracania: cofnięcie jest o jedno kliknięcie przez siedem dni.

Zobacz też: Docker disk space · pełna lista dla Maca

Pytania

Czy bezpiecznie jest usunąć DerivedData?

Tak. Jest w całości wyprowadzony z twojego kodu, i dokładnie to mówi nazwa. Jedynym kosztem jest to, że następna kompilacja każdego objętego projektu będzie pełna.

Czy usunięcie DeviceSupport zepsuje debugowanie na moim telefonie?

Nie. Xcode skopiuje symbole ponownie, gdy następnym razem podłączysz urządzenie z tą wersją iOS. Pierwsze połączenie potem potrwa kilka minut dłużej.

Czy mogę usunąć archiwa Xcode?

Możesz, ale najpierw pomyśl. Archiwa zawierają pliki dSYM wydanych kompilacji, a bez nich raportów awarii z tych wersji nie da się zsymbolizować. Zachowaj wszystko, co wciąż jest u użytkowników; stare bety usuwaj śmiało.

Dlaczego sam Xcode.app jest taki duży?

Około 15 GB, bo zawiera łańcuchy narzędzi, SDK i środowiska symulatorów dla każdej platformy wspieranej przez Apple. Nieużywane środowiska symulatorów możesz usunąć w Xcode → Ustawienia → Komponenty, ale sam pakiet aplikacji jest, jaki jest.

Czy Xcode sprząta coś z tego automatycznie?

Nie. Żaden z tych folderów nie ma limitu rozmiaru ani terminu ważności. To właśnie dlatego ta strona istnieje.