不同的构建配置需要不同的Bundle标识符

42

我正在开发一个应用程序,现在我们正在尝试针对演示环境和生产环境进行一些测试。自然地,我创建了“Stage”和“Prod”构建配置来在两者之间切换,但我的客户希望它们可以并排安装,这样他们可以轻松地在两个环境之间切换。到目前为止,我一直通过维护代码的一个分支来实现这一点,该分支具有不同的捆绑标识符和捆绑显示名称,以便可以并排安装和测试。不过,我开始怀疑是否有更简单的方法来做到这一点。我是否可以定义一个自定义构建设置,根据构建配置给它一个值,然后将其附加到捆绑标识符的末尾?

类似于...

BUNDLE_SUFFIX
    TEST
    STAGE   
    PROD    ".PROD"

我可以将我的Bundle标识符设置为com.blah.blah$(BUNDLE_SUFFIX)。然后,所有使用PROD配置的构建都将自动获取新的Bundle ID,我就不必一直同步分支了。这种事情有可能吗?


你可以在代码中检查捆绑标识(bundle ID),并根据捆绑标识修改应用程序的行为。我有三个版本的应用程序:开发版本、测试版本和正式版本,每个版本使用不同的Web API。因此,我在运行时检查捆绑标识来确定要使用哪些URL。 - ader
我还使用不同的目标,具有不同的配置文件、捆绑标识符和名称,因此我不必为此进行任何分支。 - ader
你们的舞台环境和生产环境中只有URL会发生变化吗? - Mihir Mehta
2个回答

50
Xcode 7 中: 使用构建设置中的打包配置可轻松完成此操作。 enter image description here

这是正确的。但是,在目标设置的常规选项卡中还有另一个捆绑标识符占位符。因此,如果您为每个配置保留不同的捆绑标识符,它将如何反映在常规面板中? - Rashmi Ranjan mallick
3
请编辑你的方案,并将“Run”的“Build Configuration”更改为“Release”或其他值(默认值为“Debug”)。然后你的“general”页面将显示“Release”的配置。@RashmiRanjanmallick - DawnSong
2
除此之外,我还需要为每个配置在构建设置中设置“产品捆绑标识符”。否则,常规选项卡中的预配配置文件设置将会出现问题(Xcode 8)。 - Simo
1
这个应该被接受为解决方案,我之前使用了bundle id后缀的方法,但是这种方法更有效,并且实际上也允许您为每个环境拥有不同的配置文件。 - aprilmintacpineda

25

1
很棒!我不再在那个项目上工作了,但是这看起来正是我当时所需要的。 - Jose Ibanez
那篇文章对我很有帮助。唯一需要改变的是,如果你正在使用一个appiconset作为你的应用图标,你可以在Build Settings -> Asset Catalog App Icon Set Name中进行配置,而不是替换plist中的每个图标文件。 - Albert Bori
那个教程很有帮助,但是我如何指定要构建哪个构建配置而不需要创建一个单独的方案(因为这会增加整个项目的手动开销)?理想情况下,我将拥有3个配置:dev、staging、production - 所有这些配置都将具有不同的URL和捆绑标识。 - powerj1984

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接