背景说明
在iOS开发过程中,常常会朋友一个应用对应多套环境的情况,一般分为测试环境、预发环境、生产地址,每套地址的域名不一样。每次打包或者安装的时候都要手动去修改一下地址相当麻烦,而Xcode正好提供了一个可以轻松解决这种情况的机制—Configuration。
跟Schema相关的配置
- Build Archive Architecture Only:只编译当前架构
- Code Signing Identity: 打包证书
- PreProcessor Macros: 预编译环境常量
- Asset Catalog Compiler - Options: 图片资源编译选项
- User-Defined:用户定义的常量
新增Scheme配置
添加测试环境配置
注意:添加测试环境时复制测试环境的配置,添加线上环境时复制线上环境的配置。
新建 Scheme
新建完成后,Build Configuration
选刚才新建的配置FKTestDebug
下面依次来说几个配置项:
1.Build Active Architecture Only
在Build Settings中:
Architectures 想支持的指令集
Valid Architectures 有效的指令集
Build Active Architecture Only 是否只编译当前设备适用的指令集(如果这个参数设为YES,那么如果你用iPhone 6调试,最终生成的一个只支持arm64指令集的Binary,不过指令集是向下兼容的,比如用iPhone4(armv7)编译出来的APP,可以在iPhone5(armv7s)上运行,因为armv7s向下兼容armv7,但是不可以在iPhone3G(armv6)上运行;如果这个参数设为NO,最终生成一个支持 Architectures 中所有指令集的Binary,所以一般在DEBUG模式下设为YES,RELEASE设为NO,这样可以加快打包的速度)
iOS设备的指令集常见的有以下几种:
- ARMv8/ARM64: iPhone 6(Plus), iPhone 5s, iPad Air(2), Retina iPad Mini(2,3)
- ARMv7s: iPhone 5, iPhone 5c, iPad 4
- ARMv7: iPhone 3GS, iPhone 4, iPhone 4S, iPod 3G/4G/5G, iPad, iPad 2, iPad 3, iPad Mini
- ARMv6: iPhone, iPhone 3G, iPod 1G/2G
因为Configuration在原来的基础上添加了一条测试配置,所以Build Active Architecture Only 中也出现了1个条目,可供配置。
2.Code Signing
可根据scheme配置对应的证书
3.Preprocessor Macros 预编译宏
这条就重要了,环境常量可以用来配置App的环境
1、新增一条环境常量:
2、测试环境变量是否可用
模拟环境配置
3、经测试,环境变量可用!
4.Asset Catalog Compiler - Options
1.添加Icon的图片集
2.在配置中修改配置对应的Icon图集
调整icon目录
5.User-Defined
新增一条AppName
2.自定义好用户自定义宏后,打开info.plist
,读取自定义的宏,语法为${XXXX}
,本例中在Bundle name
、 Bundle identifier
中输入${APP_NAME}
、${APP_IDENTIFIER},在运行程序的时候,app对应的设置就会读取大括号中的值自动变更了。
Cocoapods项目
当项目是Cocoapods项目时,
如果发现除了自带的Release和Debug可以运行外其他的都不能运行,
可以尝试选中pod的project,在它的配置中也添加对应的Configuration就可以了。
网友评论