谈谈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