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

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

您可以为每个使用不同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)。 请记住,如果您使用应用内购买或服务器推送通知,如果没有针对您的真实应用标识符和演示应用标识符的单独的特定配置文件,您将无法执行此操作。

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

然后在两个不同的目标设置中使产品名称和捆绑ID不同(这样设备或模拟器都不会混淆两个应用程序包)。

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

即将发布的Xcode版本,从我在预发布文档中读到的,有一个function,可以简化你想要做的很多。 但是,由于预发布软件受NDA保护,我无法向您提供任何详细信息。