在开发过程中,我们一般都在dubug环境下一番轮操,如果需要不时的切换到Release版本下,manage schemes也能轻松的实现正式环境与测试环境的切换.
但是,有一种情况是让我比较恶心的,作为一名程序狗,代码敲的正开心呢,测试姐姐娇嗔到,程序狗哥哥,帮我打个release包吧,五分钟后,又来一句,帮我打回debug包吧. 这我也就忍了,毕竟测试不能得罪. 又过了五分钟,产品又来了,又过了五分钟,运营又来了,我们公司五个产品经理,两个运营,想想看,每天耳边萦绕的都是,程序狗哥哥,打release包吧,程序狗哥哥,打debug包吧,打你大爷,还让不让好好敲代码了...
于是乎做了一个一键切换正式服测试服的功能,还自己一个安静的世界...
最终的效果是这样的
功能做起来很简单,但是也很实用.狗狗们,跟我一起走起来...
一.为项目复制一个Target
复制一个target的目的是,我们不能让用户也看到切换的按钮,不然用户会吓坏的,所以发包的时候,用正儿八经的target,开发测试的时候,用带开关的target
1.在当前target右键点Duplicate
2.duplicate only
3.双击更名
二.创建Setting Bundle
1.创建
创建的时候注意不要勾选release的target,默认是不会勾选的,这样在release版本下就没有开关选项啦
2.设置
创建完后默认是这个样子的
这里删掉多余的选项,保留Group跟Switch,选中后直接点delete键就ok
之后设置group的文案,以及switch开关的键值,之后看代码就知道干啥用的了
3.添加预编译宏
系统默认会有DEBUG这样一个预编译宏,我们需要为release的target添加一个宏来区分开发版本的target,具体操作关键点看红框就能搞定了,注意在debug跟release下都要加
加完后就是这个样子拉
三.代码实现
一般我们设置正式环境与测试环境,都是判断如果是DEBUG下,baseUrl=xxx,否则baseUrl=xxx
现在我们设置一个全局参数,通过参数来设置baseUrl,这里只是简单展示,所以就在viewDidload里展示想要的效果,测试环境下界面是绿色,正式环境下为紫色.默认是测试环境
四.最终效果
开发时我们在KKKiller下捯饬,发布时在KKKiller
在设置里面找到你的app,里面多了一个开关选项,切换后重启,就能生效啦,在release的target下就没有这个开关,这样用户就不会被吓坏了
需要注意的是,创建两个target之后,创建文件,默认是会选中第一个target,为了保证两个版本都能正常允许,在创建文件的时候,我们需要把两个target都勾选上
如果忘了也没关系,可以这样补救
在创建target 的时候,因为是通过copy的方式创建的,所以之前的文件都已经默认勾选上了,新创建的就需要我们手动创建
ok 大功告成,去厕所撸一发庆祝一下吧!~~~~