项目在开发测试的时候主流流程一般会有测试、pre、生产最少3个环境,不同环境的切换也衍生了多种方案,这里记录一下自己用到的、还有网上主流的切换方案以及优缺点。
PS:这里篇幅限制,只写一些相关的思路大家探讨,不写具体实现流程,很多方案具体操作流程网上搜搜应该还是可以找到一些资料。
方案一:不同环境写死URL,改URL重新打包
推荐指数:⭐️
评价:此方案一般是刚入行的新人会使用,测试需要根据不同环境频繁打包,上线也有写错url发错包的风险,不建议使用!
方案二:通过plist配置多环境参数,使用script脚本打包的时候根据环境讲plist添加到ipa中
推荐指数:⭐️⭐️
参考博主资料:iOS超简单的App****配置多环境方法 - 简书 (jianshu.com)
评价:多Configure配置+runscrip配置稍微有点复杂,还有多个环境plist文件名称一致容易看花眼,后期还是要配合多target才能食用,建议直接多Configure配置 + 多target方案
方案三:Configure配置 + 多target方案,切换不同target则运行不同环境
推荐指数:⭐️⭐️⭐️
参考博主资料:iOS****配置多环境的三种方案 - 掘金 (juejin.cn)
评价:算是方案二的简化版,使用还可以。
方案四:prefixHeader文件 + 多target方案,切换不同target则运行不同环境
推荐指数:⭐️⭐️⭐️⭐️
评价:相比Configure配置中不能直接宏定义,取值还需要再plist文件中去取【说明1】,多个.H文件配置相比Configure文件和user defined设置就是Command+N的事儿,简单很多,而且可以直接在.h文件中声明宏定义,无疑是更方便的方案
说明1:经过尝试可以使用宏定义,但是步骤很麻烦,需要在每个引用宏定义的.M文件中配置以下参数,并且每新增一个参数需要新增一个声明。
示例:-D'Base_URL=@"$(API_URL)"'
方案五:prefixHeader文件 + 多target方案,切换不同target则运行不同环境
推荐指数:⭐️⭐️⭐️⭐️
评价:相比Configure配置中不能直接宏定义,取值还需要再plist文件中去取,多个.H文件配置相比Configure文件和user defined设置就是Command+N的事儿,简单很多,而且可以直接在.h文件中声明宏定义,无疑是更方便的方案
方案六:host代理方式
推荐指数:⭐️⭐️⭐️⭐️
优点:一套代码行天性,需要时候代理即可,也不存在打错包写错环境问题,开发方案快捷。 缺点:真机代理需要配置代理电脑ip、手机安装证书、抓包工具等【可以考虑统一用一台电脑做代理电脑】,这些流程对测试、产品、运营有不小的挑战,还有公司一些其他部门领导很难玩的转。
评价:使用同一套URL,将运行的设备通过代理的方案在需要的时候代理到想使用的开发环境【需要运维配置提供不同环境的ip地址。
方案七:host动态App内部切换
推荐指数:⭐️⭐️⭐️⭐️⭐️
优点: 1.开发一次性重构完成,后期维护成本低 2.友军部门使用简单,容易上手 3.避免重复打包
缺点:开关功能入口的菜单放在哪里是个问题,为了避免线上用户找到这个彩蛋,最终我还是用了2个target,一个dev用target有彩蛋入口,一个appstore彩蛋入口,只有生产环境。
总结:
其他以上看似7种方案,简单归类就是4种
1.写死代码环境
2.通过多target+config文件+sceme+prefixHeader+plist等多种组合方案,使用切换target切换环境
3.host代理模式(需要考虑开发部门友军部门的整体素质)
4.host APP内动态切换