内容简介:一、配置的初衷:每次app在Release和Debug模式下都要来回改正式与测试的 BaseUrl以及其他的url或者常量,有可能忘记改,我们就上线,结果就可想而知,于是为了避免手动更改的麻烦和犯错误,我们才去配置环境提示:Common.xcconfig, Debug.xcconfig, Release.xcconfig三个文件的名字自己可以随便起,不想改就以这三个名字就好,下面我就把这三个名字前都加上 JK,如:JKCommon.xcconfig,JKDebug.xcconfig,JKRelease.xc
一、配置的初衷:每次app在Release和Debug模式下都要来回改正式与测试的 BaseUrl以及其他的url或者常量,有可能忘记改,我们就上线,结果就可想而知,于是为了避免手动更改的麻烦和犯错误,我们才去配置环境
二、通过Debug和Release代码的判断来配置,如下
#ifdef DEBUG #define BaseURL @"https://test.app/api/" #else #define BaseURL @"https://app/api/" #endif
-
建议:把上述代码放在一个单独的.h文件里面,在需要使用的时候导入头文件即可,这样会更加简洁,职能更加专一,更好维护,但是这不是最好的方式,最好的方式通过Xcode中的Configurations Setting Fil(.xcconfig)来解决,这应该是最优的实现方式,从而根据Debug和Release来选择相应的环境,看下面 三 的配置
三、Configurations Setting Fil(.xcconfig)的配置步骤
-
3.1、创建三个 Configuration Settings File 文件,该文件的后缀为.xcconfig, 三个文件的命名分别命名为Common.xcconfig, Debug.xcconfig, Release.xcconfig, 其中 Debug.xcconfig和Release.xcconfig 可以使用#include来包含Common.xcconfig配置文件, 注意在创建.xcconfig的时候Xcode默认是不会选中Targets的,注意要选中!
提示:Common.xcconfig, Debug.xcconfig, Release.xcconfig三个文件的名字自己可以随便起,不想改就以这三个名字就好,下面我就把这三个名字前都加上 JK,如:JKCommon.xcconfig,JKDebug.xcconfig,JKRelease.xcconfig
-
3.2、下面以 JKCommon.xcconfig 为例创建,JKDebug.xcconfig和JKRelease.xcconfig一样
`JKCommon.xcconfig` 为例创建
`JKCommon.xcconfig` 为例创建
配置后的图
-
3.3、Debug 和 Release 模式下对上面 文件的的配置
把工程切换到PROJECT—> info —> Configurations下,分别 配置Debug和Release模式 下对应的 .xcconfig 配置文件,当创建了.xcconfig文件后,在每个模式下自动作为一个选项来选择,这样直接选择.xcconfig对应的文件名字即可
Debug 和 Release 模式下对上面 文件的的配置
-
3.4、在JKDebug.xcconfig和JKRelease.xcconfig中配置一些 url
JKDebug.xcconfig 配置
#include "JKCommon.xcconfig" // 测试下基础的URL JKURL = @"https:/$()/test.com/api/api/" // 是测试的环境 JK_IS_PRODUCATION = NO
JKRelease.xcconfig 配置
#include "JKCommon.xcconfig" // 正式下基础的URL JKURL = @"https:/$()/app.com/api/api/" // 是正式的环境 JK_IS_PRODUCATION = YES
提示:在 //之间使用 $()来转义,如:JKURL = @"https:/$()/app.com/api/api/"
-
3.5、在 JKCommon.xcconfig中配置相应的 JKURL 与 JK_IS_PRODUCATION,如下
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) JKURL='$(JKURL)' JK_IS_PRODUCATION='$(JK_IS_PRODUCATION)'
在 `JKCommon.xcconfig`中配置相应的 `JKURL` 与 `JK_IS_PRODUCATION`
提示:
-
Common.xconfig中第一个键的配置必须有 :GCC_PREPROCESSOR_DEFINITIONS = $(inherited),没有Xcode会报错
-
自定义键时的语法:宏名='$(key)', 在代码或其他地方使用宏名来引用,'$(key)':通过key来指定每个模式下的对应的自定义键的名字,通常将宏的名字和key的名字保持一致,注意 等号前后一定不能有空格
-
特别注意:``Common.xconfig中第一个key是GCC_PREPROCESSOR_DEFINITIONS = $(inherited) 后面跟自定义的key,注意在第一个key后面跟上自己定义的key的时候一定不要回车换行,敲一个空格,然后在同一行后面追加就行了,换行会编译错误,切记!
-
3.6、在 TARGETS —> Build Settings —> Preprocessor Macros 下查看自己的配置,入下
在 `TARGETS` —> `Build Settings` —> `Preprocessor Macros` 下查看自己的配置
四、上面配置完,我们来测试一下是否好使
-
4.1、在 Debug 模式下测试
NSLog(@"JKURL=%@",JKURL);
打印结果如下
JKURL=https://test.com/api/api/
在 **Debug** 模式下测试
-
4.2、在 Release 模式下测试
NSLog(@"JKURL=%@",JKURL);
打印结果如下
JKURL=https://app.com/api/api/
在 ** Release** 下测试
-
4.3、上面测试的 demo
五、推荐一些其他的博客,更好的去理解 xcconfig
作者:IIronMan
链接:https://www.jianshu.com/p/58e47ebd6b8a
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 分离Webpack开发环境与生产环境的配置
- Xcode配置测试环境和线上环境
- Linux环境centos7 配置java环境
- hadoop地址配置、内存配置、守护进程设置、环境设置
- 配置lisp开发环境
- 配置lisp开发环境
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Security, Privacy and Commerce, 2nd Edition
Simson Garfinkel / O'Reilly Media / 2002-01-15 / USD 44.95
Since the first edition of this classic reference was published, World Wide Web use has exploded and e-commerce has become a daily part of business and personal life. As Web use has grown, so have ......一起来看看 《Web Security, Privacy and Commerce, 2nd Edition》 这本书的介绍吧!
XML 在线格式化
在线 XML 格式化压缩工具
HEX HSV 转换工具
HEX HSV 互换工具