Xcode项目中Build号即为对应plist文件中的CFBundleVersion字段,应该是递增的.Build号涉及到类似数据库迁移,新版本与旧版本的兼容问题等等.所以合理的递增Build号是非常关键的.为了避免多人团队中的冲突问题,目前为止比较好的解决方案是根据Git提交数来设置Build号.
推荐脚本

1
2
3
4
5
6
7
8
9
10
appBuild=`"$git" rev-list HEAD --count`
if [ $CONFIGURATION = "Debug" ]; then
branchName=`"$git" rev-parse --abbrev-ref HEAD`
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $appBuild-$branchName" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $appBuild-$branchName" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
else
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $appBuild" "${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $appBuild" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}.dSYM/Contents/Info.plist"
fi
echo "Incremented the build number ${TARGET_BUILD_DIR}/${INFOPLIST_PATH}"

build phaseCopy Bundle Resources 后面添一个 run script 脚本即可.

注意:

如果我们在Xcode使用调试生成配置,它会在版本号后加上当前分支的名字后缀.这避免了在并行
开发中不同分支版本号潜在的冲突.