Я работаю в команде над проектом iOS, который вырос до огромных размеров с точки зрения кода Swift.
Требуется около 10 минут, чтобы построить проект из чистого состояния и, что наиболее тщательно, 30 секундсоздать и запустить проект после изменения чего-либо в коде, даже если этот код относится к одной строке в частном методе в файле Swift, символы которого больше нигде не используются.
Мы перепробовали множествочто-то, чтобы улучшить время сборки, включая методы из этого замечательного ресурса https://github.com/fastred/Optimizing-Swift-Build-Times Ничего не помогло, вам все равно нужно подождать целых 30 секунд после изменения каждой мелочи, чтобы увидеть ее в приложении.
Мы используемXcode 10, «Новая система сборки» с режимом компиляции, установленным в Incremental.Если я собираю проект с помощью Perform Action> Build With Timing Summary, самая длинная фаза - это «Быстрая компиляция кода», в которой нет ничего нового.Мы подозреваем, что XCode пытается следовать консервативному решению о компиляции и перестраивает каждый файл Swift, который потенциально может иметь какое-либо соединение с измененным кодом Swift.И кажется, что XCode ошибочен в большинстве случаев и выполняет избыточную работу.
Я вроде бы пропускаю дни Objective-C, когда компилятор просматривал все операторы import / include и перестраивал только явно объявленные зависимости, что означалоневероятно быстрое время сборки.
Так что теперь я думаю, что, возможно, мы могли бы разбить наш проект на модули и повсеместно использовать import
в Swift, чтобы сообщить компилятору, какие файлы Swift зависят от других файлов Swift.
Есть ли хороший и, возможно, автоматизированный способ модульного масштабирования большого проекта на множество мелких компонентов для ускорения регулярных сборок типа «попробуй как работает»?