iOS 多环境下实现环境切换
2018-09-29 本文已影响221人
雪中夜归人
前言
对于所有开发人员来说,开发环境都绝对不是一个,至少都会有个测试环境(debug)一个生产环境(release)。那么必然涉及到环境的切换。那么我以个人的开发经验说说切换开发环境打包的整个变迁史。
多环境切换实现的变迁史
【起始开发阶段】:
在最开始阶段,定义一套环境参数(一般为请求的URL,版本),当需要切换环境时,通过手动注释或者放开某套环境参数以实现切换。
【进阶阶段】:
后来随着这套环境参数越来越多,越来越分散,通过手动注释的方式变得麻烦且容易出错。此时开始宏定义某个参数,通过预编译代码去控制所有环境参数的切换。环境切换时,只需要手动注释或者打开宏定义的那个控制参数即可(一般为debug之类)
【再进阶阶段】:
慢慢的每次手动注释还是发现有点麻烦,那么怎么办呢?
【终极阶段】环境配置教程
网上这方面也有好几种方式,我个人用过多target和多scheme的,根据我们公司的业务需要,多scheme方式更加方便。
1.创建新的scheme
创建新的scheme.png2.选择依赖的target
选择依赖的target.png3.设置debug环境下的scheme参数
设置debug环境下的scheme参数.png完成以上3步,基本上就可以实现多环境的切换,当然需要特殊说明一下的是此做法其实基于进阶阶段宏定义某个参数来实现的,此时这个宏定义的参数,系统默认给的就是DEBUG,所以预编译代码需要像下图这样描述。
基于DEBUG的预编译代码.png
结束语
关于环境切换的探究基本就到这里。测试、正式环境只需要用鼠标选择一下scheme就可以轻松搞定!!!
*****************************************
多环境切换的延伸痛点:
* 配合cocoapods的第三方私有类库中需要宏定义参数(非DEBUG之类的参数)实现不同配置实现不同效果。
ps:即自定义宏定义参数
【解决方式】: 自定义的宏定义参数.png* 自定义参数设置完成,一运行一切良好,但是一旦pod install,一切回到解放前,每次pod install完只能重新输入。
【解决方式】:
解决每次pod install需要重新配置宏定义参数.png
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
if config == 'Debug'
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS']='$(inherited) DEBUG=1 kBossManager=1'
else
config.build_settings['GCC_PREPROCESSOR_DEFINITIONS']='$(inherited) COCOAPODS=1 kBossManager=1'
end
end
end
end
其余参数配置请参考官网:
CocoaPods 官网