AskCleanAskClean

Clean Build Folder или удалить DerivedData: в чём разница?

Команда AskClean · Обновлено 2026-07-28

Проверено инженерной командой AskClean · Методика тестирования и редакционные правила

Clean Build Folder очищает продукты сборки текущего проекта, а удаление DerivedData сбрасывает более широкий набор данных: продукты, индексы, кеши модулей и журналы. Для локальной ошибки сборки начните с Clean Build Folder; для освобождения места или повреждённого индекса удаляйте DerivedData выбранного проекта.

Короткий ответ: область очистки разная

Product > Clean Build Folder (Shift-Command-K) работает в контексте открытого проекта и выбранной схемы. Команда заставляет Xcode заново собрать продукты, но не обязана сбрасывать все индексы и данные других проектов.

DerivedData — каталог верхнего уровня для всех проектов, которые используют стандартное расположение. Удаление одной его подпапки сбрасывает проект точечно; удаление всего каталога заставляет каждый проект заново собраться и проиндексироваться.

Что выбрать при ошибке сборки

Если ошибка появилась после смены ветки, конфигурации или файлов ресурсов, сначала закройте запущенное приложение и выполните Clean Build Folder. Это самый дешёвый сброс: он сохраняет больше кешей и поэтому быстрее возвращает проект к работе.

Если Xcode показывает устаревшие ошибки, переход к определению ведёт не туда, автодополнение сломано или Clean Build Folder не помог, закройте Xcode и удалите DerivedData только проблемного проекта. Полный сброс всех проектов нужен редко.

Очистка не исправляет настоящую ошибку в исходном коде или зависимостях. Если одинаковая ошибка воспроизводится после чистой сборки, ищите причину в настройках проекта, Package.resolved, окружении или коде.

Что выбрать для освобождения места

Clean Build Folder — инструмент диагностики, а не полноценная уборка диска. Он может вернуть часть места, но старые проекты, индексы и другие данные DerivedData останутся. Для диска сначала измерьте подпапки DerivedData и удалите те проекты, к которым не возвращаетесь.

Не начинайте с rm -rf. Finder позволяет отправить выбранные папки в Корзину и восстановить их до очистки Корзины. Терминал полезен для автоматизации только после проверки точного пути.

Как проверить результат

Запишите размер DerivedData до действия, примените только один способ и измерьте снова. После Clean Build Folder соберите текущую схему; после удаления DerivedData откройте Xcode и дождитесь первой сборки и индексации.

Такое сравнение отделяет освобождённое место от цены восстановления. Универсальной цифры нет: результат зависит от числа проектов, конфигураций и архитектур, которые собирались на конкретном Mac.

Таблица выбора

СценарийДействиеЦена восстановления
Сбой сборки текущей схемыProduct > Clean Build FolderПовторная сборка текущего проекта; индексы других проектов сохраняются.
Повреждённый индекс одного проекта~/Library/Developer/Xcode/DerivedData/<project>Полная сборка и индексация выбранного проекта.
Срочно нужно место~/Library/Developer/Xcode/DerivedDataУдаляйте крупные старые подпапки; затронутые проекты пересоберутся при следующем открытии.
Старые симуляторыXcode Settings > ComponentsЭто отдельная категория; Clean Build Folder и DerivedData её не очищают.

Таблица описывает область действия, а не обещает конкретное число гигабайт. Размер нужно измерять на вашем Mac до и после.

Частые вопросы

Clean Build Folder удаляет весь DerivedData?

Нет. Команда очищает продукты сборки текущего контекста, но не является эквивалентом удаления общего каталога DerivedData со всеми индексами и данными других проектов.

Безопасно ли удалить DerivedData одного проекта?

Да. Там лежат производные файлы, которые Xcode создаёт заново. Исходный код и история git не удаляются. Первая сборка и индексация займут больше времени.

Нужно ли закрывать Xcode?

Перед ручным удалением DerivedData — да. Это снижает риск, что индексатор одновременно держит или пересоздаёт файлы. Для встроенной команды Clean Build Folder закрывать Xcode не нужно.

Почему после очистки ошибка осталась?

Вероятно, причина не в кеше. Проверьте сообщение компилятора, настройки схемы, версии зависимостей, Package.resolved, выбранный SDK и изменения текущей ветки.

Источники

Продолжить диагностику Xcode