使用场景
我自己碰到的使用场景是项目用到的域名和端口信息有5套:分别对应: (Dev:开发环境 , SIT:sit测试环境 , UAT:uat测试环境,Pro:生产环境,Release:上线打包环境)
这个时候,就会有多套域名,每次打包时,就会特别混乱。(注释掉现在使用的域名,打开原本注释掉的那部分虽然也是可以的,但是出差错的可能蛮高的,而且不利于阅读)
这个时候,我们就使用它来针对5个环境下不同域名做配置。
1.Build Configuration配置:
Xcode默认会有2个编译模式,一个是Debug,一个是Release。Release下不能调试程序(即不会输入打印日志信息),编译时有做编译优化,会比用Debug打包出来的运行快,另外包也会更小。
2.配置Build Configuration
(1). 添加Configuration
(Debug和Release两种模式是系统自带的,其他几个相应的根据需求在Debug和Release两种模式上复制)
(2). 更改preprocessor macros(全局宏命令)
(宏命令值我一般就直接与模式值一致,方便记忆)
(3). 切换不同模式运行
(项目CNCredit ->EditScheme ->Run ->...选择对应的模式,Debug executable如果不勾选,打断点就无效了)
(4).如果项目使用了cocopods管理三方库,在新增的模式下运行会报错,那是由于Targets Support Files最初只支持了release和debug模式,解决办法:重新在终端下pod install生产对应模式的xcconfig文件.
(5).使用
示例一:针对不同模式下log日志定义
示例二:不同模式下域名和端口区分
(6).配置不同的AppIcon和AppName(这部分转载,自己未测试)
基于以上的实验,app还可以在不同环境下配置不同的AppIcon和AppName
AppIcon
使用Asset Catalog,分别给三种环境下配置3个名字
AppIcon
AppIconDEVELOP
AppIconBETA
然后去Target - Build Settings里搜索Asset Catalog App Icon Set Name这一项
App Name
Targets - Build Settings里点+号,添加一个User-Defined Setting
比如我们添加一个叫APP_DISPLAY_NAME的key值,下面BETA叫BETA,DEVELOP叫DEVELOP, Release还是用系统原配置。
进到Target - Info里,修改Bundle name为$(APP_DISPLAY_NAME)
更对知识点可以参考:https://www.jianshu.com/p/83b6e781eb51