Xcode配置文件xcconfig

栏目: IOS · 发布时间: 5年前

内容简介:在开发过程中,肯定会遇到开发环境和正式环境的配置,就比如说:服务器地址、一些加密的key等等,都会区分测试环境和正式环境;搭建测试、正式环境,也许有一些公司运维组比较优秀,搭建了测试环境的DNS(或者测试环境的wifi),用户通过手动切换DNS地址(或切换wifi),来访问测试环境,这样是最好的,但并不是所有公司都这么“好”,很多还是要开发自己实现;有一做法(不推荐)是在代码整两个宏定义,如下:

在开发过程中,肯定会遇到开发环境和正式环境的配置,就比如说:服务器地址、一些加密的key等等,都会区分测试环境和正式环境;

搭建测试、正式环境,也许有一些公司运维组比较优秀,搭建了测试环境的DNS(或者测试环境的wifi),用户通过手动切换DNS地址(或切换wifi),来访问测试环境,这样是最好的,但并不是所有公司都这么“好”,很多还是要开发自己实现;

做法1(low)

有一做法(不推荐)是在代码整两个宏定义,如下:

Xcode配置文件xcconfig

通过注释代码来切换环境,这样也能达到目的,手动切换的方式实在容易犯错,不推荐;

做法2(good)

为了解决手动修改的问题,通过Debug模式判断来定义,这样就用修改代码了;

Xcode配置文件xcconfig

通常,这种方式的结果就是你的.h文件,看上去感觉很杂乱,不雅观,还没有达到完全解偶;

做法3(better)

最近开发过程中发现一种可解耦工程的设置方法:Configuration Settings File(.xcconfig)

Xcode中可以创建自定义.xcconfig配置文件,然后在工程的Debug模式、Release模式选择对应的.xcconfig配置文件,这样就能达到Dubug的代码和Release的代码区分开来维护,perfect!

具体操作

1、新建.xcconfig配置文件:

一般会新建三个:Common.xcconfig, Debug.xcconfig, Release.xcconfig,由命名就能清晰知道Common是公用的,Debug和Release实在各自模式下独立的;

Xcode配置文件xcconfig

2、创建好文件之后,切换到PROJECT—->info—>Configurations下,对应的target下,分别配置Debug和Release模式下对应的.xcconfig配置文件,直接选择.xcconfig对应的文件名字即可

Xcode配置文件xcconfig

3、分别在Debug.xcconfig、Release.xcconfig中定义键值对,在Common.xcconfig中暴露键,这样就能直接调用; ps:在每个模式下,key的命名要一致;

Xcode配置文件xcconfig
Xcode配置文件xcconfig
Xcode配置文件xcconfig
值得注意的是:
在Common中,定义键值对前面,要加上:GCC_PREPROCESSOR_DEFINITIONS = $(inherited) ,
表示要加入预处理,即加上这句,代码中才可以调到;
复制代码
Xcode配置文件xcconfig

配置好之后,会发现Preprocessor Macros 会出现你刚刚配置的键值对,这就是GCC_PREPROCESSOR_DEFINITIONS = $(inherited)这句的效果,此时代码中才能访问自定义的键;

代码调用

Xcode配置文件xcconfig

运行结果:

Debug模式下:

Xcode配置文件xcconfig

Release模式下:

Xcode配置文件xcconfig

完成!!!

额外:

还可以配置其他信息,其实xcconfig用来保存build setting 键值对的纯文本文件,这里配置的键值对会覆盖 build setting 中的值, 如下:

ENABLE_BITCODE = NO
MACH_O_TYPE = staticlib
VALID_ARCHS = arm64 armv7
IPHONEOS_DEPLOYMENT_TARGET = 7.0
复制代码

根据自己项目所需来玩!

实践是检验真理的唯一标准(用代码说话)...


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

信息学奥林匹克教程·提高篇

信息学奥林匹克教程·提高篇

吴耀斌 / 湖南师范大学出版社 / 2003-1 / 24.00元

《信息学奥林匹克教程》(提高篇)既有各个算法设计基本思路的讲解及对求解问题的分析,注重了算法引导分析与不同算法的比较,又给出了具体的编程思路与参考程序,程序采用信息学竞赛流行的Turbo Pascal7.0语言编写,并注重结构化与可读性。一起来看看 《信息学奥林匹克教程·提高篇》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器