2014-04-10 42 views
11

我正在用Settings.bundle文件創建一個iPad應用程序。我正在編寫構建腳本以顯示應用程序版本號和xcode bot集成號(不是程序包內部版本號)。我搜索了網頁並找不到任何解決方案。以下是我所得到的:如何將Xcode Bot集成號添加到生成腳本中

-- Add the app version number 
cd $PROJECT_DIR 
cd "$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.app" 

RELEASE_VERSION=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" Info.plist) 
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:1:DefaultValue $RELEASE_VERSION" Settings.bundle/Root.plist 

-- Add the build version number 
BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" Info.plist) 
/usr/libexec/PlistBuddy -c "Set :PreferenceSpecifiers:2:DefaultValue $BUILD_NUMBER" Settings.bundle/Root.plist 

在構建版本號中,我想用xcode bot集成號替換CFBundleVersion。

回答

15

我在Xcode項目中使用了Shell腳本構建階段來實現此目的。在我的情況下,我使用集成號來設置我構建的產品的內部版本。我的腳本是這樣的:

if [ "the$XCS_INTEGRATION_NUMBER" == "the" ]; then 
    echo "Not an integration build…" 
    xcrun agvtool new-version "10.13" 
else 
    echo "Setting integration build number: $XCS_INTEGRATION_NUMBER" 
    xcrun agvtool new-version "$XCS_INTEGRATION_NUMBER" 
fi 

注意XCS_INTEGRATION_NUMBER存在默認情況下,Xcode的服務器構建環境。如果您想模擬集成構建(針對此腳本),則可以將其作爲自定義變量簡單地添加到構建設置中。

1

我最近偶然發現了同樣的問題。 有越來越約Xcode的搜索引擎的最新整合號碼信息的一個非常務實的,但醜陋的方式運行:

sudo grep -r "integration =" /Library/Server/Xcode/Logs/xcsbuildd.log | tail -1 | cut -d'=' -f 2| cut -d';' -f 1 |tr -d '\040\011\012\015' 

我也是爲了找到實現這一目標的一個更加一體化和少哈克的方式創造了一個計算器問題: Register for messages from collabd like XCSBuildService to receive Xcode Bots integration number

但也許解析xcsbuildd.log如上所述的方式就足夠您的目的。

+0

它不適合我。我總是得到一個空白的結果 – iDev

5

我加(+)一運行腳本我的目標構建階段之前,爲了編譯源代碼一步。這一行腳本適用於我將集成數設置爲內部版本號。謝謝凱琳,我只是想簡化一點事情。

[ -z "$XCS_INTEGRATION_NUMBER" ] && echo "Build #0" || xcrun agvtool new-version ${XCS_INTEGRATION_NUMBER} 
7

實際上,您甚至不需要agvtool就可以將內部版本號設置爲Xcode機器人集成號。只需在項目設置中將內部版本號設置爲$ {XCS_INTEGRATION_NUMBER}即可。