Каждый разработчик iOS, macOS, watchOS и VisionOS сталкивается с одним и тем же повторяющимся кошмаром: просыпаясь от оповещения о том, что на вашем Mac осталось менее 5 ГБ свободного места на диске. Вы не загружали ни игры, ни фильмы — так куда же делся ваш SSD на 512 ГБ? В 95% случаев виноват Xcode DerivedData и кеши сборки.
Во время активной компиляции Xcode генерирует промежуточные объектные файлы, предварительно скомпилированные заголовки, индексирующие таблицы символов и кэши модулей компилятора. За месяцы создания различных ветвей и зависимостей эти папки никогда не удаляются самостоятельно. Вот как можно аккуратно и безопасно освободить от 50 ГБ до 100 ГБ дискового пространства разработчика.

Где Xcode скрывает свои тяжелые дисковые кэши
Xcode распространяет свои временные продукты сборки и файлы поддержки по пяти основным каталогам:
- DerivedData (
~/Library/Developer/Xcode/DerivedData): Промежуточные объектные файлы, индексные базы данных и продукты сборки. Потребляет 20–60 ГБ. - Поддержка устройств iOS (
~/Library/Developer/Xcode/iOS DeviceSupport): символы с каждого физического iPhone или iPad, который вы когда-либо подключали. Занимает 5–15 ГБ для каждой версии iOS. - Архивы (
~/Library/Developer/Xcode/Archives): старые сборки .xcarchive, сохраняемые при создании рабочих выпусков App Store. За год может вырасти до 40 ГБ и более. - Кэш диспетчера пакетов Swift (
~/Library/Caches/org.swift.swiftpm): клонированные репозитории git и скомпилированные двоичные файлы извлечения для зависимостей SPM. - XCTestDevices (
~/Library/Developer/XCTestDevices): потерянные временные клоны симулятора, созданные во время параллельных тестовых запусков.
Безопасно ли удалять производные данные?
Да, абсолютно. DerivedData подлежит 100 % регенерированию. В следующий раз, когда вы откроете проект и нажмете Cmd+B, Xcode повторно проиндексирует ваш код и скомпилирует необходимые объектные файлы. Единственная цена — немного большее время начальной сборки при первом запуске.
Удаление вручную через терминал или MagicMacCleaner
Вы можете удалить DerivedData вручную, выйдя из Xcode и выполнив: rm -rf ~/Library/Developer/Xcode/DerivedData/*. Однако ручное удаление терминала уничтожает сразу все ваши проекты, даже тот, над которым вы сейчас работаете.
Специальный модуль Xcode Deep Clean MagicMacCleaner решает эту проблему, считывая дату изменения каждой подпапки проекта. Это позволяет вам сохранить активные проекты без изменений, одновременно очищая неактивные клиенты и устаревшие репозитории одним щелчком мыши.
Рабочий процесс мобильного разработчика: освобождение места на физических тестовых iPhone
Хотя очистка кешей Xcode, сред выполнения симулятора и контейнеров сборки освобождает жизненно важное пространство на вашем Mac, физические тестовые устройства iOS быстро засоряются тестовыми сборками, артефактами сбоев, записями диагностических экранов и скриншотами QA. Для быстрой отладки на устройстве и надежного развертывания важно поддерживать экономичность оборудования для физического тестирования.
- Clearly Smart Storage Cleaner: сжимает гигабайтные записи экрана отчетов об ошибках, обнаруживает дубликаты тестовых носителей и упорядочивает беспорядочные контакты на разрабатываемых и личных iPhone.
- Swipe Photo Cleaner: быстро просматривайте и удаляйте сотни тестовых скриншотов пользовательского интерфейса и демонстрационных серий с помощью простых жестов, позволяющих смахивать и удалять.
Совет для разработчиков экосистемы Apple: оптимизация тестовых устройств
Недостаток памяти на подключенных устройствах iOS может привести к тайм-аутам беспроводного развертывания Xcode и сбоям отладки LLDB. Регулярная очистка носителя на устройстве предотвращает загадочные ошибки развертывания сборки.
