在iOS开发过程中,我们可能遇到这种情况:一些功能、一些SDK只有在调试的时候需要,如使用FBMoryProfiler进行内存检测,利用第三方的SDK搜集崩溃日志等等。若把这些功能和SDK集成到整个项目,就会造成项目臃肿,甚至不能通过AppStore的审核。这时候我们可以通过多个target,把用户不需要的功能部分仅仅放入做开发用的target中。
一、创建多个target(两种方式)
方式一:复制一个和当前target完全相同的target
右击当前target -> Duplicate,这是会生成一个xxx copy的target,resource里也会生成一个xxx copy.plist的属性文件,这个新的target和原有target是完全一致的。
方式二:创建一个全新的target
1、 点击target列表下方的“+”号,首先会让你选择target的类型, 既然我一直所指的都是程序本身, 那么自然选择Application了(至于其他的嘛, 有兴趣的自己研究吧, 比如我们可以把程序中的部分提取成一个Static Library).
2、 Next后, 会让你输入一个新的Target的名字, 而不像复制的方法中, 默认生成 xxxxx copy这样的target名.
3、 但是这样生成出的Target几乎是空的. Copy Bundle Resources, Compile Sources, Link Binary With Libraries里面都没有任何内容. 编译设置也是完全原始的状态.
4、可以通过拖拽内容到这些target的设置中, 以及调整编译选项来完成Target的配置.
二、自定义条件编译宏
新的target创建完成后,我们往往希望在对不同的target进行不同的编译,这时就需要使用条件编辑。
1、添加自定义条件编译宏
选择新建的target -> build setting -> 在Apple LLVM7.1 - Preprocessing下找到Preprocessor Macros,双击后添加一个自定义的变量(如:DEVELOPER)
这时候便可使用条件编译:
#ifdef DEVELOPER code #endif
三、把需要在新的target中使用的SDK和源文件加入新的target中。
在使用cocoaPods添加第三方框架时,可能会因为配置改变而出现编译时链接错误,这时只需要将下图中的配置选择none,重新pod install即可