Fork me on GitHub

使用shell脚本将build版本号自动修改为当前日期

产品部要求App内加入BI埋点,好用来统计产品热点以及一些运营数据。其中一个需求是要知道我们打包上传的日期。

我思来想去,发现还是把它放在build版本号比较好,类似于2018012401这样比价直观,而且也符合build版本号的常规用途,在网络请求时也有助于后端同学区分版本。

看官们莫要着急,这就呈上代码:

1
2
3
4
5
6
7
8
9
10
dateNum=$(date +%Y%m%d)
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildDate=$(($buildNumber / 100))
if [ $buildDate -ne $dateNum ]
then
buildNumber=$(($dateNum * 100 + 1))
echo "$buildDate != $dateNum"
# 日期不相等时重置build版本号
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
fi

使用时有一点需要注意,这个脚本不需要勾选 run script only when installing,这样每次build、run、archive的时候都会去检查。而且这个脚本的执行顺序最好提前一些,一定要排在打包时build自增脚本的前面,才能保证每次都获取到正确的build版本号。

本来觉得因为之前有过脚本实现build版本自增的经历,这个改起来应该也是不成问题。

没想到还是掉了个坑,怪自己太异想天开,上次是直接拿了网上的代码,然后改写的。这次是为了自己学习一下独立写shell脚本,然后写的时候不自觉的带上了平时写编译语言的习惯:等号两边加空格!导致shell执行时出现问题,害我排查好几次才发觉。

这也让我更加明白,作为一个开发人员,特别是如果想成为全栈开发,决不能有思维定势,多学习,注意细节。

善用工具提高效率,才是王道!

------------- 本文结束感谢您的阅读 -------------