Xcode默认会有2个编译模式,一个是Debug,一个是Release。Release下不能调试程序,编译时有做编译优化,会比用Debug打包出来的运行快,另外包也会更小。一般情况下,在程序开发调试期间用Debug,在发布时用Release。
使用场景
我自己碰到的使用场景是,我司的域名有3套:
- 针对开发时的域名
- 针对预上线时的域名
- 针对上线时对外公开的域名
这个时候,就会有多套域名,全部加起来可能有15个左右。每次打包时,就会特别混乱。(注释掉现在使用的域名,打开原本注释掉的那部分,出差错的可能蛮高的,而且不利于阅读)
这个时候,我们就使用它来针对3个环境下不同域名做配置。
配置Build Configuration
1. 添加Configuration
这里我们添加DEVELOP、BETA、保留原有的(release)。这里我们选择直接duplicatte Debug的配置,因为Release的不能做断点调试。
![](http://www.th7.cn/d/file/p/2015/12/31/c47417380bb9ad5ba1647cfba2bb4caa.jpg)
pic2.png
2. 查看Configuration
添加完第1步的Configuration之后,在Edit Scheme里就会看到新添加的配置项
![](http://www.th7.cn/d/file/p/2015/12/31/794686a2ca674cff1bc48de2095cede6.jpg)
pic3.png
3. 更改Preprocessor Macros
第1步里我们直接复制了Debug的配置项,那这里的值就会有问题,需要自己设置。
![](http://www.th7.cn/d/file/p/2015/12/31/a4505b5b31d023507371e018d154932c.jpg)
pic4.png
4. 在程序里配置对应的Configuration下不同域名
![](http://www.th7.cn/d/file/p/2015/12/31/5194727494a7e2bdd7bdfc0d6acddfb0.jpg)
pic5.png
5. 测试
运行程序,修改Scheme下不同的Configuration,就能得到不同的值,那结果就是正确的了。
基于以上的实验,app还可以在不同环境下配置不同的AppIcon和AppName
AppIcon
使用Asset Catalog,分别给三种环境下配置3个名字
- AppIcon
- AppIconDEVELOP
- AppIconBETA
然后去Target - Build Settings里搜索Asset Catalog App Icon Set Name这一项
![](http://www.th7.cn/d/file/p/2015/12/31/45437e5d2286c1f3b2f3c86da405413c.jpg)
pic6.png
![](http://www.th7.cn/d/file/p/2015/12/31/68ea18bc44dd5af13fccf80027411852.jpg)
pic7.png
App Name
Target - Build Settings里点+号,添加一个User-Defined Setting
比如我们请一个叫APP_DISPLAY_NAME的key值,下面BETA叫BETA,DEVELOP叫DEVELOP, Release还是用系统原配置。
进到Target - Info里,修改Bundle name为$(APP_DISPLAY_NAME)
![](http://www.th7.cn/d/file/p/2015/12/31/de7a534e2a7f014e167d48a04574086a.jpg)
pic8.png
![](http://www.th7.cn/d/file/p/2015/12/31/0d856227639cae4039c675a1a4200bcc.jpg)
pic9.png
![](http://www.th7.cn/d/file/p/2015/12/31/9882805d448a2841bd850641c021a8fc.jpg)
pic10.png
运行结果
![](http://www.th7.cn/d/file/p/2015/12/31/dd3f2f7b43f45afae2ded82d58d3f910.jpg)
iconDev.png
![](http://www.th7.cn/d/file/p/2015/12/31/fbe2d7afb476bb3b0ffffd09af7e02f2.jpg)
iconBeta.png
![](http://www.th7.cn/d/file/p/2015/12/31/0581b4d12c1b62f9221b61ea7ac69725.jpg)
iconRelease.png
参考
http://nickcheng.com/post/unique-icons-for-your-app-in-different-state-in-xcode5-debug-release