Я недавно проверил свежую версию нашего iOS-приложения из git, созданную из командной строки через xcodebuild
.Затем я построил второй раз, используя ту же самую команду, , не внося никаких изменений в файлы в репо (даже не открывая их).
Я ожидал, что вторая сборка не займет временивообще, но на самом деле это заняло больше времени, чем первое:
user$ time xcodebuild -sdk 'iphonesimulator' -scheme 'DemoApp' -configuration 'Debug' -target 'DemoApp' build > /dev/null
real 5m45.849s
user 0m15.270s
sys 0m5.640s
user$ time xcodebuild -sdk 'iphonesimulator' -scheme 'DemoApp' -configuration 'Debug' -target 'DemoApp' build > /dev/null
real 6m8.858s
user 0m12.904s
sys 0m4.198s
Если я делаю сборку в xcode без изменений, она собирается и запускается в считанные секунды.
Вот что я пытался получить инкрементные сборки в командной строке:
- Я пытался добавить
-derivedDataPath ~/Library/Developer/Xcode/DerivedData
, но получил те же результаты. - Я добавилфлаг
-incremental
для других аргументов Swift. - Я отключил все сценарии оболочки и убедился, что между сборками не было файлов
Не поддерживает xcodebuild
инкрементные сборки?Есть ли способ выяснить, почему это происходит?
Я использую последнюю версию Xcode и новую систему сборки Xcode 10.Большая часть кода написана быстро, если в этом есть какая-то разница.
Редактировать: переход на старую сборку системы с постепенным увеличением с помощью xcodebuild
менее чем за 30 секунд.
Обновление:
Способ, которым я тестирую это: у меня есть задание Jenkins, которое будет клонировать репозиторий и выполнять полную очистку: запустить очистку xcodebuild и удалить каталог сборки и каталог производных данных с помощьюрука на всякий случай.Тогда это делает сборку.Затем он не вносит изменений и выполняет сборку снова.Вторая сборка - это та, которую я рассчитываю.