方案一:
當(dāng)修改一個(gè) Swift 文件或多個(gè)文件,然后 Build , 引起全局編譯的時(shí)候,可以先到 Report Navigator 里面查看這次 Build,等這次修改的Swift 的文件都編譯完(Xcode 會(huì)優(yōu)先編譯本次修改的文件 ),停止 Build,再重新 Build,第二次 Build 一般會(huì)在 60s 以內(nèi)成功。
缺點(diǎn):1、初次編譯和 Clean完,需要大概 1500s 左右
2、有時(shí)會(huì)引起 code 1 錯(cuò)誤,這個(gè)錯(cuò)誤可以通過(guò)先 Clean ,再 Build 修復(fù)。 PS:只要在Report Navigator 等修改的 Swift 文件編譯完,基本不會(huì)引起 code1 錯(cuò)誤
3、部分情況下會(huì)失效
2017.2.23 號(hào)的優(yōu)化已經(jīng)將 Clean Build 時(shí)間降低到 1000s 左右,也去掉了很多引起重新編譯的代碼。每天編譯次數(shù)比較多的情況建議使用這個(gè)方案
方案二:
在 Project 的 Build Setting 里面添加 SWIFT_WHOLE_MODULE_OPTIMIZATION = YES (如下圖),每次編譯大概 120s 左右。
缺點(diǎn): 每次編譯都是 120s 左右,有點(diǎn)讓人抓狂。
2017.2.23 號(hào)的優(yōu)化已經(jīng)將 Clean Build 時(shí)間降低到 155s 左右,增量編譯時(shí)間 100s 左右,每天編譯次數(shù)不是特別多,或需要及時(shí)調(diào)試建議使用這種方案
方案三:
將每個(gè) Target 的build setting'Swift Compiler - Code Generation' 的 'Optimization Level' 設(shè)為 ?'Fast, Whole Module Optimization',
同時(shí)需要將 'Swift Compiler - Custom Flags' 的 'Other swift Flag' 增加 '-Onone' (也可以在 PROJECT 下Build Settings -Swift Compiler - Custom Flags' 的 'Other swift Flag' 一次性增加 '-Onone')
Clean Build ?時(shí)間 146s 左右,增量編譯時(shí)間 97s 左右,這個(gè)是最快方案,也是設(shè)置最繁瑣方案。
PS:刪除 SwiftLint 的腳本可以降低所有編譯時(shí)間 10s - 15s 左右,有需求的可以臨時(shí)刪除執(zhí)行Swiftlint 的腳本,腳本如下:
if which swiftlint >/dev/null;
then
swiftlint
#cd Teambition&&swiftlint
else
echo"SwiftLint does not exist, download fromhttps://github.com/realm/SwiftLint"
fi