Xcode脚本根据版本增加构建

时间:2015-03-28 09:11:01

标签: xcode build-script

我设法重现了构建阶段脚本from this SO question,每次构建应用程序时都会增加构建号。任何人都可以建议如果我希望构建号为version.build,脚本应该是什么样子,即如果我的应用版本是0.2,我希望我的内部版本号设置为0.2.001,0.2.002然后,当我将构建号更改为0.3时,我希望构建重新启动到001,所以我得到0.3.001,0.3.002等。

这是我目前的剧本:

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

更新

我要做的是以下内容:

  • 从plist文件中获取 shortVersion (e.x. 0.2)
  • 从plist文件中获取 buildNumber (e.x. 0.2.007)
  • buildNumber 分隔为0.2和007
  • 如果0.2等于 shortVersion ,则只增加007 - > 008并再次加入两个,以便新 buildNumber 为0.2.008
  • 另外(ex shortVersion 已更改为0.3),将内部版本号重置为001并将两者结合在一起以获得新的 buildNumber 为0.3.001

不幸的是,我对bash脚本没有任何了解,所以如果有人能提供脚本,我将不胜感激。

1 个答案:

答案 0 :(得分:-1)

#!/bin/bash

# get the configuration
conf=${CONFIGURATION}

# only change build number if we are building for Release or AdHoc!
if [ $conf == Release ] || [ $conf == AdHoc ]; then

# get the build number
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
echo "Old Build number $buildNumber"

# split it by dots
arrIN=(${buildNumber//\./ })

# get the last element position
lastElementPosition=$((${#arrIN[@]} - 1))
# get the minor version from the last array element
minorVersion=${arrIN[${lastElementPosition}]}
# Increase it by 1
minorVersion=$((minorVersion+1))
# Format it as 3 digit
minorVersion=`printf "%03d" $minorVersion`
echo "New minor version $minorVersion"
# Update it on the array
arrIN[$lastElementPosition]=$minorVersion

# construct the build number now by joining the array
buildNumber=$(IFS=. ; echo "${arrIN[*]}")

echo "New Build number $buildNumber"

#update it in plist
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"

fi

这是您想要的脚本。 一切都在代码中解释,所以你应该看看我在做什么

上述脚本中使用的bash函数的引用:

https://stackoverflow.com/a/5257398/312312

分割字符串

填充号码来自:https://stackoverflow.com/a/8789779/312312

加入来自https://stackoverflow.com/a/9429887/312312

的数组