利用Build Configuration来给iOSAPP配置多环境

一、概述

现在项目根据URL的不同至少需要测试和开发环境,一开始是直接在项目里通过#ifdef DEBUG来区分的,直接用系统提供的debug和release模式分别做测试和开发模式。

#ifdef DEBUG
NSString *const MGDomain = @"www.baidu.com";
#else
NSString *const MGDomain = @"www.google.com";
#endif

这样就导致正式环境没法进行DEBUG调试,还有就是测试人员要求手机可以同时安装正式环境和测试环境的APP,如果再增加一个预发布环境就更麻烦了,通过手动来更改会很麻烦甚至出错。

二、中心思想

1.Release和Debug的区别是,Release是不能调试程序,因为默认是屏蔽了可调试的一些参数,具体可以看BuildSetting里面的区别,而且Release编译时有做编译优化,会比用Debug打包出来的体积更小一点。所以这两个是一个编译选择
2、我们需要使每一个环境(开发,测试、预发布)都可已选择使用debug还是release
3、通过新建Scheme来和每一种环境一一对应


image.png

三、实践操作

1、新建Scheme

我这里分为测试和生产环境需要创建两个Scheme,名字分别在后面加上.test和.product


image.png

2、新建Build Configuration

我们有两个环境对应两个Scheme,每一个scheme都可以debug和release,所以需要四个Configuration。
在project的info设置里可以找到Configulations可以看到系统已经为我们配置了debug和release,我们可以把他们做生产环境的一对配置。
然后,分别复制debug和release创建两个新Configuration,做测试环境的一对配置


image.png

image.png

项目通过cocopods管理的,会自动配置,我们需要执行pod install

3.edit scheme

打开edit scheme选项,run模式下对应选择debug,Archive模式下选择release

image.png

4.通过User-Defined Setting 来设置项目名字和bundleID

在project的build Setting里点击加号


image.png

对应四个配置debug和release,debug.test和release.test分别设置


image.png

然后回到工程info.plist处,在Bundle identifier和Bundle display name处获取自定义设置


image.png

5、Preprocessor Macros设置

还是通过设置宏来区分不同的环境


image.png

在测试环境的两个debug.test和release.test增加MEIGUO=1这个宏,正式环境debug和release增加MEIGUO=0这个宏


image.png

在工程中我们就还可以通过MEIGUO=1来分别是不是测试环境URL了

#if MEIGUO == 1
NSString *const MGDomain = @"www.baidu.com";
#else
NSString *const MGDomain = @"www.google.com";
#endif

同时每个环境对应的APP信息可以在User-Defined Setting 里设置
参考

你可能感兴趣的:(利用Build Configuration来给iOSAPP配置多环境)