gpt4 book ai didi

iphone - 检索 CFBundleVersion 时的奇怪行为

转载 作者:行者123 更新时间:2023-12-03 19:53:30 25 4
gpt4 key购买 nike

Possible Duplicate:
Xcode project’s “Build number”

我使用此脚本在 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)都会增加 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,一切都会顺利进行。

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

最佳答案

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

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

未为其他目标定义 $INFOPLIST_FILE 环境变量,但您可以使用实际(项目相对)路径,即将 $INFOPLIST_FILE 替换为

YourMainTarget/YourMainTarget-Info.plist

然后将附加目标拖到主目标的“目标依赖项”中,以便始终首先构建附加目标。

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

关于iphone - 检索 CFBundleVersion 时的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14446202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com