XCode10下使用原來(lái)的編譯系統(tǒng)
當(dāng)升級(jí)XCode到10版本之后,在archive時(shí)遇到報(bào)錯(cuò)Cycle inside
這是因?yàn)椋?code>XCode10下有了一套新的編譯系統(tǒng),并且是默認(rèn)使用的。新的編譯系統(tǒng)對(duì)工程有了更嚴(yán)格的檢查。所以,會(huì)導(dǎo)致出現(xiàn)使用XCode9可以編譯通過(guò)的工程,在XCode10下無(wú)法編譯通過(guò)。
簡(jiǎn)單的解決方式可以使用如下的方式更改XCode10的編譯系統(tǒng)。仍然使用舊版的編譯系統(tǒng)。
- 選擇
File-workspace setting

- 在彈出框中選擇
Legacy Build System

xcodebuild使用舊版本編譯系統(tǒng)
上面的方式只更改了手動(dòng)通過(guò)XCode打包時(shí)編譯系統(tǒng)。使用xcodebuild命令進(jìn)行打包時(shí)的編譯環(huán)境仍然使用的是最新的編譯系統(tǒng)。
可以通過(guò)在xcodebuild命令后通過(guò)-UseModernBuildSystem=<value>參數(shù)來(lái)指定所使用的構(gòu)建系統(tǒng)。value=0 或 value=NO表示使用舊版本構(gòu)建系統(tǒng)(Legacy build system)。value=1或value=YES表示使用新的構(gòu)建系統(tǒng)。
如下所示
xcodebuild archive -workspace Toon.xcworkspace -scheme Toon -configuration Release -archivePath ~/Desktop/Toon.xcarchive CODE_SIGN_IDENTITY="iPhone Distribution: Beijing Syswin Internet Technology Co. Ltd." PROVISIONING_PROFILE="d73920ec-9178-4f26-a0b8-c89ca2bbea6d" -UseModernBuildSystem=NO
多XCode時(shí),更改xcodebuild所使用的XCode版本
當(dāng)安裝了多個(gè)版本的XCode時(shí),可以通過(guò)如下方式選擇xcodebuild所使用的xcode版本的
打開(kāi)xcode偏好設(shè)置,選擇location

或 可以通過(guò)xcode-select命令進(jìn)行選擇
參考資料
http://www.skyfox.org/modify-legacy-or-new-build-system.html