踩坑Xcode 10之New Build System

搶手的哥發表於2018-09-20

Xcode10 Version 10.0 (10A255)釋出,筆者第一時間升級。很顯然使用的過程中出現了不少問題,相信大家都有所耳聞,最典型的就是libstdc++.6.0.9問題,網上已經有不少方法了,這裡就不多說了。

遇到的問題

除了這個問題之外,筆者還遇到了build system的問題。在Xcode選單欄選擇File-- Workspace Setting就會出現如下的介面

build system.png
可以看出Xcode10是預設選中的最新的New Build System(Default),在這個編譯系統的環境下,我打包的CI指令碼一直會報錯

/bin/sh -c /Users/apple/Library/Developer/Xcode/DerivedData/XXX-bcebrkpahigmkngytwmzustybhev/Build/Intermediates.noindex/ArchiveIntermediates/XXX-SIT/IntermediateBuildFilesPath/XXX.build/Release-SIT-iphoneos/XXX.build/Script-187F7F6921537B0600C427DD.sh
[14:59:47]: ▸ Updating build number to 20180920145946
[14:59:47]: ▸ Set: Entry, ":CFBundleVersion", Does Not Exist
[14:59:47]: ▸ File Doesn't Exist, Will Create: /Users/apple/Library/Developer/Xcode/DerivedData/XXX-bcebrkpahigmkngytwmzustybhev/Build/Intermediates.noindex/ArchiveIntermediates/XXX-SIT/BuildProductsPath/Release-SIT-iphoneos/XXX.app.dSYM/Contents/Info.plist
[14:59:47]: ▸ Command PhaseScriptExecution failed with a nonzero exit code
複製程式碼

問題是出在了更改專案工程buildnumber的shell指令碼里:

# Update build number with buldTime
buildNumber=$(date +%Y%m%d%H%M%S)
echo "Updating build number to $buildNumber"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
複製程式碼

這段指令碼會在最後會把xxx.app.dSYM中的info.plist中的CFBundleVersion值修改成當前時間,而報錯說,這個info.plist不存在,建立的時候出問題報錯。

這會不會是蘋果的bug??

解決方法

把build system切換到 Legacy Build System,換言之就是切換成老的編譯系統,就OK了。

相關文章