一般来说,线上环境和测试环境的基础URL和其他常量是不相同的,如果只是频繁修改一个字段,可能会出现忘记修改的情况,导致线上或者是测试代码出现问题,为了避免手动修改导致的错误,因此我们需要进行一些自动的处理。
一、通过Debug和Release代码来判断配置
#ifdef DEBUG
#define BaseURL @"http://debug/api/"
#else
#define BaseURL @"http://release/api/"
#endif
建议是把以上的代码放在一个单独的.h文件里面,在需要的地方引用头文件就好了,这样会显得更加简洁。
二、使用Configurations配置
1.创建三个Configuration Setting File文件,名字随意就好,我这里就叫Commen,Debug,Release
1.png因为创建的时候是没有默认选中target的,因此需要手动勾选上。
2.png
配置后的图
3.png
2.工程切换到PRODUCT -> info -> Configurations,分别配置Debug和Realease模式下对应的 .xcconfig文件
4.png3.在Debug.xcconfig和Release里面配置一些东西
- Debug.xcconfig里面
#include "Common.xcconfig"
/// 测试环境下的URL
BASEURL = @"http:/$()/Debug/app/api/"
///是否是测试环境
STATUS_IS_PRODUCATION = NO
- Release.xcconfig里面
#include "Common.xcconfig"
/// 测试环境下的URL
BASEURL = @"http:/$()/release/app/api/"
///是否是测试环境
STATUS_IS_PRODUCATION = YES
- 提示:在//之间使用 $() 来进行转义,如:BASEURL = @"http:/$()/Debug/app/api/"
4.在Commen.xcconfig里面进行配置
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) BASEURL='$(BASEURL)' STATUS_IS_PRODUCATION='$(STATUS_IS_PRODUCATION)'
提示:
-
Common.xconfig中第一个键的配置一定要是:GCC_PREPROCESSOR_DEFINITIONS = $(inherited),否则的话Xcode会报错
-
自定义键时的语法:宏名='$(key)', 在代码或其他地方使用宏名来引用,'$(key)':通过key来指定每个模式下的对应的自定义键的名字,通常将宏的名字和key的名字保持一致,注意 等号前后一定不能有空格
-
特别注意:Common.xconfig中第一个key是GCC_PREPROCESSOR_DEFINITIONS = $(inherited) 后面跟自定义的key,注意在第一个key后面跟上自己定义的key的时候一定不要回车换行,敲一个空格,然后在同一行后面追加就行了,换行会编译错误,切记!
5.剩下的就是来查看一下,在 TARGETS -> Build Settings -> Macros 下查看配置是否成功
5.png6.配置完成之后,分别在Debug模式下和Release模式下打印BASEURL即可
NSLog(@"%@",BASEURL);
网友评论