ios - Xcode 为同一个应用构建不同的环境

标签 ios xcode git

我有一个与服务器对话的应用程序。我有这个服务器的 2 个版本:一个生产版本和一个测试版本。这意味着我需要有一个生产 iOS 应用程序和一个测试 iOS 应用程序。两个版本的应用程序的逻辑基本相同,只是它需要根据连接到的服务器使用某些配置。现在,我的解决方案是使用包含两个版本所需信息的 plist 文件。 plist 将包含一堆键值对,例如:

url: test-server.domain.com
username: test-subject
password: test-password

我有 2 个 git 分支:每个 iOS 应用程序版本的生产分支和测试分支。所述 plist 文件的内容在每个分支上都不同。

问题是:有没有更优雅的方法来解决这个问题?最好我只想拥有 1 个分支机构。我已经研究过使用 Xcode 的环境变量,但是当我存档/构建我的应用程序时,这些变量并没有坚持下去。

最佳答案

当然有!您可以使用环境变量来执行此操作,如博文中所述:Flavors for iOS .您甚至可以在构建时根据变量切换应用程序图标和应用程序名称,因此,您可以通过以下方式 checkin 代码:if#APP_DEV//call dev API ELSIF//call prod API

步骤

1:在项目设置级别,复制调试配置并将其重命名为暂存。 (可选)

2:打开项目build设置并添加一些用户定义的设置:APP_ENV 值为 dev => dev,staging => stage,production => prod。

3:您需要多个 bundle ID 才能并排加载应用程序(例如测试版或正式版应用程序)。因此,使用值 .$(APP_ENV:lower) 创建另一个用户定义的设置 APP_BUNDLE_SUFFIX。这会将 Dev 变成 .dev。如果您希望在提交应用时没有额外的后缀,请将 production 留空。

4:将 APP_BUNDLE_SUFFIX 附加到您的产品包 ID (com.testapp.YourCoolApp.$(APP_BUNDLE_SUFFIX))。

5:在Swift项目中,可以将添加的变量添加到同屏的“Active Compilation Conditions”中。通过将 ENV_$(APP_ENV) 添加到列出的环境来执行此操作。在 Objective-C 项目中,这可以通过将环境添加到“预处理器宏”来完成,但请注意,您需要为值添加后缀 =1 才能激活变量。

使环境变量稳定

您可能需要创建单独的方案来实现此目的。您可以复制方案,或在顶部的方案上 option+click 并切换构建配置。

关于ios - Xcode 为同一个应用构建不同的环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45678587/

相关文章:

ios - 我在 SwiftUI 中创建了一个自定义选项卡栏,但是当我选择一个选项卡时,它会完全重新加载 View 。我该如何防止这种情况

ios - Firebase 通知在手机之间不起作用

ios - 如何使用 3rd 方分发配置文件构建 iOS 应用程序

Swift 3 - Bundle.main.path 在不同目录中具有相同的文件名

git - 在不更改工作副本的情况下创建 git 分支

linux - 使用 bash 脚本存储 git 命令的输出并通过电子邮件发送

git - 一个更好的方法来做 git clone

ios - 将应用程序上传到应用程序商店,支持 iPad,稍后支持 iPhone

javascript - 评估JavaScript在WkWebview上缓慢(非常慢)地绘制数据

iphone - 从 iOS 应用程序向隐藏的收件人发送电子邮件