在Xcode 4中预处理Info.plist

时间:2011-09-15 19:08:39

标签: xcode4 info.plist

我正在尝试使用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作为后期构建步骤,以便它始终是一个新修改的文​​件,但它没有什么区别。

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

2 个答案:

答案 0 :(得分:1)

你应该做的第一件事是file a bug report。我认为这是一个错误。

在此之前的解决方法中,您可以尝试编辑方案,选择构建操作,展开其显示三角形,然后添加运行touch Pre -action脚本PLIST文件。这应该暂时解决。

答案 1 :(得分:0)

如果您的脚本位于聚合目标中并作为目标依赖项实现,那么这应该可以在不清除项目的情况下运行:

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

touch $plist