多环境配置的三种方式

多环境配置

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

方式一

TARGETS选中APP右击Duplicate复制一份APP,并重命名如LoginAPP-Dev开发版APP。修改LoginAPP-Dev下的Bundle Identifier,后面加个-Dev进行区分,产生新的plist文件名修改同理。

image.png

这里可以看出我只是复制了一种构建模式,并没有产生新的代码。
增加区分也可以通过图标进行区分
image.png

预先定义宏

image.png

Debug模式下自定义宏DEV=1Release模式下自定义宏DEV=0 并可以生效。
OC环境下.png

swift环境下,找到Other Swift Flags配置-DEV变量

swift环境下.png

在swift代码里进行判断
image.png

在操作的过程中,发现要在LoginAppLoginApp-Dev来回配置,甚至还要修改info.plist,让其生效,配置过程繁琐难免忽略出现差错。

info路径修改.png

缺点
  • 生成多个info.plist文件
  • 配置繁琐易混乱
方式二

这里需要选中PROJECT-Info-Configurations创建自己想要的编译环境如Beta

image.png

其实是与Edit Scheme是相通的,打开Scheme发现多了Beta
Schema.png

一般开发中,存在内网外网,甚至多个,像debug对应一个host url,bate对应一个host url,通过这种方式我们来创建一个。首先选中Build Settings跳到最下面,点击+Add User-Defined Setting
image.png

定义自己的scheme
image.png

这个时间发现HOST_URL下也是对应的BetaDebugRelease这三个。
然后根据你的需求在每个下面配置你的host url
image.png

要想在项目使用,还需把HOST_URL创建到info.plist文件中,通过变量的形式配置,并暴露出来。
info.plist文件配置.png

AppDelegate.m文件里读取info.plist文件,调试。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    
    // 读取info.plist文件
    NSString *path = [NSBundle.mainBundle pathForResource:@"Info" ofType:@"plist"];
    NSDictionary *infoDic = [[NSDictionary alloc] initWithContentsOfFile:path];
    NSLog(@"HOST_URL ------ > %@", infoDic[@"HOST_URL"]);
    
    return YES;
}

如我在Beta Scheme下编译,是不是打印出来的就是对应的BetaHOST_URL,从而达到一个多环境的配置。

bate环境下编译.png

Scheme配置相比方式一配置,不需要我们过多的在多个TargetBuild Settings去配置,只需在一个TargetBuild Settings里配置

方式三

平常我们通过cocoapods引用三方库的时候,对应的TargetsBuild SettingsOther Links Flags
Search Paths里面都有一些参数,还是需要我们不停的在Build Settings去配置

image.png

当我们用cocoapods导入文件的时候,会给我们生成两个文件Pods-LoginApp.debug.xcconfigPods-LoginApp.release.xcconfig,文件里有很多对应的是key-value形式的变量。使用可以查看PROJECTInfo文件如下图所示。
image.png

首先新建一个Config文件,在改文件下Command+N,创建xcconfig文件命名一般是“目录+App+环境”

image.png

PROJECT-Info-Configuration里面选择相应的模式
image.png

在对应的xcconfig文件里设置如host url
Config-LogingApp.Debug.xcconfig.png

Config-LoginApp.Release.xcconfig.png

写进info.plist文件
image.png

比如在Debug模式下运行,HOST_URL是不是就是我在Debug.xcconfig设置的URL
image.png

这种方式设置相比较之前的显得更加清晰,所以的配置都是在这个文件下进行配置,不需要跑到Build Settings里进行配置。
xcconfig文件还有一点便洁的,它可以控制Build Settings里的选项,比如我们在配置动态库或者静态库的时候,一般需要去Other Linker Flags配置,但我们有xcconfig文件,可以在文件里写。
image.png

这个样子写完后,并没有在Build Settings里生效

image.png

进行编译(注意因为我们是在Debug.xcconfig文件里写的,所以我们切换到Debug模式下)

image.png

是不是生效了~

OTHER_LDFLAGS其实是缩写,这里可以参考xcodebuildsettings网址
比如我们想在xcconfig文件里添加Header Search Paths,去该网址搜索,MTL-去掉

image.png

HEADER_SEARCH_PATHS = /user/info/inclue/Bepa

image.png

通过xcconfig文件实现了多个环境配置,并且把Build Settings也剥离开了,配合Scheme根据你项目的需求就可以进行多环境开发。

总结
  • 通过scheme+xcconfig进行多环境配置
  • xcconfig配置相比其他两种方式美观且易操作
  • 多环境配置可以更好的处理相关环境出现的问题

解决xcconfig冲突

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容