Xcode11升级后以前自增Build号不好使了,修改了下自增脚本
以前是这样获取的:
BundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${InfoplistPath}")
然鹅现在得到的是一个字符串 "${CURRENT_PROJECT_VERSION}"
...
所以修改了下脚本直接通过${CURRENT_PROJECT_VERSION}
获取这个参数值.
但是有2个问题...
- 获取到后写入的是本地Info.plist文件,下次又拿不到.
- 直接在工程Gerneral-Identity里填写版本号又会让Info.plist文件被重置成字符串.
所以直接通过获取Info.plist的版本号和${CURRENT_PROJECT_VERSION}的值作对比用高的那个就解决了.
PS:
在外部shell中可以这样获取:
获取版本号
BundleShortVersion=`xcodebuild -showBuildSettings | grep MARKETING_VERSION | tr -d 'MARKETING_VERSION ='`
获取build号
BundleVersion=`xcodebuild -showBuildSettings | grep CURRENT_PROJECT_VERSION | tr -d 'CURRENT_PROJECT_VERSION ='
直接上代码:
echo "AddBuildNumber Action$ACTION"
#install才增加
if [ "$ACTION" == "install"];
then
echo "AddBuildNumber begin"
#按需修改地址
plist=${PROJECT_DIR}/info.plist
#获取plist的版本号
InfoBuild=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${plist}")
#判断是否是字符串
if echo $InfoBuild | grep -q '[^0-9]'
then
InfoBuild=0
fi
echo "AddBuildNumber InfoBuild...$InfoBuild"
#工程的版本号
ProjectVersion=${CURRENT_PROJECT_VERSION}
echo "AddBuildNumber ProjectVersion...$ProjectVersion"
#取最大的一个
if [ $InfoBuild -ge $ProjectVersion ] ;then
resultNum=$InfoBuild
else
resultNum=$ProjectVersion
fi
echo "AddBuildNumber resultNum...$resultNum"
#版本加1
resultNum=$(expr $resultNum + 1)
#写入plist
/usr/libexec/Plistbuddy -c "Set CFBundleVersion $resultNum" "${plist}"
echo "AddBuildNumber number to$resultNum"
fi