当多个APP项目功能差不多一样,且大多数代码、文件、资源可共用时,就可以在一个项目中通过设置不同的target进行开发。
设置步骤:
1、创建Target
2、Assets.xcassets的设置(app图片、launch启动页),务必勾选对应的target
3、配置Info.plist 修改应用名称、包名、版本号、证书、描述文件等
4、修改Xcode左上角的Target名称
5、 桥接文件pch设置
6、宏定义(Preprocessor Macros)设置
7、pod管理配置
一、创建Target
- 新建项目,命名为 Teacher:
- 文件结构细化,区分系统文件,新建三个新文件夹,用于区分存放三个不同targer
- 复制target,通过对原有的target做duplicate(duplicate only),复制一份。
如果两个target的相同点很多,用duplicate,就可以把相关的设置全部拷贝过来,而不需要做 过多的修改,生成一个新的target。 - 复制完可以看到出现了两个东西: 一个是target,一个是info.plist文件。名字可改为我们想要的。
- 同理 重复操作完成另一个target的复制,最终效果见下图。
二、Assets.xcassets的设置(app图片、launch启动页),务必勾选对应的target
给不同target创建各自的Assets.xcassets文件和info.plist文件:
- 新建Assets :
- 选择对应的target
这里一定要注意 选择对应的target 选择对应的target 选择对应的target 不要选错了 !!!! - 重复操作完成另一个target的Assets配置,最终效果见下图。
- 对应的Assest文件中设置不同的图标和启动页:
三、配置Info.plist 修改应用名称、包名、版本号、证书、描述文件等
此时 运行app肯定会报错,因为 info.plist文件改了路径,另外两个info.plist也还没有设置。
- 选中teacher的target - Build-Settings - 搜索info.plist
- 替换新的路径:
- 运行
测试是否配置合适 Xcode左上角选中那个target 就是运行对应的项目 另外的info.plist文件对它也不会有影响。
- 同理完成 另外两个target的 info.plist路径配置
一定要注意target是否对应是那个 重点看下图的 “1” 它就代表着当前选中的target - 修改不同的target的包名、BundleID等
四、修改Xcode左上角的Target名称
- 选中Xcode左上角的创建工程时的Target,选择Manage schemes
- 编辑
五、 桥接文件pch设置
- 新建pch文件:
- pch路径配置
- pch 文件可以做一些不同target文件下的区分
里面的AppType 怎么来的? 干嘛的? 请看下一步!
六、宏定义(Preprocessor Macros)设置
由于多个target使用同个文件时,存在一定的差异,在代码中可以实现根据不同宏执行不一样的代码,使其与pch文件协作区别target。
具体步骤与前文类似
- 选中debug处,单击该行右边空白处,会弹窗,在点击窗口左下角的“+”添加新项。
- release操作一样,如下图完成新Target的设置
这样 上述pch文件就会起作用。
七、 pod管理配置
因为存在多个Target,我们需要区别的设置不同target需要的第三方库,如下图。这里可能出现的问题是如果有很多类似SDWebImage这样的被多个Target需要的类库,我们在删除和增加的时候就会频繁的操作而且会代码冗余。
最终效果: