基于版本增量生成的Xcode脚本
我已经成功地复制了一个构建阶段脚本,它在每次构建应用程序时都会增加构建数量。如果我希望版本号为基于版本增量生成的Xcode脚本,xcode,build-script,Xcode,Build Script,我已经成功地复制了一个构建阶段脚本,它在每次构建应用程序时都会增加构建数量。如果我希望版本号为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_
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文件(e.x.0.2)获取短版本
- 从plist文件(e.x.0.2.007)中获取构建编号
- 将buildNumber分为0.2和007
- 如果0.2等于shortVersion,只需增加007->008并再次将两者合并,这样新的buildNumber为0.2.008
- 否则(e.x.shortVersion已更改为0.3),将内部版本号重置为001,并将两者合并,以将新的内部版本号设置为0.3.001
#!/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函数的参考:
正在从以下对象拆分字符串:
从以下位置填充数字:
正在从以下位置加入阵列:Hi。我已经尝试过你的脚本,但它所做的是生成437.001、438.001等版本,而版本号(在Xcode中刚好高于版本号)保持为0.2。我的代码中解释了你需要的所有步骤。当您将内部版本号更改为0.3时,您必须将内部版本重置为001,因为bash脚本不知道旧的主要版本。至于版本,您需要使用
CbundleShortVersionString
键,但是如果您获得包含0.2的旧版本号,并将其与CbundleShortVersionString
(0.3)进行比较,那么计数器可以通过代码重置为001,不是吗?