使用Xcode配置在同一设备上运行您的App的多个版本

S0,您有一个要分发给内部测试人员的应用程序,但希望他们同时运行内部版本和App Store版本。 好吧,这篇文章是给你的。 如果您还对如何为实时/临时/开发环境进行构建感兴趣,那么这也很适合您,但是在本文的第二部分中,我将对此进行详细介绍。

配置所有东西

为了使一切正常,我们需要熟悉Xcode配置。 你们中的大多数人会熟悉他们,但您可能不知道。 通常,Xcode从两个开始。 调试发布 。 您将在项目的信息页面中找到它们。

应用程序的捆绑标识符唯一地标识设备上的应用程序。 为了使我们能够在一台设备上运行不同版本的App,我们将需要一个用于测试App的新捆绑包标识符。

让我们继续创建一个新的配置“ Beta”,该配置将识别发送给我们的Beta测试人员的内部版本。 我们可以将其创建为Release方案的副本(我们将其重命名为App Store,因为这就是现在的名称)。 这将导致Debug,Beta和App Store作为可用配置。

现在,我们需要前往控制使用的包标识符的Apps Info.plist 。 您将在其中看到捆绑标识符,其中包含捆绑标识符,该标识符可能被硬编码为您应用的反向域名。 将其更改为$(PRODUCT_BUNDLE_IDENTIFIER)这可能已经是默认值,如果是,那么,

现在,您可以转到App Target的构建设置,搜索“ Product Bundle Identifier”,然后应该在“包装”下看到它。 将鼠标悬停在“产品捆绑包标识符”上时,应该会在左侧看到一个箭头,可以点击以扩展每个配置所设置的值。

现在是更新Debug和Beta版本以使用其他包ID的最佳时机

此时,您将具有多个捆绑包标识符,还需要在开发人员中心中对其进行配置,以便Xcode可以为您生成配置文件。 幸运的是,所有这些都可以使用Fastlane的生产工具完成:

 产生-a galasko.dan.XcodeSchemesFun.beta --skip_itc 

自然,您将用自己的捆绑包标识符替换galasko.dan.XcodeSchemesFun.beta :)

根据配置更改应用的显示名称

为了区分我们的Beta App与App Store版本,我们希望它使用不同的名称。 这可能与“ MyApp”和“ Beta-MyApp”一样微不足道。 我为该名称加上前缀,因为如果应用程序名称很长,我们确实不希望Beta部分被截断。

因此,回到您的Info.plist并添加一个名为Bundle display name的新字段,并将其值设置为$(APP_DISPLAY_NAME)

同样,我们需要回到应用程序目标的“构建设置”部分(来回往复,我知道很多)。 在构建设置导航栏的顶部,您应该看到一个加号。

点击加号会显示一个下拉列表,选择“添加用户定义的设置”。 现在向下滚动到构建设置的底部,您应该在“ 用户定义”下看到设置 单击新添加的设置(可能标题为“新设置”)。 按Enter键即可重命名。 我们希望该名称与我们在Info.plist中使用的名称匹配

此时,您可能已经注意到,在我们的Info.plist中,我们使用了语法$(ENVIRONMENT_VARIABLE_NAME) 。 Xcode自动将环境变量注入$()中包含的项目设置中。

绑在一起

现在,您可以随时在设备上安装多个版本的App。 🎉🎉🎉

要更改正在运行的配置,只需导航至方案设置即可:

在编辑方案菜单中,您可以将“运行”配置或“存档”配置更改为要使用的配置。 通常,“存档”用于制作可以分发的存档,“运行”用于从计算机运行时

由于您正在阅读这篇文章,因此您可能会有一个测试人员团队和某种可自动化的工作流程,因此这是您考虑使用Fastlane(我不隶属的)来自动化您的发行版的最佳时间。 这样,您不必每次都去Xcode,更改方案配置和执行存档。 至少您可以使用Gym工具从命令行进行构建:

  $ gym --scheme“ XcodeSchemesFun”-配置“ Beta” 

但是请前往主要回购更多。

在第2部分中,我讨论了如何使用此设置来更改您的API环境/端点,以便您可以针对您的环境进行不同的构建,例如实时/临时/开发等。在此处阅读it