Xcode 多环境配置

在进行多环境配置之前,我们需要对Xcode内的元素组成做一些了解。

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

多环境配置三种方式

方式1. 多Target

新建一个Target,修改BundleId,修改跟随Target新生成的Info-plist文件名

BunduleId

info.plist

对OC来说,根据target在Builed setting 的Preprocessor Macros中定义宏,来区分不同target的不同环境

环境

切换不同的target的编译scheme后,在代码中以下面方式使用

代码

对swift来说,可以在Builed setting 的 Other Swift Flags 里配置一个变量,然后在Swift代码中进行判断

swift

但是该方式并不是很方便,缺点如下:

  • 会生成多个Info-plist,不便于管理
  • 配置起来比较混乱

方式2. 多Scheme – 多Configurations

一般Scheme默认有Debug和Relesse 两种Configurations,此处可以再添加第三种

Scheme

这时所有的配置选项都会变成三个,此时可以新建多个Scheme,分别在不同Scheme选择对应不同的Configurations

Configurations

然后我们在User-Defined定义一个HOST_URL,并在info-plist中暴露出来

User-Defined

切换Scheme就可以切换不同环境的HOST_URL,达到多环境配置的目的

代码

此外,还可以在User-Defined中 为不同Scheme配置不同的appico

icon

icon配置

这时不同Target就有了不同的icon
这种方式相较第一种方便了一些,但是依然需要在Builed setting 中进行配置

方式3. xconfig文件 (cocoapods就是使用的这种方式)

首先创建xconfig文件,需要注意的是xconfig文件与环境一一对应
命名时以 路径-项目名-环境名 来命名

xconfig

并在Configurations中选择对应的xconfig文件

Configurations

xconfig冲突处理

此时删除之前配置的HOST_URL,在不同Xconfig文件中写入不同HOST_URL的值,也能得到相同的效果,但是cocoa pods中也有自己的Xconfig文件,在这之前需要把cocoa pods的xconfig文件路径(注意加上根目录Pods/)引入到Xconfig文件中来解决冲突。

xconfig1

xconfig2

此时就准确打印出了Debug模式下HOST_URL

代码

但是在两个Xconfig文件中可能配置了两个相同的Builed setting配置,这也是一种冲突,这时需要在自己的XConfig文件中用$(inherited)来继承cocoapods中的配置就可以了。

相同配置

相同配置设置

对以上三种方式进行总结:

  • 多target ,可以控制需要编译的代码文件和资源文件
  • 多Scheme可以提供多套环境变量
  • 多xconfig 可以更好的管理和配置这些环境变量
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享