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变量,但它们都做基本相同的事情。