谈谈iOS项目的多环境配置

4,134 阅读2分钟

在项目中配置多环境,需要了解的三个芝士点:

  • Project: 包含了项目所有的代码,资源文件,所有信息。
  • Target: 对指定代码和资源文件的具体构建方式。
  • Scheme: 对指定Target的环境配置。

配置多环境的三种方案

多Target

  1. 先复制一份一样的Target

image.png

  1. 对其进行重新命名,此时对于项目会增加一个新的info.plist文件

image.png

  1. 设置其对应的info.plist文件

image.png 4. 对于这个新的Target修改其对应BundleID

image.png

  1. 设置宏定义来实现多环境配置
  • Objc:在Objc中通过在Preprocessor Macros中配置宏定义

image.png

  • Swift:在Swift中通过在Other Swfit Flags中增加配置

image.png

总结 通过多Target方案会有两个缺点,第一每生成一个Target都会产生一个Info.plist文件,会比较冗余,第二就是比较麻烦,因为每次都会要设置宏定义,故不建议采纳。

通过Scheme实现多环境配置

  1. 添加新的Configuration

image.png

  1. 增加新的Scheme

image.png

  1. schemeBuild Configuration一一对应

image.png

  1. 新增定义设置(这里以区分不同环境需要访问的域名来举例)

image.png

image.png

  1. Info.plist中新增访问接口

image.png

  1. 在项目中进行访问

image.png

image.png

image.png

image.png

可以看到实现了不同的scheme访问了不同的值,实现了多环境配置,不过这个方案依然不够方便,因为有些Build Settings里针对不同环境需要做不同设置,这样还是不够方便。

xcconfig

1.在项目中创建自己的xcconfig文件,这里分别创建debugreleaserc对应的文件

image.png

2.在ProjectConfigurations进行对应

image.png

3.在xcconfig文件中进行配置(同样以不同环境的域名为例子)

image.png

image.png

image.png

4.在plist文件中提供接口 image.png

5.运行程序发现报错

image.png

这里涉及使用pod,如果另外创建xcconfig文件会导致这个错误,如果不涉及pod则不会报错,来看下控制台的报错

image.png

6.引入pods工程下的xcconfig相关文件 仅举例debug.xcconfig文件,其余操作均如下

image.png

7.选中不同的scheme运行,即可实现多环境配置

image.png

image.png

image.png

注意 在自己创建的xcconfig进行设置一些Build Settings里的参数时,可能会覆盖掉pods里的设置,这时需要加上关键字$(inherited),这样就会继承pods文件中的设置。