为 beta 分发设置 xcode 配置/方案

Posted

技术标签:

【中文标题】为 beta 分发设置 xcode 配置/方案【英文标题】:Setting up xcode configuration/scheme for beta distribution 【发布时间】:2014-05-21 02:39:28 【问题描述】:

我正在尝试创建一种方法,以便能够通过 Testflight 分发我的应用程序的 beta 版本,而不会覆盖生产版本。我希望能够在代码中知道它是 beta 构建还是生产构建(即以某种方式定义 #if BETA_VERSION,类似于全局 DEBUG 变量),并且我希望能够区分它与跳板上单独的应用图标,以及不同的应用名称(即 MyApp Beta 或类似名称)。

我通过复制我的发布配置来设置测试版配置,并且我已经有一个用于 AdHoc 构建的配置文件(过去六个月左右我一直通过 Testflight 进行分发)。我知道要更改应用名称,我需要更改项目 plist 文件中的捆绑显示名称属性,但我不确定如何创建单独的“配置文件”来保存所有这些更改。

我已尝试通读 this article,但无法使其正常工作,并且在阅读说明时无意中弄乱了所有配置文件。

我已经为此苦苦挣扎了几个星期。这个过程的细节是相当不透明的,所以任何详细的说明或指针都特别感谢。

提前谢谢你!

PS 我对 Xcode 中的目标、方案和配置之间的关系感到非常困惑,这可能无济于事。

【问题讨论】:

【参考方案1】:

我在我的项目中使用了三种配置:Release、Beta 和 Debug,其中 Beta 是 Release 的副本。在这三种配置中,我在目标的构建设置中包含以下内容:

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) CONFIGURATION_$(CONFIGURATION)

这将为每个配置定义一个单独的预处理器宏。在您的代码中,您可以执行以下操作:

#if defined(CONFIGURATION_Beta)
    // Something that should only happen in Beta builds
#endif

您可以在“用户定义”类别(位于 Xcode 中构建设置的底部)中为每个配置定义额外的构建设置,然后在您的 Info.plist 文件中引用它们。例如,您可以定义一个自定义 BUNDLE_ID 构建设置,该设置对于 Release、Beta 和 Debug 构建是不同的,然后将 Info.plist 文件中的 CFBundleIdentifier 的值设置为 $BUNDLE_ID,这将允许您安装 Release 、Beta 和 Debug 在您的设备上并行构建。

更新:

如果您想查看如何设置所有这些的好示例,请查看 Cheddar for ios 中的项目配置。

【讨论】:

“用户定义”区域位于目标构建设置的底部。单击左侧边栏中的项目文件,然后单击您的目标,选择“构建设置”选项卡并一直向下滚动。如果您没有看到该部分,请单击屏幕顶部的“+”(“级别”旁边)。你应该看到这样的东西:cl.ly/image/142Y1G3H2U3i “预处理器宏”设置适合用于GCC_PREPROCESSOR_DEFINITIONS(后者只是您将在.xcconfig 文件中使用的原始密钥)。 不,不需要通配符。只需在构建设置中将BUNDLE_ID 定义为您想要的任何内容,然后将CFBundleIdentifier 的值替换为Info.plist 文件中的字符串$BUNDLE_ID 如果您的捆绑包 ID 都使用相同的前缀,您应该能够使用您的团队配置文件在设备上安装所有测试应用程序。否则,您可以在开发者门户中创建单独的应用 ID 和配置文件。 哦,关于应用程序图标 - 如果您使用资产目录,您可以使用“资产目录应用程序图标集名称”构建设置为每个构建配置设置不同的图标。如果您不使用资产目录,则需要使用您的图标文件名定义另一个自定义构建设置,并将它们包含在您的 Info.plist 中。资产目录构建设置如下所示:cl.ly/image/0U3a2I1K0738

以上是关于为 beta 分发设置 xcode 配置/方案的主要内容,如果未能解决你的问题,请参考以下文章

iTunes Beta 测试和分发配置文件

为啥即使配置文件设置为分发,xcode 也会抛出此错误?

Xcode 6 - 无法为 Ad-Hoc 分发选择签名证书/配置文件。一直默认

临时或分发到应用商店进行 Beta 测试?试飞

xcode 7.2 分发证书未显示在构建设置中

Xcode 验证步骤作为临时分发的一部分 [重复]