XCode提示:预制作动作
#tips #ios #xcode

我前几天遇到了Xcode中的这一酷的小型功能,这帮助我解决了一个真正的问题。我从未见过有人提到您可以做到这一点,所以我在这里分享它,希望它能帮助别人。

我最近正在使用使用配置文件的框架。该文件存储在JSON中,并与该应用程序捆绑在一起。我想要一种简单的方法,可以为我的应用程序的dev版本和prod版本提供单独的配置文件,并且我已经为这些不同版本提供了单独的方案。我正在研究实现这一目标的方法,也许是通过发射或编译器标志或其他内容的参数来实现这一目标的。我开始沿着各种代码生成工具等的兔子孔掉下来,但是后来我注意到了计划编辑器中的某些内容。

在“构建”上的小订单下方,有一个称为“前动作”的项目。如果您单击此操作并按下底部的“+”按钮,则可以选择添加“运行脚本操作”。这意味着您可以在应用程序的所有构建(或运行或测试)之前(或之后)运行任何任意脚本。对于不同的方案,它们可能会有所不同。这似乎是实现我目标的完美方法!

pre-build-actions.png

我所做的是将一个空的JSON文件添加到我的项目中,并将其包含在目标中。然后,我将“ configuration-dev.json”和“ configuration-prod.json”文件放在我的应用程序的目录中(以便将其包含在源控件中),但没有将它们添加到项目本身中。 /p>

folder-organization.png

然后,对于我的dev方案,我将此脚本添加为一个前构建动作:

cp "$SRCROOT/configuration-dev.json" "$SRCROOT/configuration.json"

如果您不熟悉Bash,则cp命令将文件从源到目标复制。在这种情况下,它将将配置文件的DEV版本复制到我在项目中包含的文件中,以覆盖之前的所有内容。

我还确保“提供从我的应用程序”而不是“无”设置为“提供构建设置”。这是在脚本中获取SRCROOT的必要条件,这是通往项目文件所在目录的途径。

dev-action.png

然后我为prod操作做了同样的事情:

cp "$SRCROOT/configuration-prod.json" "$SRCROOT/configuration.json"

现在,每当我构建dev方案时,我都会将configuration-dev的内容捆绑到该应用中,当我构建prod方案时,我都有configuration-prod的内容。

简单,对吗?显然,您可以在此处运行更复杂的脚本,并在需要时做更多的事情。但是到目前为止,这个单行脚本似乎已经解决了我遇到的这个小问题,但我还没有看到任何缺点。