我有一个脚本,我使用osascript从Xcode 4中的运行脚本构建阶段运行。这个脚本做了一些检查,试图捕获plists等中的任何人为错误。
但是,我真的只想在开发人员选择“归档”时运行此脚本,而不是在每次构建时运行它。
有没有办法测试这种情况?在Shell脚本或Apple脚本中?
答案 0 :(得分:52)
在Xcode 4+中,您可以将此脚本作为“归档”操作的动作前或动作后脚本运行。但是,动作前和动作后脚本不被视为构建本身的一部分;它们的输出不是构建日志的一部分,失败的脚本不会导致构建失败。
如果要将此脚本作为构建的第一类部分包含在内,以致其失败会导致构建失败,那么您将需要执行其他操作。创建一个新的“外部构建系统”目标,并将其配置为运行脚本。脚本的路径可以是相对于项目根目录的相对路径。
最后,打开主项目方案,在“Build”标签中添加新的检查器目标,并将其设置为仅包含在“存档”操作中。这应该导致只有在选择“归档”时才将检查器脚本作为构建的一部分运行,并且如果脚本返回非零值,则构建将失败。
答案 1 :(得分:7)
如果您不执行 3。,脚本将一直运行,但如果您选中该框,则只会在归档时运行。
答案 2 :(得分:0)
对我自己的系统进行快速测试表明直接“构建”和“构建和存档”之间的详细脚本输出没有区别。
此外,您无法测试存档的存在(或不存在),因为只有在所有脚本运行的过程结束时才会创建存档。
据我所知,Xcode 3中没有当前选项来执行此操作。也许向Apple提出增强请求?
当你在Apple上等待时,我能提供的唯一解决方案是使用xcodebuild和xcrun作为命令行shell脚本的一部分,如果你要归档,你将知道。这不是一个停留在Xcode的解决方案,但它确实具有很大的灵活性。