iOS开发多环境配置的方法

在做公司项目的时候,我们经常碰到多个开发环境的问题,比如内网环境,联调环境,外网环境等,这时候根据不同的环境,可能会设置不同的域名,但是每次切换起来比较麻烦。这时候,我们可以修改Xcode的配置,来达到切换环境的目的。首先我们先来了解一下Xcode相关的配置的具体含义:

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

方法一:多Target

1、创建新的Target(如下图):

创建新的Target

  接下来就会发现,项目中多了一个Target,并且运行后,会发现,多了一个APP,一个名字是TargetDemo,另一个是TargetDemo-Dev

2、修改Targetinfo.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指定到ReleaseDebug指定到DebugBeta指定到Beta

3、然后在BuildSetting中根据不同的模式,创建不同的域名(如下图)

4、然后在info.plist中添加域名同名的键值对
image.png

5、我们就可以用不同的Scheme来获取不同的域名了

方法三:使用xcconfig

1、跟创建普通的类文件一样,创建两个xcconfig文件,分别为DebugRelease对应的版本,并且设置不同的域名


2、更改配置,修改成我们对应的配置文件即可

3、同方法二,第4步,增加键值对
4、同方法二,第5步类似,直接测试我们配置的效果
  使用Scheme+xcconfig文件是我们最推荐的方式,使用起来也比较简单,但是需要注意冲突问题,因为Cocoapods也是使用xcconfig方式,那么如果有两个配置文件,应该以哪种为标准来设置呢?可以使用#include包含别的配置文件。但是如果两个配置文件设置的key相同,会怎么办呢?这时候,我们可以设置继承,使用关键字${inherited}

你可能感兴趣的:(iOS开发多环境配置的方法)