iOS项目中多个target管理

一般来说,我们项目中,默认建好是只有一个target的(UItests等除外),但是,一些场景中,多target能帮助我们更好的使用项目。
比如以下场景

    1. 同一项目,一般会分不同环境:开发环境、测试环境、正式(生产)环境,内网环境 ,外网环境等,这就涉及到一个请求接口的区别,一般我们可能会定义多个,每次切换环境,就用代码注释解决是可以完成, 但是很便捷.我们如果采用Target来解决就会便利很多.
    1. 同一产品会有多种客户端构成,现在有很多这种场景下的项目,类似美团外卖商家和用户客端,教学项目的学生端和教师端等,淘宝的客户端,商家端等等情况
      这种项目,会生成多个App,但其中很多东西可以共用,如果在一个项目里创建管理,会更好更方便。
      基于以上原因,我们有必要研究一下多个Target的管理和使用.
准备工作

创建一个Project 命名为MYDemo,项目默认为我们创建了一个Target,名字为c

添加2个Target

选中target,右键选择Duplicate就会添加一个target
重复来一次再加1个target

你会发现多了2个target 和2个info.plist

iOS项目中多个target管理_第1张图片
屏幕快照 2017-10-18 下午3.29.17.png

你会发现2个target和info.plist的名字都是带有copy的 不满意要修改称自己想要的,进行以下操作

  • 1 改target名字和Scheme
    点击左上角模拟器左边的target选择项,
    选择Manage Schems
iOS项目中多个target管理_第2张图片
屏幕快照 2017-10-18 下午3.34.01.png

改成自己想要的名字,这里我们未来便于区分理解 ,是以MYDemo-dev ,MYDemo-test来命名的

iOS项目中多个target管理_第3张图片
屏幕快照 2017-10-18 下午3.36.42.png
  • 2 修改info.plist名字
    这个简单直接在文件名上改,为了统一管理名字还是以MYDemo-dev ,MYDemo-test来命名的
iOS项目中多个target管理_第4张图片
屏幕快照 2017-10-18 下午3.41.45.png
配置不同环境

在build setting 中搜索Macros
然后在Preprocessor Macros 添加预编译宏WD_Environment_Mode

  • 0 生产环境 WD_Environment_Mode==0
  • 1 开发环境 WD_Environment_Mode==1
  • 2 测试环境 WD_Environment_Mode==2

注意三个target都要配置

iOS项目中多个target管理_第5张图片
0099D639-C536-447B-8969-4CF3F16A9482.png

这样我们就可以在项目中根据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 生产环境
    结果如下


    8836EB4F-5A1E-460C-A989-B4FBE001D8A5.png
  • 1 开发环境

  • 2 测试环境
9D8165D5-C3E2-4EAF-B86C-64D200CF78CB.png

总结: 这样不用去手动注释修改代码 只需要切换target 是不是很方便给力呢?

你可能感兴趣的:(iOS项目中多个target管理)