Każdego programistę iOS, macOS, watchOS i VisionOS doświadcza ten sam powracający koszmar: budzenie się i wyświetlanie alertu informującego, że na komputerze Mac pozostało mniej niż 5 GB miejsca na dysku. Nie pobrałeś żadnych gier ani filmów — więc gdzie podział się Twój dysk SSD o pojemności 512 GB? W 95% przypadków winowajcą są Xcode DerivedData i budowanie pamięci podręcznych.
Podczas aktywnej kompilacji Xcode generuje pośrednie pliki obiektów, prekompilowane nagłówki, tabele symboli indeksujących i pamięci podręczne modułów kompilatora. W ciągu miesięcy tworzenia różnych gałęzi i zależności foldery te nigdy nie są czyszczone samodzielnie. Oto, jak w czysty i bezpieczny sposób odzyskać od 50 GB do 100 GB miejsca na dysku dla programistów.

Gdzie Xcode ukrywa swoje duże pamięci podręczne na dysku
Xcode dystrybuuje swoje tymczasowe produkty do kompilacji i pliki pomocnicze w pięciu głównych katalogach:
- DerivedData (
~/Library/Developer/Xcode/DerivedData): Pośrednie pliki obiektów, indeksowane bazy danych i produkty do kompilacji. Zużywa 20–60 GB. - Obsługa urządzeń iOS (
~/Library/Developer/Xcode/iOS DeviceSupport): Symbole z każdego fizycznego iPhone'a lub iPada, jaki kiedykolwiek podłączałeś. Zużywa 5 GB–15 GB na wersję iOS. - Archiwa (
~/Library/Developer/Xcode/Archives): Stare kompilacje .xcarchive zapisywane podczas tworzenia produkcyjnych wydań App Store. W ciągu roku może wzrosnąć do ponad 40 GB. - Pamięć podręczna menedżera pakietów Swift (
~/Library/Caches/org.swift.swiftpm): Sklonowane repozytoria Git i skompilowane pliki binarne kasy dla zależności SPM. - XCTestDevices (
~/Library/Developer/XCTestDevices): Osierocone tymczasowe klony symulatora utworzone podczas równoległych przebiegów testowych.
Czy usuwanie danych pochodnych jest bezpieczne?
Tak, zdecydowanie. DerivedData można w 100% regenerować. Następnym razem, gdy otworzysz projekt i naciśniesz Cmd+B, Xcode ponownie zaindeksuje Twój kod i skompiluje niezbędne pliki obiektowe. Jedynym kosztem jest nieco dłuższy początkowy czas kompilacji przy pierwszym uruchomieniu.
Ręczne usuwanie za pomocą terminala a MagicMacCleaner
Możesz usunąć DerivedData ręcznie, zamykając Xcode i uruchamiając: rm -rf ~/Library/Developer/Xcode/DerivedData/*. Jednak ręczne usunięcie terminala powoduje wyczyszczenie wszystkich projektów na raz – nawet tego, nad którym teraz pracujesz.
Dedykowany moduł Xcode Deep Clean programu MagicMacCleaner rozwiązuje ten problem, odczytując datę modyfikacji każdego podfolderu projektu. Pozwala zachować aktywne projekty w nienaruszonym stanie, jednocześnie usuwając nieaktywnych klientów i starsze repozytoria jednym kliknięciem.
Przebieg pracy dla programistów mobilnych: zwalnianie miejsca na testowych iPhone'ach
Podczas gdy czyszczenie pamięci podręcznej Xcode, środowisk wykonawczych symulatora i kontenerów kompilacji zwalnia istotne miejsce na komputerze Mac, fizyczne urządzenia testowe z systemem iOS szybko zapychają się kompilacjami testowymi, artefaktami awarii, nagraniami ekranu diagnostycznego i zrzutami ekranu kontroli jakości. Utrzymywanie oszczędnego sprzętu do testów fizycznych jest niezbędne do szybkiego debugowania na urządzeniu i niezawodnego wdrażania.
- Clearly Smart Storage Cleaner: Kompresuje nagrania ekranu raportów o błędach obciążających gigabajty, wykrywa zduplikowane nośniki testowe i porządkuje nieuporządkowane kontakty na iPhone'ach programistycznych i osobistych.
- Swipe Photo Cleaner: Szybko przeglądaj i usuwaj setki zrzutów ekranu z testów interfejsu użytkownika oraz serii demonstracji za pomocą łatwych gestów przesuwania w celu usunięcia.
Wskazówka dla programistów ekosystemu Apple: optymalizacja urządzenia testowego
Mało miejsca na podłączonych urządzeniach iOS może powodować przekroczenie limitu czasu wdrażania bezprzewodowego Xcode i błędy debugowania LLDB. Regularne czyszczenie multimediów na urządzeniu zapobiega błędom wdrażania tajemniczych kompilacji.
