背景
在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設置為整數(shù)時,該腳本才能
# 實現(xiàn)其功能,即Build自動加1
# ******************************************************
#
# 每次編譯后是否Build自動加1,
# 可以修改該常量的值,以決定編譯后還是打包后Build自動加1
# # 0: 每次打包后Build自動加1
# # 1: 每次編譯后Build自動加1
DEBUG_ENVIRONMENT_SYMBOL=0
#
#
# 編譯或打包環(huán)境的標志,默認為編譯環(huán)境
configuration_flag="Debug"
if [ $DEBUG_ENVIRONMENT_SYMBOL -eq 0 ]; then
configuration_flag="Release"
fi
# 打印當前Xcode的環(huán)境配置
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