如何在构建阶段强制Xcode运行运行脚本

时间:2020-11-05 12:51:37

标签: ios xcode

我们有一个运行脚本(在编译源之上),该脚本在每次尝试构建时都会触发。这已经工作了很长时间,直到出于外部原因,我们将路径添加到“输出文件”列表(在实际脚本代码下面)为止。这样做时,Xcode似乎会自行决定是否在每次构建之前运行脚本。我认为它可以检查输出路径中的文件是否存在,并具有基于“ createdDate”或“ modifiedDate”的内部逻辑来评估是否运行该文件。

我需要这个脚本来每次运行。即使它是3秒钟前发射的。有没有办法强迫它每次运行?

我尝试在相关脚本之前添加一个“运行脚本”,该脚本仅具有“ rm -rf outputPath”,但不知何故它仍会跳过它。

1 个答案:

答案 0 :(得分:-1)

有问题的脚本是Apollo的GraphQL内容的一部分。它在我们的项目中需要一堆.graphql文件,并将它们转换成/生成一个API.swift文件供我们使用。由于某些外部CI的原因,我们不得不在脚本中将输出文件的路径添加到“输出文件”中。这是导致脚本有时被忽略的原因,因为Xcode认为先前生成的文件“足够好”,因此即使.graphql文件的内容在此期间发生了变化,也不会再次生成它。

我解决了此问题,方法是将包含所有.graphql文件的所有文件夹的路径添加到.xcfilelist,并将其添加到“输出文件”上方的“输入文件列表”中。这迫使Xcode在每次构建时检查这些文件是否已被更改,并在必要时重新生成。

事实证明它比原始方法要好(即使仅几秒钟即可生成,但每次都会重新生成)。 我可以推荐所有使用Apollo / GraphQL进行此操作的人。