iOS开发 - 一个工程多环境切换,适合需要经常打很多不同环境包的人

971 阅读4分钟

经小伙伴提出问题,swift项目下,以下配置无效,所以博主经过研究实践确定swift配置和oc的稍有差别,如果你是swift项目,请移步swift版本:点击前往
不知道你是否需要经常打包?各种包,测试服,正式服,开发服等等,每次都需要注释打开不同的域名,有时候一不小心忘记了还有可能造成不小的损失,如何规范的来管理这些环境呢?博主今天就教大家怎么把不同的环境区分开,只需要选择对应的target就可以切换不同的环境:
1.我们先来建一个空的工程,名字叫Hello;
这里写图片描述
2.创建好工程后,选中我们的target,右键:
这里写图片描述
3.我们假设需要正式环境,开发环境和测试环境三个环境,原来的target就是正式环境,所以需要创建额外两个target,连续操作两次后:
这里写图片描述
4.到这一步后,就创建好了,然后改名:
这里写图片描述
5.改完名后,左边对应的plist文件名字也改下,然后回到对应target上,因为plist名字改了,所以找不到了,点击choese。。。。按钮,选择对应的plist文件。
完事后,因为有三个target,创建文件时多次勾选也不方便:
这里写图片描述
6.所以在这里要创建一个lib文件,统筹管理:
这里写图片描述
7.点开后拖到最下面:
这里写图片描述
8.点击next后输入名字,叫HelloLib吧,然后选中target:
这里写图片描述
9.把刚创建的lib加进去
这里写图片描述
10.这时候你会发现schemes里面的target名字还没有对应:
这里写图片描述
11.这里把所有的项删除,点“-”。删除完成后,再点“+”就出来了,删了几次就要加几次哦。
这里写图片描述
12.完成之后关闭,然后创建新的文件时记得勾选lib文件,不要再勾选target了,但是Appdelegate文件不用动,因为这里是起源,当然,如果勾选lib,不勾选target也可以,目前没什么影响这里写图片描述
这里注意,只有m文件可以勾选,h文件不可以哦。



13.到这里还没结束,不同的环境我们创建好了,但是选择对应target后对应不同的域名我们还没配置,在build setting中输入Preprocessing:
这里写图片描述
14.看到红色框圈起来的那个了么,因为目前选中的是正式的target,所以这里不需要填,默认是DEBUG=1,不要碰,然后选中Dev和Text的,分别增加DEV=1,TEST=1,名字随便写,后面会用到,
这里写图片描述
15.操作完后,到Appdelegate中,在方法中:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
#ifdef DEBUG
    url = @"http://bbbbbbbbbbbbbbb";

#elif DEV
    url = @"http://cccccccccccccc";

#elif TEST
    url = @"http://dddddddddddddd";

#endif
//这里不管是设置rootViewController还是通过故事板启动都可以哦,

}

这里写图片描述
16.你可以在schemes中切换target,在哪个target下,哪个定义下的url就是有颜色的(切换完target时需要来回切换文件才能看到对应的url颜色改变,要不然还是之前的url变色,可能是Xcode的问题吧,偶现问题,正常切换后颜色就会变化)\



这时候一个不含pod的多target工程就已经完成了,切记在创建文件时需要勾选lib文件,引入第三方时也需要哦。\



17.以上工程不包含pod,但是现在因为第三方频繁使用,所以大量的第三方不可能放进工程中,这里创建pod也需要注意一点,先创建好pod的workspace吧,然后博主来说明怎么配置Podfile文件:
这里写图片描述
如图,每一个target下都要加入你需要的库,一个都不能少,完成之后你的项目就可以引入AF的头文件了,到此,一个完整的多Target工程就创建完毕了,如果你的是已有项目,步骤不变哦,不过要改变下勾选状态。有问题可以留言或加群讨论哦。



这里还有一个坑忘记说了,你可能在编译的时候说报错了,缺少pod文件,不要慌,把你的pod文件,lib文件编译一下,生成.a文件再编译你的工程就可以了。

最后附博主操作的Demo,大家可以对照下看看。点击前往下载