Всем привет! Сегодня поговорим о боли каждого iOS-разработчика: долгая сборка проекта, которая крадет наше время, концентрацию и нервы.
Представьте: делаете небольшую правку в коде, ждете билд 3-5 минут -> проверяете -> снова правка -> снова ждете... За день набегают десятки потерянных минут!
Оказывается, можно ускорить процесс в разы без перехода на новый MacBook, главное найти «узкие места»:
Анализируем временную шкалу сборки (Build Timeline):
Запускаем чистый билд и смотрим
Report Navigator, включаем
Assistant. Видим наглядную диаграмму, где процессы идут параллельно, а где в порядке очереди.
Диаграмма покажет не просто общее время, а именно те этапы, которые выполняются последовательно вместо параллельного выполнения. Часто оказывается, что один медленный скрипт или компиляция большого файла блокируют всю остальную сборку, создавая эффект пробки.
Этот анализ - первый и самый важный шаг: без понимания где именно теряется время, все оптимизации будут слепыми. Вы узнаете, стоит ли бороться с компиляцией Swift, пересматривать скрипты или менять структуру модулей.
Оптимизируем Build Phases:
- SwiftLint запускаем только для измененных файлов.
- Генерацию кода запускаем только для релизных сборок.
- Проверяем влияние пакетов Swift Packages на время сборки.
Включаем мониторинг медленного кода:
Добавляем в
Other Swift Flags для
Debug:
-Xfrontend -warn-long-function-bodies=100
-Xfrontend -warn-long-expression-type-checking=100
Компилятор покажет функции, где проверка типов занимает больше 100ms - часто это огромные
SwiftUI view или сложные методы.
Настройка:
- Шаг 1: запускаем Build Timing Summary (Product -> Perform Action -> Build with Timing Summary).
- Шаг 2: смотрим, что больше всего тормозит: компиляция или скрипты.
- Шаг 3: точечно оптимизируем самые медленные этапы.
- Шаг 4: настраиваем автоматический мониторинг, чтобы проблемы не возвращались.
Вывод:
Оптимизация сборки - это не разовое мероприятие, а культура разработки. Каждая сэкономленная секунда, умноженная на количество билдов и разработчиков в команде, дает огромную экономию времени в долгосрочной перспективе.