一般来说,我们项目中,默认建好是只有一个target的(UItests等除外),但是,一些场景中,多target能帮助我们更好的使用项目。
比如以下场景
- 同一项目,一般会分不同环境:开发环境、测试环境、正式(生产)环境,内网环境 ,外网环境等,这就涉及到一个请求接口的区别,一般我们可能会定义多个,每次切换环境,就用代码注释解决是可以完成, 但是很便捷.我们如果采用Target来解决就会便利很多.
- 同一产品会有多种客户端构成,现在有很多这种场景下的项目,类似美团外卖商家和用户客端,教学项目的学生端和教师端等,淘宝的客户端,商家端等等情况
这种项目,会生成多个App,但其中很多东西可以共用,如果在一个项目里创建管理,会更好更方便。
基于以上原因,我们有必要研究一下多个Target的管理和使用.
- 同一产品会有多种客户端构成,现在有很多这种场景下的项目,类似美团外卖商家和用户客端,教学项目的学生端和教师端等,淘宝的客户端,商家端等等情况
准备工作
创建一个Project 命名为MYDemo,项目默认为我们创建了一个Target,名字为c
添加2个Target
选中target,右键选择Duplicate就会添加一个target
重复来一次再加1个target
你会发现多了2个target 和2个info.plist
你会发现2个target和info.plist的名字都是带有copy的 不满意要修改称自己想要的,进行以下操作
- 1 改target名字和Scheme
点击左上角模拟器左边的target选择项,
选择Manage Schems
改成自己想要的名字,这里我们未来便于区分理解 ,是以MYDemo-dev ,MYDemo-test来命名的
- 2 修改info.plist名字
这个简单直接在文件名上改,为了统一管理名字还是以MYDemo-dev ,MYDemo-test来命名的
配置不同环境
在build setting 中搜索Macros
然后在Preprocessor Macros 添加预编译宏WD_Environment_Mode
- 0 生产环境 WD_Environment_Mode==0
- 1 开发环境 WD_Environment_Mode==1
- 2 测试环境 WD_Environment_Mode==2
注意三个target都要配置
这样我们就可以在项目中根据WD_Environment_Mode来判断切换不同的环境了
下面做个测试
给项目添加个pch 文件 ,这个pch添加配置就不多讲了.
在pch 中 添加一些预编译指令
#ifdef WD_Environment_Mode
#if WD_Environment_Mode==0
#define MAR_KeyK @"222"
#elif WD_Environment_Mode ==1
#define MAR_KeyK @"333"
#elif WD_Environment_Mode ==2
#define MAR_KeyK @"444"
#endif
然后我们在控制器的viewDidLoad 里面添加如下代码
运行不同的target看结果
NSLog(@"---kye%@",MAR_KeyK);
switch (WD_Environment_Mode) {
case 0:
NSLog(@"生产00");
break;
case 1:
NSLog(@"开发01");
break;
case 2:
NSLog(@"测试02");
break;
default:
break;
}
-
0 生产环境
结果如下
1 开发环境
- 2 测试环境
总结: 这样不用去手动注释修改代码 只需要切换target 是不是很方便给力呢?