iOS 一个项目添加多个TARGET

96
JasonEVA
1.7 2017.12.06 14:33* 字数 435

项目开发中会存在测试、正式等不同环境,需对应不同接口Host地址、项目名称等等配置。如果每次只有一个项目target的话每次打包的时候替换会很麻烦,而且容易出错。所以我们可以通过创建多个不同配置的target以区分不同环境。

1.复制原有target

复制原有target


屏幕快照 2017-12-06 13.41.03 3.png

选择仅复制


屏幕快照 2017-12-06 13.44.53.png

复制完成后出现一个copy的target


F2F53467-1987-485B-81A9-CF123C5D7816.png

方便区分可将target进行改名(直接在target上回车即可编辑)


277A5A01-E010-4CDC-B11A-A3552F5DAAE5.png

2.修改plist文件名

在复制target操作后不仅复制出了一个target,还会复制出一个对应的Info.plist文件


7598FA90-9A11-4AC2-835F-C29C0F7BFA8D.png

将复制出来的plist文件改名,好对应区分


BCF883AD-1BC6-49B9-82BB-CDA3AA5C8D8E.png

3.为刚刚复制出来的target选择对应的plist文件

648AD266-A643-4651-B2BF-49EE25D944E0.png

选择刚刚改名的plist文件


89DFD276-F543-466D-98D8-E7E1E8DE4D3F.png

4.修改Scheme名,方便区分

选择Manage Schemes


屏幕快照 2017-12-06 14.09.45.png

回车编辑


D85FA98A-AD22-4EB3-BA23-C76ACEF2EBC4.png

完成


F5B7D196-33FA-4C4C-8E2A-2E8CEC5EA593.png

5.预定义宏已区分测试target(Build Setting–>Preprocessor Macros)

这个宏是一个全局宏,在所有/整个工程的代码中都是有效的,我们可以在这里添加上环境与处理的宏(例如:JW_TESTMARK,这个是随便自己取的)


1E796A3A-F94B-4E1E-8F85-BFC03F2C4760.png

6.根据预定义的宏以区分环境,进行配置

#if defined (JW_TESTMARK)

//测试环境
#define AppMainUrl @"http://192.168.1.111:8080/"

#else

//正式环境
#define AppMainUrl @"http://api.baidu.com/"

#endif

打完收工

需要注意的

你的项目如果是xcworkspace,创建不同的target时,有个细节需要注意

1.需先将复制出来的target中libPods-XXXX删除

image.png

2.然后在Podfile中添加新的target

image.png

3.pod install 重新生成libPods-XXXX测试文件

image.png

参考资料:
如何在iOS项目中创建多个target?

OC 开发随记