在实际开发中,我们往往需要配置多个运行环境,比如测试版和证书版,同一套代码,需要生产两个名字不一样,证书不一样,服务器不一样的产品。这时候就需要配置多个target来管理了。
复制target
- 在xcode文件结构中,点击项目文件,然后在右边的工作区的左栏找到TARGETS,然后右击原来的target,然后选择【Duplicate】就可以复制一个和target副本出来,并且会生成一个info.plist文件副本和一个scheme副本。如下图
-
修改target名称,单击多个TargetDemo copy ,然后在点击一下就可以修改名称TargetDemoTest
-
修改Scheme名称,在Xcode左上角点击Scheme,然后在点击 Manage Scheme。
在Schemem列表中选择targetcopy,然后在单击一下就可以修改Scheme名称了
配置info.plist
-
在上一步中,复制target的时候提到过也会复制出一份info.plist文件,而且这个文件在项目的根路径,和原来的info.plist文件不是同一个路径。
-
先将plist文件改名为"TestInfo.plist",然后将文件拖入代码文件路径,和原来的plist文件同一路径。
- 回到xcode中,将原来的copy的plist文件引用删除,把新的TestInfo.plist拖到代码文件夹中。
注意:拖入文件的时候,要选择copy出来的target,也就是TestTarget
-
配置plist路径,点击新的target,然后在Built Setting 中搜索 info.plist 找到配置项
双击配置项,修改成以下路径
修改项目名称和Bundle Identifier
-
修改Bundle Identifier,点击新的target,在 General 中直接修改
- 修改项目名称,选择TestInfo.plist文件,修改Bundle name
添加预编译宏
在代码中,我们需要判断运行的是哪个target,做一些业务判断。
-
在新的target中,点击Build Setting ,搜索 “preprocessor Macros”,在配置项中添加 TEST 宏,Debug和 Release都要添加
运行程序
分别运行两个Scheme,可以看到2个App已经安装到模拟器
宏判断
在appdelegate 添加以下判断
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
#ifdef TEST
NSLog(@"测试版本");
#endif
return YES;
}
在运行test Scheme时就可以看到打印
更多设置
现在两个target完全独立,要设置什么都可以在Build Setting 设置,包括证书,或者是应用的Logo都可以单独设置。