4

我正在尝试使用 Xcode 中可用的 Info.plist 预处理,以便我可以在应用程序的 Info.plist 中嵌入最新的 git commit id。使用此处描述的技术,它在 Xcode 3 中运行良好:http ://www.cimgf.com/2011/02/20/revisiting-git-tags-and-building/但是,当我在 Xcode 4 中尝试它时,它看起来像第一次构建后不执行预处理。

我所看到的:

  • 在构建我的目标时从头开始,InfoPlist.h 使用正确的内容创建,目标构建并成功运行,我可以在运行时访问该值。
  • 创建一个新的提交以更改 HEAD 提交 ID。
  • 再次构建我的目标,InfoPlist.h 更新为具有新的提交 ID,目标构建并成功运行,但是,信息字典中的值是以前的提交 ID。

看起来 Xcode 正在运行脚本构建步骤,但没有预处理我的 Info.plist,它使用的是缓存版本。关于如何解决这个问题的任何想法?

我尝试将 InfoPlist.h 作为后期构建步骤删除,以便它始终是一个新修改的文​​件,但它没有任何区别。

更新: 执行清理,然后再次构建会导致出现正确的值。但是,我不应该每次提交时都清理我的目标。

4

2 回答 2

1

您应该做的第一件事是提交错误报告。我认为这是一个错误。

在此之前,作为一种解决方法,您可以尝试编辑您的方案,选择构建操作,展开其显示三角形,然后添加一个针对 PLIST 文件运行的操作脚本。touch现在应该可以解决它。

于 2011-09-15T19:26:16.713 回答
0

如果您的脚本位于聚合目标中并作为目标依赖项实现,则无需清理项目即可工作:

plist=${PROJECT_DIR}/${PROJECT_NAME}/${PROJECT_NAME}-Info.plist

touch $plist
于 2013-02-27T12:34:58.690 回答