16

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

我的运行脚本阶段中有一个脚本,它将 设置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 修改而无效。

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

4

5 回答 5

20

我曾经遇到过类似的问题,这最终帮助了我:

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

希望这可能有用。

于 2017-12-05T00:12:53.627 回答
13

想出了这个,这是一个愚蠢的。事实证明,您可以将脚本阶段移到最后。我什至不知道这些是可移动的,或者这很重要!但是通过将运行脚本阶段拖到底部,脚本能够根据需要运行和修改内容。

构建阶段

于 2013-10-28T15:24:55.387 回答
13

我遇到了同样的问题,就我而言,我的 XXX-Info.plist 文件的文件路径错误:

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

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

说明更改错误设置的位置

于 2014-07-07T22:01:08.090 回答
2

如果您的 plist 文件是Preprocessed-Info.plist,则将“预处理 Info.plist 文件”(INFOPLIST_PREPROCESS)的值更改为“是”(true),如下所示:

这个

于 2017-11-12T11:21:05.173 回答
1

在构建设置中搜索 $(SRCROOT) 并将其删除。

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

在此处输入图像描述

于 2019-03-06T11:58:41.140 回答