前言
在我們 iOS app 打包時(shí),構(gòu)建版本號(hào)是自增的,一般我們都會(huì)通過(guò)腳本來(lái)實(shí)現(xiàn)。
升級(jí)到 Xcode 11 時(shí),我們會(huì)發(fā)現(xiàn)以前打包腳本中獲取構(gòu)建版本號(hào)的代碼:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
不能正常獲取到構(gòu)建版本號(hào),編譯項(xiàng)目的時(shí)候,會(huì)出現(xiàn)如下錯(cuò)誤:
error token is "$(CURRENT_PROJECT_VERSION) + 1"

錯(cuò)誤截圖
編譯報(bào)錯(cuò)原因
在 Xcode11 中,如果你修改了版本號(hào)和構(gòu)建版本號(hào),Xcode 會(huì)把 info.plist文件中的 CFBundleVersion 修改為$(CURRENT_PROJECT_VERSION)、CFBundleShortVersionString 修改為 $(MARKETING_VERSION),這是由于 Xcode11 增加 了 Current Project Version (構(gòu)建版本號(hào)) 和 Marketing Version(版本號(hào)) 配置,在 build setting 中我們可以找到,截圖如下:

解決方案
以下我們把完整的構(gòu)建版本號(hào)自增的腳本代碼做一個(gè)對(duì)比:
-
Xcode 11之前的完整的構(gòu)建版本號(hào)自增的腳本代碼:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
- 升級(jí)到
Xcode 11時(shí)的完整的構(gòu)建版本號(hào)自增的腳本代碼:
buildNumber=$CURRENT_PROJECT_VERSION
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
就這樣,問(wèn)題就完美的解決了。
Author
如果你有什么建議,可以關(guān)注我,直接留言,留言必回。