作为一个前端开发人员,在开发过程中,难免与服务器打交道,同一套代码,后端为了支持不同的场景,需要部署多个环境,比如开发、测试、生产等。就我们公司的项目而言,有开发、预发布、发布环境。如果不做多环境适配的话,每次想要切换环境,可能就需要改一大堆代码,注释、取消注释...
我们可以通过Xcode的设置,来快速切换不同环境
需求描述:
- 开发过程中:要随时能切换并运行任意环境
- 测试环境:打包时生成的是测试环境地址的测试包
- 预发布环境:打包时生成的是预发布环境地址的测试包
- 发布环境:打包时生成的是生产环境地址的正式包
思路:
新建测试环境Testing
、预发布环境Staging
、发布环境Production
几个配置,与原来的Debug下的开发环境Develop
组成四种环境
Debug模式下:四个环境均可运行。其他模式下,各自运行各自的环境;
实现步骤:
1. 选择项目 - Project - Info - Configuration
点击 + ,选择参照release。依次新建Testing、Staging、Production三种配置。
2. 项目 - Project - Build Settings - 搜索"custom flags
"
参照Debug,修改其余几种模式,分别给其设置标记。注意,每个里面有个$(inherited)
也要加上
3. 项目 - Project - Build Settiongs 搜索"Preprocessor Macros
"
参照Debug,修改其余几种模式,对预编译宏定义进行默认赋值4. 集成了Cocoapods的,此时要更新一下pod,重新编译。
5. 修改运行时的环境为Staging环境(只做尝试,验证宏是否起作用,运行时选择环境有其他方法),添加测试代码,打印当前的环境
至此,多环境配置成功。可以区分运行环境,并做不同处理了。接下来,可以将不同环境的域名写在各自配置中:
1. 添加自定义环境变量MY_APP_BASE_URL
2. 将MY_APP_BASE_URL
放入info.plist文件中转化成键值对,方便取值。
3. 测试,用Bundle.main.infoDictionary!["MY_APP_BASE_URL"] as! String
取出当前环境的服务器地址。
至此,多个环境运行各自的服务器地址的需求已完成。接下来实现Debug模式下切换不同的环境地址:
以枚举的方式,选择debug模式下,运行的服务器地址,只有开发阶段,我们需要在Debug模式下调试各个环境地址,其他几种模式,都运行各自环境,不需要适配。Debug模式下切换不同域名也已经完成。如果想在设备上运行不同环境,并且同时存在,可以接着配置:
-
想要在设备上,同时存在各个环境的App,需要设置不同的bundleId。这里仅演示Staging环境区分,其他的也可视情况单独配置
-
想要不同环境,使用不同的应用名:
-
想要不同环境,使用不同的AppIcon: