2013-07-28 48 views
2

我有一個應用程序的「免費」和「付費」版本,我想同時自動遞增兩個版本號,因爲有時候我會用「Free 「版本,有時候我會根據自己在做什麼來測試」付費「版本。這些基本上是相同的代碼庫,我只是有兩個目標,預處理器指令定義了「付費」版本來解鎖某些事情。Xcode中多個目標的自動遞增內部版本號

我使用了這個問題的代碼: Version vs build in XCode

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

我想我只需要添加兩行線沿線的指定其他$INFOPLIST_FILE路徑:

"Print CFBundleVersion" "NEW_PATH/$INFOPLIST_FILE" 

並增加它,但是當我構建另一個目標的Plist時,我該如何獲得路徑?

+0

您能否詳細說明您實際上通過什麼路徑? –

+0

我的意思是文件路徑,即「〜/ Projects/iOSApp/App」。 我想出了問題並在下面回答,如果你有興趣 –

回答

3

我想通了。您需要使用SRCROOT變量。這將爲您提供項目的基礎目錄。從那裏,您需要手動指定您希望使用的info.plist文件的位置,然後使用該路徑運行PlistBuddy -c命令。

這裏是第一,將「免費」版本的例子,然後遞增「付費」版本:

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

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$SRCROOT/Pro-Info.plist") 
buildNumber=$(($buildNumber + 1)) 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$SRCROOT/Pro-Info.plist" 

你需要確保你反腳本爲每個目標,所以它使用$INFOPLIST_FILE變量在當前目標上,並且您正在指定其他目標的位置。您可以將這些存儲在自定義變量中,或者指定每個變量,而不是完全使用$INFOPLIST_FILE變量,但它們都做基本相同的事情。

相關問題