iOS 多环境配置

Demo下载

多环境配置

先了解一下几个概念:
Project: 包含了项目所有的代码,资源文件,所有的信息
Target: 对指定的代码和资源文件的具体构建方式
Scheme: 对指定 Target 的环境配置

概念文章详解->

方案 1:

多 target进行环境切换
方案原理: 创建不同的 target, 每个 target 可以设置宏. 比如 ATarget 设置了 Atarget = 1 这个宏. 那么就可以根据这个宏来进行判断是不是ATarget.

copy 一个 target . 然后修改copy 出来的info.plist 文件名称. 修改对应的配置
步骤如图:

创建新的 target.png

创建宏,根据宏的不同来区分

OC 环境:

OC 增加宏.png

swift 环境
因为 swift 是没有宏的概念的, swift 的配置和 OC 不一样 如下图:
需要在定义的宏前面加上 -D

image.png

使用


image.png

以上代码. 要输出就只能选择 copy 的这个 target才会输出. 因为 copy 这个 scheme 设置了 TEST 宏


效果.png

方案缺点:
多个 target,多个 info.plist 文件, 配置繁琐.易出错.
方案优点:
还是有很多的适用场景, 比如做马甲包, 就得用多 target 了. 方便

方案 2:

新增构建配置
点击加号,新增 Configurations


新增 Configurations.png

同样的需要针对 scheme 对应的 config 进行一个配置.也是比较繁琐

使用方式:
自定义一个 API_URL的变量. 分别针对三种情况进行设置.


设置.png

数据会根据选择不同的 scheme 输出对应的数据.
缺点: 操作很繁琐. 而且在配置表里面不方便统一查看. 不方便

方案 3:

创建多 xcconfig 的方式---推荐

1.创建xcconfig

创建.png

我们先创建一个 config 文件夹, 然后根据我们对应的环境创建不同的 xcconfig.我这里是三种三种, 所以我创建了三种


xcconfig.png

2.创建新的 scheme

scheme.png

3.不同环境对应不同的 scheme 设置

设置.png

4.设置变量

DEBUG.png

release.png

Test.xcconfig 同上

5.info.plist 声明变量

声明变量.png

6. 读取变量

 let path = Bundle.main.path(forResource: "Info", ofType: "plist")!
 let infoDic = NSDictionary(contentsOfFile: path)!
 print("\(infoDic["HOST_URL"]!)")

7. 选择不同的环境run便可以输出不同的 host_ur

image.png

你可能感兴趣的:(iOS 多环境配置)