需求分析
-
在打包應用之后,需要自增 Version 的最后一位 和 Build 的值。
只在 Archive(Release) 的時候觸發該自增。
添加 RunScript
在 項目Target
-> Build Phases
-> 點擊+號
-> New Run Script Phase
然后添加如下內容:
if [ $CONFIGURATION == Release ]; then
echo "當前為 Release Configuration,開始自增 Build"
plist=${INFOPLIST_FILE}
buildnum=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}")
if [[ "${buildnum}" == "" ]]; then
echo "Error:在Plist文件里沒有 Build 值"
exit 2
fi
buildnum=$(expr $buildnum + 1)
/usr/libexec/PlistBuddy -c "Set CFBundleVersion $buildnum" "${plist}"
echo "開始自增 Version 最后一位"
versionNum=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${plist}")
thirdPartVersonNum=`echo $versionNum | awk -F "." '{print $3}'`
thirdPartVersonNum=$(($thirdPartVersonNum + 1))
newVersionStr=`echo $versionNum | awk -F "." '{print $1 "." $2 ".'$thirdPartVersonNum'" }'`
/usr/libexec/PlistBuddy -c "Set CFBundleShortVersionString $newVersionStr" "${plist}"
else
echo $CONFIGURATION "當前不為 Release Configuration"
fi
注意
因為我的版本號是xx.xx.xx
這樣的形式,所以我以 .
拆分版本號后,取出第三個值來增加,最后再拼接回來。
versionNum=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "${plist}")
# 這里取出第三個值
thirdPartVersonNum=`echo $versionNum | awk -F "." '{print $3}'`