Xcode构建方案和构建配置的一些实际用途(快速)

您是否曾经想为iOS应用的免费版和付费版使用完全相同的代码库? 您的客户是否同时具有需要与相同代码交谈的开发服务器和生产服务器? 您是否需要为团队中的测试人员创建应用程序的内部临时构建?

如果您曾经对以上任何一个问题回答“是”,则听起来您需要自定义构建方案。

我希望我早日发现了Xcode构建方案的强大功能。 作为开发人员,他们使您能够通过针对不同环境的细微调整来交付相同代码的不同版本。 一旦学习了如何使用它们,您也会爱上它们。

使用自定义构建方案,您可以

  1. 编写仅在您的应用的免费版本上运行的代码,从而使您可以展示广告或提供应用内购买,而无需复制目标或项目文件。
  2. 在开发环境中测试您的应用程序后,轻击一个开关以提供与生产服务器通信的构建。
  3. 构建并分发一个内部应用程序,您可以将其部署到团队中的测试人员。

TL; DR构建方案将为您节省大量的时间。

使用构建配置来创建应用程序的免费版本

数字在里面。不管我们喜欢与否,最赚钱的应用程序是免费提供的。 大部分资金用于展示广告和销售应用内购买。

这意味着,如果您想经营一家盈利的iOS应用业务,则可能需要提供应用的免费版本。

我第一次听到此消息后自然感到后退。 我没有涉足这个行业来销售广告。 我之所以加入它,是因为我想创造出我想使用的漂亮产品。

出售“您祖母摆脱腹肌的怪异小技巧”的丑陋横幅使我的优雅设计变得模糊不清的前景让我感到有些不安。

坦白说,它仍然如此。 通过告诉自己,只要我在付费版本和免费版本的应用程序之间做出选择,我就设法证明广告的合理性,这并不是犯错设计。 如果有足够的人喜欢免费版本,它将带动更多人使用付费版本。

现在,我可以在晚上入睡了,构建计划对此负有部分责任。

Build Schemes很棒,因为它们使您能够编写仅适用于应用程序免费版本的代码 (如果您购买的某些应用程序仅适用于付费版本,则为付费版本)。 过去,我为此而苦苦挣扎,尝试了各种骨头问题。

我做的一些幼稚的事情浪费了很多时间

  1. 在我的一个项目中,我创建了两个单独的目标,一个针对付费版本,另一个针对免费版本。 这实际上是可行的,但最终的工作量远远超过了需要的工作量。
  2. 确实在开发初期,我实际上只是为免费版本复制了所有源文件。 我不需要告诉你为什么这是一个可怕的主意。

从我的错误中学习,不要做任何一个! 阅读本文并按照以下步骤操作。 最终结果将更加易于管理。

构建方案和构建配置之间的区别

当我开始iOS开发时,我不知道什么是构建方案。 毕竟,默认情况下,大多数应用仅使用单个构建方案。

我认为真正阻碍我对构建方案理解的一件事是开发构建和发布构建之间的另一区别。 我以为这些是不同的构建方案,但实际上它们是不同的构建配置

构建方案是整个构建过程的蓝图,它是一种告诉Xcode您要用于给定目标(框架或应用程序包)创建开发,单元测试和生产构建的构建配置的方式。

构建配置是可以应用于任何目标的一组特定的构建设置。

大多数应用程序项目带有两种构建配置和一种构建方案。 您将获得调试和发布构建配置以及运行调试配置以进行调试的构建方案以及用于归档/提交的发布配置。

对于大多数项目,这是完全可以的,不需要进行任何调整。 但是,如果您想同时提供同一应用程序的免费和付费版本,那还远远不够。

添加新的构建配置

要制作免费版本的应用程序时,需要先添加新的构建配置。 我希望这会更容易,但事实并非如此。 这就是为什么我要带您了解它的原因。

  1. 打开Xcode,然后选择项目文件。

现在待在你身边! 当您尝试添加新的构建配置时,Xcode令人难以置信地困扰着您可以选择和不能选择的事情。

如果您没有选择项目文件,则“重复配置”选项都将显示为灰色。 有一个专门用于此的整个堆栈溢出线程。

2.转到编辑器→添加配置→复制调试配置

3.对发布配置重复此过程。

4.重命名您的配置以匹配付费/免费区别。

完成后,您应该具有四个不同的构建配置。 调试付费,调试免费,付费发布和免费发布。

为免费版本创建单独的构建方案

下一部分非常简单。 我们将采用两个新的构建配置,并创建一个运行它们的构建方案。

  1. 转到您当前正在运行的方案,单击它,然后选择“新方案”。

这将打开一个模式视图,您可以在其中选择目标并命名新的构建方案。

2.使用您的应用名称和“免费”命名您的构建方案,然后单击“确定”。

完成此操作后,您应该注意到已经选择了免费构建方案。

我们还没有完成。 我们有一个构建方案,但尚未使用免费版本的构建配置。

3.单击您的构建方案,然后选择“编辑方案”。

4.将运行付费构建配置的所有内容切换到免费构建配置。

有效地,这

应该变成这个

而已。 现在,您有两种构建方案。 其中一个将构建您的应用程序的付费版本,另一个将构建您的应用程序的免费版本。

编写仅在应用程序的免费版本上运行的代码

不幸的是,拥有两个单独的构建方案还远远不够。 我们还需要一种仅在免费版本上有选择地运行代码块的方法。 为此,我们将添加一个自定义Swift标志,该标志仅适用于我们刚刚创建的免费版本构建配置。

  1. 转到“构建设置”,然后向下滚动到“其他Swift标志”
  2. 将标志“ -DFREE”添加到两个免费构建配置中。

你们中有些人可能想知道“ -D”的含义。 我也是 您只需要知道Xcode的构建过程只不过是命令行工具的用户友好版本。 它有效地包装了它们。 -D是可传递给构建命令的自定义标志的名称空间。

您可以忽略“ -D”。 我们刚刚创建了一个名为“ FREE”的自定义标志。 可以在下一步中进行检查。

3.进入您的应用程序委托,并在顶部添加以下代码行。

这就是我们所做的。 我们创建了一个名为“ isFreeVersion”的全局布尔变量。如果我们从免费版本的构建方案中进行构建,则此布尔变量将为true。 如果我们根据付费版本的构建方案进行构建,那将是错误的。

我们可以在应用程序中的任何位置使用此变量,以检查我们是否正在运行免费版本。 您可能想要这样做,以显示广告横幅或提供仅用于免费版本的应用内购买。

但是不要相信我。 自己尝试一下! 如果您还将代码包含在“ didFinishLaunching”方法中,则可以使用免费和付费构建方案来构建和运行应用程序。

使用免费版本的构建方案运行应用程序时,您将在控制台中看到免费版本的消息。 运行付费构建方案时,您将看到付费版本的消息。 您已准备好免费构建应用程序版本。

对不同的构建配置使用不同的包标识符

最后一件事。 由于我们将交付两个完全独立的应用程序,因此我们需要将项目设置为免费版本使用不同的捆绑包标识符。

您将需要做两件事

  1. 在Apple Developer门户上创建两个应用程序ID。
  2. 转到您的项目设置,并为付费和免费版本配置设置适当的捆绑包标识符。

这里的所有都是它的。 现在,您已设置为使用相同的共享代码库交付同一应用程序的付费版本和免费版本。

希望您觉得有用。 如果您这样做了,请继续并单击该推荐按钮。

Interesting Posts