谈谈iOS项目的多环境配置
在项目中配置多环境,需要了解的三个芝士点:
- Project: 包含了项目所有的代码,资源文件,所有信息。
- Target: 对指定代码和资源文件的具体构建方式。
- Scheme: 对指定
Target的环境配置。
配置多环境的三种方案
多Target
- 先复制一份一样的
Target
- 对其进行重新命名,此时对于项目会增加一个新的
info.plist文件
- 设置其对应的
info.plist文件
4. 对于这个新的Target修改其对应BundleID
- 设置宏定义来实现多环境配置
- Objc:在
Objc中通过在Preprocessor Macros中配置宏定义
- Swift:在
Swift中通过在Other Swfit Flags中增加配置
总结
通过多Target方案会有两个缺点,第一每生成一个Target都会产生一个Info.plist文件,会比较冗余,第二就是比较麻烦,因为每次都会要设置宏定义,故不建议采纳。
通过Scheme实现多环境配置
- 添加新的
Configuration
- 增加新的
Scheme
- 将
scheme与Build Configuration一一对应
- 新增定义设置(这里以区分不同环境需要访问的域名来举例)
- 在
Info.plist中新增访问接口
- 在项目中进行访问
可以看到实现了不同的scheme访问了不同的值,实现了多环境配置,不过这个方案依然不够方便,因为有些Build Settings里针对不同环境需要做不同设置,这样还是不够方便。
xcconfig
1.在项目中创建自己的xcconfig文件,这里分别创建debug、release、rc对应的文件
2.在Project的Configurations进行对应
3.在xcconfig文件中进行配置(同样以不同环境的域名为例子)
4.在plist文件中提供接口
5.运行程序发现报错
这里涉及使用pod,如果另外创建xcconfig文件会导致这个错误,如果不涉及pod则不会报错,来看下控制台的报错
6.引入pods工程下的xcconfig相关文件
仅举例debug.xcconfig文件,其余操作均如下
7.选中不同的scheme运行,即可实现多环境配置
注意
在自己创建的xcconfig进行设置一些Build Settings里的参数时,可能会覆盖掉pods里的设置,这时需要加上关键字$(inherited),这样就会继承pods文件中的设置。
链接:https://juejin.cn/post/7030327656738455565