使用 XCode 将同一 iOS 应用程序的多个版本安装到 iPhone 的最佳方式是啥?

Posted

技术标签:

【中文标题】使用 XCode 将同一 iOS 应用程序的多个版本安装到 iPhone 的最佳方式是啥?【英文标题】:What's the best way using XCode to install multiple builds of the same iOS app to your iPhone?使用 XCode 将同一 iOS 应用程序的多个版本安装到 iPhone 的最佳方式是什么? 【发布时间】:2010-11-10 00:02:13 【问题描述】:

我经常发现我需要在我的 iPhone 上进行构建,这是我的“演示就绪”版本,它可能指向我的演示服务器。我还想要一个构建,它是我正在开发的最新和最好的调试构建,它指向我的开发服务器。有没有人找到一种非常简单的方法让我安装两个可能是完全相同的代码但指向不同服务器的应用程序?或者,也许我会有一个比最新版本落后几个版本的应用程序?最好我会使用相同的 XCode 项目来构建并安装到 iPhone 上。

【问题讨论】:

【参考方案1】:

您可以为它们添加特殊的构建配置,每个配置都使用不同的 info.plist 文件。因此,也许对于您的演示,您有一个名为 MyApp-Info-DEMO.plist 的 info.plist 和用于发布的 MyApp-Info.plist。

然后您可以将您的服务器变量添加为 info.plist 变量,并在应用程序启动时查找它。或者甚至只是在您的新配置中创建一个 DEFINE 语句,例如 SERVER=demo.myserver.com 用于演示,SERVER=production.myserver.com 用于实时。

最重要的部分是在新的 info.plist 中更改 CFBundleIdentifier。因此,在您的演示中,您可以将其命名为 com.mycompany.myapp.DEMO,而真正的名称可能只是 com.mycompany.myapp。

这将允许两个版本同时出现在手机上(不同的 CFBundleIdentifiers)。请记住,如果您使用的是应用内购买或服务器推送通知,那么如果没有针对您的真实应用标识符和演示标识符的单独、特定的配置文件,您将无法执行此操作。

【讨论】:

您也可以在 Info.plist 文件中使用$(BUNDLE_IDENTIFIER),而不是单独的文件,然后将其值设置为用户定义的构建设置。【参考方案2】:

您可以使用 2 个不同的 info.plist 和 2 个不同的预处理器定义创建 2 个不同的目标(在 2 个目标的每个目标的构建设置中)。然后预处理器上的 ifdef 定义选择编译器用于每个目标的服务器常量。

然后在两个不同的目标设置中让产品名称和bundle ID不同(这样设备和模拟器都不会混淆这两个app bundle)。

【讨论】:

【参考方案3】:

在当前版本的 Xcode 中,您可以通过更改应用的 Info.plist 文件以使用不同的包标识符来实现此目的(并且可能还可以在构建设置中更改应用的产品名称)。

根据我在预发布文档中阅读的内容,即将发布的 Xcode 版本具有一项功能,可以大大简化您想做的事情。但是,由于 NDA 涵盖了预发布软件,因此我无法向您提供任何详细信息。

【讨论】:

以上是关于使用 XCode 将同一 iOS 应用程序的多个版本安装到 iPhone 的最佳方式是啥?的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 / Xcode 5:以编程方式访问设备启动图像

通过 Xcode 使用目标的资产

Xcode 7.3 ad hoc 发行版在某些 iOS 设备上启动,而不是在其他设备上

Windows上安装Mac OS

如何配置我的 Xcode 项目以在多个版本的 iOS 上运行?

Xcode的多个副本-针对iOS的较早版本测试代码