在做公司项目的时候,我们经常碰到多个开发环境的问题,比如内网环境,联调环境,外网环境等,这时候根据不同的环境,可能会设置不同的域名,但是每次切换起来比较麻烦。这时候,我们可以修改Xcode
的配置,来达到切换环境的目的。首先我们先来了解一下Xcode
相关的配置的具体含义:
Project:包含了项⽬所有的代码,资源⽂件,所有信息
Target:对指定代码和资源文件的具体构建方式
Scheme:对指定Target的环境配置
方法一:多Target
1、创建新的Target
(如下图):
接下来就会发现,项目中多了一个
Target
,并且运行后,会发现,多了一个APP,一个名字是TargetDemo
,另一个是TargetDemo-Dev
2、修改
Target
和info.plist
的名字3、在
BuildSetting
里修改info.plist
的名字4、这时候,我们可以在
BuildSetting
,增加一个宏定义,Debug
模式下Dev=1
,然后在Release
模式下Dev=0
(如下图)5、在代码里我们就可以通过宏定义来判定具体的域名
#if Dev
NSLog(@"dev");
#else
NSLog(@"release");
#endif
方法二:多Scheme
1、添加Scheme
(如下图),这时候我们就会发现,项目所有的配置中,都会多了一个Beta
的配置,
2、对应的,我们创建两个版本的
Scheme
,一个Beta
,一个Debug
(如下图)创建完成后,我们会发现,项目中多了两个可选择的项如下图:
然后我们指定对应的
Scheme
设定对应的环境。SchemeDemo
指定到Release
,Debug
指定到Debug
,Beta
指定到Beta
,3、然后在
BuildSetting
中根据不同的模式,创建不同的域名(如下图)4、然后在
info.plist
中添加域名同名的键值对5、我们就可以用不同的
Scheme
来获取不同的域名了方法三:使用xcconfig
1、跟创建普通的类文件一样,创建两个xcconfig
文件,分别为Debug
和Release
对应的版本,并且设置不同的域名
2、更改配置,修改成我们对应的配置文件即可
3、同方法二,第4步,增加键值对
4、同方法二,第5步类似,直接测试我们配置的效果
使用
Scheme
+xcconfig
文件是我们最推荐的方式,使用起来也比较简单,但是需要注意冲突问题,因为Cocoapods
也是使用xcconfig
方式,那么如果有两个配置文件,应该以哪种为标准来设置呢?可以使用#include
包含别的配置文件。但是如果两个配置文件设置的key相同,会怎么办呢?这时候,我们可以设置继承,使用关键字${inherited}
。