一般我们xcode 会默认给我们配置两种模式,debug 和 release , 但有时候这两种模式,并不能满足我们的需求,比如我们需要一个测试环境,以供测试打包测试,这个时候我们就可以为xcode添加环境变量。
我们点击我们的工程,然后选择edit scheme,会看到这样

屏幕快照 2018-09-27 下午7.58.57.png
我们这时候需要添加一个test,想我这样选择,进入这个界面,

屏幕快照 2018-09-27 下午8.00.11.png
可以看到,这里我已经添加了一个 test 模式,是这样添加的,点击这个地方的加号,选择第一个,因为我们需要 debug ,

屏幕快照 2018-09-27 下午8.00.53.png
这时候我们就多了一个test模式了,再回到第一步的位置,可以看到多了一个test环境,

屏幕快照 2018-09-27 下午8.01.42.png
,然后点击我们的 targets,build settings,搜索 Prepro 相关的关键字,可以看到这样,在最下面有个,Preprocessor Macros,

屏幕快照 2018-09-27 下午8.03.39.png
这样之后,我们就可以在代码里面用我们的环境变量了,比如不同的环境 server 地址不同,那么久更换地址,做不同的定义就可以了,这里简单举例,

屏幕快照 2018-09-27 下午8.04.34.png
那如何根据不同环境设置 APP 的 NAME呢,看这里,

屏幕快照 2018-09-27 下午8.05.04.png
点击加好之后,我们输入一个环境变量的名字,这里我输入的是 DISPLAY_NAME,然后拉倒最下面找,User-Defined,然后找到自己定义的那个环境变量,然后后面我改成了,debug,test,release,就是app的名字,

屏幕快照 2018-09-27 下午8.07.15.png
接下来,我们到我们项目的info.plist,找到Bundle Name,

屏幕快照 2018-09-27 下午8.08.39.png
改成 ${刚才的环境变量的名字},其实这里和shell一样,然后运行,可以看到,

屏幕快照 2018-09-27 下午8.09.38.png
名字对上了,但这里我发现,release 下名字不会改变,不知道是不是我操作有问题,希望大家告诉我一下。
修改不同环境APP图标也是一样的,大家可自行网上查找,这里我主要是用这些环境变量,比如SDWebImage 里面,要支持webp格式的图片,需要在不同的模式下面加上SD_WEBP=1,个人觉得和这个道理是一样的,我们可以做个试验,我们在刚才的模式下面,随便添加一个环境变量,比如就叫COLOR,
先定位到这个位置

屏幕快照 2018-09-27 下午8.12.43.png
然后我们加一个

屏幕快照 2018-09-27 下午8.13.14.png
然后我们测试一下代码,

屏幕快照 2018-09-27 下午8.13.47.png
结果是背景色也变成了红色。