2013-01-21 17 views
3
当古怪的行为

可能重复:
Xcode project’s “Build number”检索CFBundleVersion

我使用这个脚本在Xcode 4.5.2(应用程式iOS版)更新生成过程中CFBundleVersion:

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

它似乎工作正常,每次我建立我的应用程序“内部版本号”(CFBundleVersion)增加SES以1

奇怪的行为发生在我尝试检索CFBundleVersion编程方式使用:

[[NSBundle mainBundle] objectForInfoDictionaryKey:@"CFBundleVersion"] 

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"] 

而这就是我得到:

CFBundleVersion 1 -> I get 1 
CFBundleVersion 2 -> I get 1 odd 
CFBundleVersion 3 -> I get 3 
CFBundleVersion 4 -> I get 3 odd 
CFBundleVersion 5 -> I get 5 
CFBundleVersion 6 -> I get 5 odd 
CFBundleVersion 7 -> I get 7 
CFBundleVersion 8 -> I get 7 odd 
CFBundleVersion 9 -> I get 9 
CFBundleVersion 10 -> I get 10 
CFBundleVersion 11 -> I get 10 odd 
CFBundleVersion 12 -> I get 12 
CFBundleVersion 13 -> I get 13 
CFBundleVersion 14 -> I get 14 
CFBundleVersion 15 -> I get 14 odd 
CFBundleVersion 16 -> I get 16 
CFBundleVersion 17 -> I get 16 odd 
CFBundleVersion 18 -> I get 18 
CFBundleVersion 19 -> I get 18 odd 
CFBundleVersion 20 -> I get 20 
CFBundleVersion 21 -> I get 21 
CFBundleVersion 22 -> I get 22 
and so on... 

输出每次都会改变,但奇怪的行为在模拟器和设备上仍然存在。 如果我删除脚本并手动放置CFBundleVersion,一切都会顺利进行。

有人知道为什么吗?我该如何解决它? 谢谢!

+0

我有类似的问题,它有助于将“运行脚本”作为第二步“构建阶段”。当我添加了这个步骤后,默认情况下它是默认的,然后我有差异2或3. –

回答

2

问题是,在运行脚本执行后,Xcode不再检查修改后的文件。因此,即使运行脚本更新Info.plist文件,Xcode也不会将更新后的文件复制到应用程序包中。

作为一种解决方法,您可以为项目创建额外的目标(即“聚合”目标),并将运行脚本添加到该额外目标,而不是您的主要目标。

$INFOPLIST_FILE环境变量没有为额外的目标定义,但可以使用实际的(相对项目)路径相反,即由

YourMainTarget/YourMainTarget-Info.plist 

更换$INFOPLIST_FILE然后拖动额外的目标变成了“目标相关性“你的主要目标,所以额外的目标总是先建立。

编辑:我刚刚在这里找到了一个更优雅的解决方案:https://stackoverflow.com/a/11112042/1187415,使用“预执行”脚本而不是额外的目标。

+0

您在EDIT中指出的解决方案会执行这个技巧,谢谢,但我不明白为什么我的方法是错误的...我的意思是,如果在Xcode在应用程序包中复制Info.plist后更新Info.plist,则每次构建应用程序时,我应该看到1个单元的差异(例如,原始CFBundleVersion为10,我构建了我的应用程序,Info.plist为11,我检索10等),但我注意到的行为似乎是“奇怪”或“仅仅是偶尔”或类似“一个是,一个,一个也许”。 – Beppe