xcode编译 build号自增

由于测试的需求,最近要给 version 相同的安装包区分不同的打包版本,于是想起了之前用xcode中build号来做,因为这个是可以自增的,通过在build phases中添加脚本来执行:

echo $CONFIGURATION

if [ "Release" == "${CONFIGURATION}" ]

then

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")

buildNumber=$(($buildNumber + 1))

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

echo "build number increase"

fi

但是发现编译错误,原来 Xcode11后 会把 info.plist文件中的 CFBundleVersion 修改为$(CURRENT_PROJECT_VERSION)CFBundleShortVersionString 修改为 $(MARKETING_VERSION),最终 buildNumber 的值是字符串,无法进行 + 1 操作,所以导致错误。 网上的解决方案是把上面脚本中的

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")

替换成 buildNumber=$CURRENT_PROJECT_VERSION,但是这样做只在第一次编译的时候起作用,因为自增之后没有改变CURRENT_PROJECT_VERSION 的值,而是改变了 plist文件中的 Bundle version。所以在其基础上加上一条if语句,最终脚本如下:

echo $CONFIGURATION

if [ "Release" == "${CONFIGURATION}" ]

then

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}")

if [ "$buildNumber" == "\$(CURRENT_PROJECT_VERSION)" ]

then

buildNumber=$CURRENT_PROJECT_VERSION

fi

buildNumber=$(($buildNumber + 1))

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${PROJECT_DIR}/${INFOPLIST_FILE}"

echo "build number increase"

fi

测试debug环境时,只需要把第二行脚本中的 “Release” 换成 Debug”, command + B 就可以看见变化啦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值