【项目之初我们采用Build configuration 配置多种环境,但是最后我会介绍一下我们现在用的方式,也是我认为最灵活方便的方式】
1、why 为什么需要配置多种项目环境
在实际开发中,项目需要经过多个环境的测试,才能上架到应用市场。
一般都是如下过程
开发环境->测试环境->预上线环境->正式环境
因此仅仅debug与release两套环境无法满足我们多个环境多个域名的要求。
除此之外,项目进入正式环境测试阶段,还会提交到Testin平台进行测试,因为项目中使用到了听云、网宿等SDK,不希望测试数据影响到正式环境,因此APP端release状态也需要区分。这么多的环境,如果每次打包都要修改代码很容易混乱出错,因此Build configuration能很好的给我们解决问题。
2、how 如何配置多种环境
①选择PROJECT->info 找到configuration。点击加好进行添加。首先duplicate debug。
创建结果如下
②然后我们针对每种环境设置预处理宏
第一步 :设置Preprocessor Macros
第二步:设置Swift Compiler - Custom Flags
如图4设置Active Compilation Conditions,也可以设置OTHER_SWIFT_FLAGS 注意参数前需要加-D。
如果是纯swift的项目 只需要设置第二步就可以。
③设置完参数写代码测试一下,图5
④修改build configuration 对各个环境进行测试
运行结果:
其余环境各位可以自己写demo测试一下。
3、回到本文第一行,我说过还有其他的方式更便捷【需要服务端配合】
在介绍之前结合公司的项目解释一下为什么
①设置build configuration 能把我们从繁琐的修改代码中解脱出来,但是还是需要针对每种环境打出不同的测试包,还是觉得麻烦。
②我们开发的APP是原生与HTML的混合应用,资源文件与接口部署在不同服务器,很多时候资源文件需要独立上线,但是移动端代码并没有修改!
③如果接口在测试环境,资源在预上线环境,通过设置build configuration根本无法解决。
④移动端对于Dev,Test,PreRelease环境只存在接口地址域名的差异。
那么我们最理想的情况应该是,Dev,Test,PreRelease这三种情况我们不需要修改任何配置项,一个IPA包就能测试到这三种情况。
因此我们现在是这么做的:
不同的服务器相同的项目对外的域名都是一样的,在开发测试阶段只需要修改域名对应的IP从而选择不同的测试环境。
推荐两个应用
使用SwitchHosts指定host
然后配合Charles抓包工具,简直好用到不行。
总结:移动端不需要修改代码的情况可以使用SwitchHosts切换不同测试环境。若有上述听云、网宿等SDK开关控制问题,可以设置build configuration 以及 preprocessor macros配合解决。
【特别】使用cocoapods 管理项目的可以编辑podfile设置build configuration、 preprocessor macros 和OTHER_SWIFT_FLAGS等。
上图简单介绍下
pod install 成功之后如图12
以上就是这次的全部内容,喜欢请关注😋