2012-09-11 117 views

回答

24

下面是如何递增的内部版本号:

在Target>摘要选项卡,设置初始构建# enter image description here

然后使用这个脚本来增加内部版本号:

#!/bin/bash 
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") 
buildNumber=$(($buildNumber + 1)) 
buildNumber=$(printf "%04d" $buildNumber) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" 

或者如果你想以十六进制编号:

#!/bin/bash 
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") 
buildNumber=$((0x$buildNumber)) 
buildNumber=$(($buildNumber + 1)) 
buildNumber=$(printf "%04X" $buildNumber) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" 
+0

谢谢..可能是这个问题,我最初设置为1.1.0.0构建,因为我认为这是如何构建版本格式化,做没有小数似乎工作,但现在建立只是单个数字。我怎样才能让它成为4位数的内部版本号格式? – ourmanflint

+0

@ourmanflint我认为上面的代码片段会给你一个四位数的内部编号('%04d'和'%04X'),或者你的意思是一个四位数字,如1.1.0.0?取决于是否要增加内部版本号“CFBundleVersion”,版本号“CFBundleShortVersionString”或两者。 – FluffulousChimp

+4

应该删除buildNumber = $((0x $ buildNumber))行,因为它在十六进制数中转换十进制数。 –

0

如果你使用詹金斯你可以使用詹金斯集结号

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $BUILD_NUMBER" "$INFOPLIST_FILE"; 
+0

试过这个,但它不起作用。我错过了什么吗? plist中的内部版本号始终为1,jenkins中的内部版本号为60 – tiltem

+0

除了可能错误的Plist路径之外,我只能想象,最初的Plist可能需要任何虚拟'CFBundleVersion'条目,以便PlistBuddy可以找到并替换它。 – Rivera

2

我的解决方案如下:

#!/bin/bash 
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE") 
buildNumber=$(echo $buildNumber | sed 's/0*//') 
buildNumber=$(($buildNumber + 1)) 
buildNumber=$(printf "%04d" $buildNumber) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE" 

使用SED删除前导零,增加值,并在打印回plist文件使用四位数零填充的数字。

+0

这一个适用于我(Mac应用程序,10.9),而从NSBum的一个不... –

+0

回到...... 000A后,它回滚到“0001”! –

+1

因为它只打印数字,所以没有000A。我可以向你保证这个工作完美无瑕,因为我现在编号为2923,而我从0开始。在0009之后它变为0010.在9999之后它变为10000.仔细检查你是否真的*使用我的代码。 –