多环境配置
先了解一下几个概念:
Project: 包含了项目所有的代码,资源文件,所有的信息
Target: 对指定的代码和资源文件的具体构建方式
Scheme: 对指定 Target 的环境配置
方案 1:
多 target进行环境切换
方案原理: 创建不同的 target, 每个 target 可以设置宏. 比如 ATarget 设置了 Atarget = 1 这个宏. 那么就可以根据这个宏来进行判断是不是ATarget.
copy 一个 target . 然后修改copy 出来的info.plist 文件名称. 修改对应的配置
步骤如图:
创建宏,根据宏的不同来区分
OC 环境:
swift 环境
因为 swift 是没有宏的概念的, swift 的配置和 OC 不一样 如下图:
需要在定义的宏前面加上 -D
使用
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
我们先创建一个 config 文件夹, 然后根据我们对应的环境创建不同的 xcconfig.我这里是三种三种, 所以我创建了三种
xcconfig.png
2.创建新的 scheme
scheme.png3.不同环境对应不同的 scheme 设置
4.设置变量
Test.xcconfig 同上
5.info.plist 声明变量
6. 读取变量
let path = Bundle.main.path(forResource: "Info", ofType: "plist")!
let infoDic = NSDictionary(contentsOfFile: path)!
print("\(infoDic["HOST_URL"]!)")
7. 选择不同的环境run便可以输出不同的 host_ur
网友评论