在启用了资源库的Xcode 5中修改Info.plist的CFBundleVersion

问题描述 投票:13回答:5

使用Xcode 5的新资产库,添加图像和组织它们从未如此简单。但是,似乎它已经破坏了我用于创建构建的一些脚本。

我的Run Script Phase中有一个脚本,它将CFBundleVersion设置为plist中的当前时间戳。在脚本中,我执行此语句:

/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $timestamp" $BUILT_PRODUCTS_DIR/$INFOPLIST_PATH

但是,执行此操作时,将显示以下语句:

Set: Entry, ":CFBundleVersion", Does Not Exist
File Doesn't Exist, Will Create: /Users/SpacePyro/Library/DerivedData/BundleTest-duikdqngfmrovnagrcsvdcuxxstz/Build/Products/Debug-iphoneos/BundleTest.app/Info.plist

这似乎发生在干净的构建上。直到构建中途,plist似乎才会生成,可能是由于资产库。

我也使用了这个命令,虽然它没有抛出错误,但它仍然吹走了我的变化(假设INFO_PLIST="${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/Info"):

defaults write $INFO_PLIST CFBundleVersion $timestamp

当我开始使用资源库来组织我的应用程序图标和启动图像时,情况并非如此。谁知道为什么会这样?更好的是,是否有一种解决方法可以将此值添加到plist中?我已经尝试将脚本置于行动前构建阶段以及动作后构建阶段。我还尝试在构建完成后运行命令,但是当我尝试对其进行协同编码和打包时,它表示签名因修改plist而无效。

如果不存在合理的解决方案,我想我总是可以从资产库中迁移,直到我可以让我的脚本工作。

ios xcode plist xcode5
5个回答
15
投票

我曾经有类似的问题,这就是最终帮助我的问题:

buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${INFOPLIST_FILE}")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "${INFOPLIST_FILE}"

(直接使用INFOPLIST_FILE,而不是$ BUILT_PRODUCTS_DIR / $ INFOPLIST_PATH)

希望这可能有用。


12
投票

想出这个,这是一个愚蠢的。结果你可以将脚本阶段移到最后。我甚至不知道这些是可移动的,还是重要的!但是通过将Run Script阶段拖到底部,脚本可以根据需要运行和修改。


11
投票

我有同样的问题,在我的情况下,我有一个错误的文件路径到XXX-Info.plist文件:

构建设置 - >包装 - > Info.plist文件

我改变了它的实际位置并开始工作。


1
投票

如果你的plist文件是Preprocessed-Info.plist,那么将“Preprocess Info.plist File”(INFOPLIST_PREPROCESS)的值更改为“Yes”(true),如下所示:


1
投票

在$(SRCROOT)的Build设置中搜索并删除它。

将它从$(SRCROOT)/TestProject/Info.plist转换为TestProject / Info.plist

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.