背景
在iOS项目打包时,有两个版本号,一个是Version,即显示在AppStore中的版本号,其key为CFBundleShortVersionString,另一个是Build,即编译版本号,其key为CFBundleVersion。
目的
CFBundleVersion 和 CFBundleShortVersionString 一一对应,这样可以通过CFBundleVersion 来确定 CFBundleShortVersionString
添加脚本
1.Xcode切换到 Build Phases 选项卡;
2.点击左上角"+"号来增加一项"New Run Script Phase";
3.添加如下脚本代码:
#!/bin/sh
# ******************************************************
# Description : 每次编译或打包后Build自动加1
# 注意: Build设置为整数时,该脚本才能
# 实现其功能,即Build自动加1
# ******************************************************
#
# 每次编译后是否Build自动加1,
# 可以修改该常量的值,以决定编译后还是打包后Build自动加1
# # 0: 每次打包后Build自动加1
# # 1: 每次编译后Build自动加1
DEBUG_ENVIRONMENT_SYMBOL=0
#
#
# 编译或打包环境的标志,默认为编译环境
configuration_flag="Debug"
if [ $DEBUG_ENVIRONMENT_SYMBOL -eq 0 ]; then
configuration_flag="Release"
fi
# 打印当前Xcode的环境配置
echo "The current environment configuration for Xcode is: $CONFIGURATION"
if [ $configuration_flag == "${CONFIGURATION}" ]; then
echo "The build version number needs to be increased."
build_version=$(/usr/libexec/PlistBuddy -c "Print :CFBundleVersion" "${INFOPLIST_FILE}")
# 判断读取出来的build_version变量是否为 $(CURRENT_PROJECT_VERSION) :
# 若是,则从 CURRENT_PROJECT_VERSION 读取Build版本号,然后+1;
# 若不是,则读取出来的build_version变量即为Build版本号,直接+1;
if [ $build_version == '$(CURRENT_PROJECT_VERSION)' ]; then
build_version=${CURRENT_PROJECT_VERSION}
fi
build_version=$(($build_version + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $build_version" "${INFOPLIST_FILE}"
else
echo "The build version number does not need to be increased."
fi
网友评论