方案一:
当修改一个 Swift 文件或多个文件,然后 Build , 引起全局编译的时候,可以先到 Report Navigator 里面查看这次 Build,等这次修改的Swift 的文件都编译完(Xcode 会优先编译本次修改的文件 ),停止 Build,再重新 Build,第二次 Build 一般会在 60s 以内成功。
缺点:1、初次编译和 Clean完,需要大概 1500s 左右
2、有时会引起 code 1 错误,这个错误可以通过先 Clean ,再 Build 修复。 PS:只要在Report Navigator 等修改的 Swift 文件编译完,基本不会引起 code1 错误
3、部分情况下会失效
2017.2.23 号的优化已经将 Clean Build 时间降低到 1000s 左右,也去掉了很多引起重新编译的代码。每天编译次数比较多的情况建议使用这个方案
方案二:
在 Project 的 Build Setting 里面添加 SWIFT_WHOLE_MODULE_OPTIMIZATION = YES (如下图),每次编译大概 120s 左右。
缺点: 每次编译都是 120s 左右,有点让人抓狂。
2017.2.23 号的优化已经将 Clean Build 时间降低到 155s 左右,增量编译时间 100s 左右,每天编译次数不是特别多,或需要及时调试建议使用这种方案
方案三:
将每个 Target 的build setting'Swift Compiler - Code Generation' 的 'Optimization Level' 设为 'Fast, Whole Module Optimization',
同时需要将 'Swift Compiler - Custom Flags' 的 'Other swift Flag' 增加 '-Onone' (也可以在 PROJECT 下Build Settings -Swift Compiler - Custom Flags' 的 'Other swift Flag' 一次性增加 '-Onone')
Clean Build 时间 146s 左右,增量编译时间 97s 左右,这个是最快方案,也是设置最繁琐方案。
PS:删除 SwiftLint 的脚本可以降低所有编译时间 10s - 15s 左右,有需求的可以临时删除执行Swiftlint 的脚本,脚本如下:
if which swiftlint >/dev/null;
then
swiftlint
#cd Teambition&&swiftlint
else
echo"SwiftLint does not exist, download fromhttps://github.com/realm/SwiftLint"
fi