通过多个scheme解决多环境问题

2017-06-26  本文已影响0人  LeeLeCoder

项目开发中,我们经常会遇到多种环境的问题,不同的环境通常会有不同的参数值,甚至会执行不同的代码。当遇到这种情况,我们可以通过runtime调用不同的selector来实现,这里介绍通过不同的schemes来切换不同配置文件。在代码中定义不同的宏来控制最后工程的不同代码。同时,这种方法可以减少编译时间,提高开发效率。

我自己碰到的使用场景是,我们公司的域名一共有4套:

1 配置 Build Configuration

这个时候,就会有多套域名,每次打包时,就会特别混乱。(注释掉现在使用的域名,打开原本注释掉的那部分,出差错的可能蛮高的,而且不利于阅读)这个时候,我们就使用它来针对4个环境下不同域名做配置。

1.1 添加Configuration

这里我们添加Dev、Test、Pre、Release。

Configuration配置

2. 配置多个schemes

1506145783006.jpg

2.1 编辑scheme

添加完第1步的Configuration之后,在Edit Scheme里就会看到新添加的配置项


2.2 更改Preprocessor Macros

第1步里我们直接复制了Debug的配置项,那这里的值就会有问题,需要自己设置。

2.3 在程序里配置对应的Configuration下不同域名

@interface NPDomainConfigure : NSObject

extern NSString *const SERVER_URL;

@end

@implementation NPDomainConfigure

#if DEV_ENV
NSString *const SERVER_URL = @"https://dev.xxx.cn";
#elif  TEST_ENV
NSString *const SERVER_URL = @"https://test.xxx.cn";
#elif PRE_ENV
NSString *const SERVER_URL = @"https://pre.xxx.cn";
#elif RELEASE_ENV
NSString *const SERVER_URL = @"https://xxx.cn";
#else

@end

2.4 测试

运行程序,修改Scheme下不同的Configuration,就能得到不同的值,那结果就是正确的了。

基于以上的实验,app还可以在不同环境下配置不同的AppIcon和AppName

3. AppIcon

使用Asset Catalog,分别给各种环境下配置APP 图标,去Target - Build Settings里搜索Asset Catalog App Icon Set Name这一项,如下图所示配置即可:

屏幕快照 2017-09-21 下午8.04.23.png

4. App Name

Target - Build Settings里点+号,添加一个User-Defined Setting
比如我们请一个叫APP_DISPLAY_NAME的key值,如下图配置:

然后进到Target - Info里,修改Bundle name为$(APP_DISPLAY_NAME)

5. 打包配置

开发中可能把测试环境下的版本打包发给Apple,为了避免这件事,可以做一下设置。比如将Release环境以外的Skip Install配置成NO,其他环境就不会Archive出ipa了。

屏幕快照 2017-09-21 下午8.12.02.png

参考:Troubleshooting Application Archiving in Xcode

上一篇 下一篇

猜你喜欢

热点阅读