2012-09-11 175 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.仔細檢查你是否真的*使用我的代碼。 –