仅为Xcode 4中的“Archive”构建运行脚本

时间:2011-03-29 10:57:01

标签: iphone xcode xcode4

我有一个脚本,我使用osascript从Xcode 4中的运行脚本构建阶段运行。这个脚本做了一些检查,试图捕获plists等中的任何人为错误。

但是,我真的只想在开发人员选择“归档”时运行此脚本,而不是在每次构建时运行它。

有没有办法测试这种情况?在Shell脚本或Apple脚本中?

3 个答案:

答案 0 :(得分:52)

在Xcode 4+中,您可以将此脚本作为“归档”操作的动作前或动作后脚本运行。但是,动作前和动作后脚本不被视为构建本身的一部分;它们的输出不是构建日志的一部分,失败的脚本不会导致构建失败。

如果要将此脚本作为构建的第一类部分包含在内,以致其失败会导致构建失败,那么您将需要执行其他操作。创建一个新的“外部构建系统”目标,并将其配置为运行脚本。脚本的路径可以是相对于项目根目录的相对路径。

最后,打开主项目方案,在“Build”标签中添加新的检查器目标,并将其设置为仅包含在“存档”操作中。这应该导致只有在选择“归档”时才将检查器脚本作为构建的一部分运行,并且如果脚本返回非零值,则构建将失败。

A screenshot showing how to configure the scheme

答案 1 :(得分:7)

  1. 在项目的“构建阶段”中添加“新运行脚本阶段”
  2. 将脚本移动(拖放)到正确的位置
  3. 选中“仅在安装时运行脚本”
  4. 如果您不执行 3。,脚本将一直运行,但如果您选中该框,则只会在归档时运行。

答案 2 :(得分:0)

对我自己的系统进行快速测试表明直接“构建”和“构建和存档”之间的详细脚本输出没有区别。

此外,您无法测试存档的存在(或不存在),因为只有在所有脚本运行的过程结束时才会创建存档。

据我所知,Xcode 3中没有当前选项来执行此操作。也许向Apple提出增强请求?

当你在Apple上等待时,我能提供的唯一解决方案是使用xcodebuild和xcrun作为命令行shell脚本的一部分,如果你要归档,你将知道。这不是一个停留在Xcode的解决方案,但它确实具有很大的灵活性。

Xcode "Build and Archive" from command line

相关问题