Добавить объявление

Ускоряем билд проекта в Xcode

Всем привет! Сегодня поговорим о боли каждого 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: настраиваем автоматический мониторинг, чтобы проблемы не возвращались.

Вывод:


Оптимизация сборки - это не разовое мероприятие, а культура разработки. Каждая сэкономленная секунда, умноженная на количество билдов и разработчиков в команде, дает огромную экономию времени в долгосрочной перспективе.
12.11.2025 50 495