尊重原创, 共同进步.
立意
不少公司开发的项目有面对多客户/市场的需求, 然而基本功能完全一致的情况下, 可以考虑多Target开发, 减少开发和维护的人力成本.
考虑到目前业界的实际情况, 本文主要以Objective C为主要开发语言, Swift为后续加入的开发语言来做示例. 其它情况请自行参考.
流程
1. 创建
创建第一个项目FirstProduct, 如图:
2. 添加Swift配置
添加Swift文件, OC调用和基本的配置内容, 如图:
初次运行结果如下:
3. 创建第二个Target
基本的思路就是"搬砖"(复制-粘贴ORZ).
复制Target, 复制Schemes, 修改新项目的Bundle Indentifier:
复制图片资源库, 修改其内容及Target指向. 原资源库仅指向First Target:
复制启动页, 修改其内容及Target指向. 原启动页仅指向First Target:
好了, 可以尝试运行了.
结果肯定是失败. XD
因为我们还没有修改完.
4. 修改第二个Target的项目配置
目前Demo只做简单的项目名称替换, 更复杂的可以考虑使用User Defined Settings配置项及Configurations来做.
这样就可以适配不同的语言, 甚至完成不同的打包需求了. 因其不在本文范围内, 不做进一步扩展.
More...
你以为这就可以佛祖保佑, 永无Bug, 完美运行了?
只能说Too Young, too simple.
别忘了我们的项目是OC和Swift混编的, 而Swift是用Module进行模块系统划分的. 至于专业解说, 请参考猫·仁波切的这篇文章
所以FirstProduct的Module, 在SecondProduct里不一定能用, 我们需要稍微改造一下.
- 这个是FirstProduct原来的Swift.h引用
- 这个是SecondProduct修改的Swift.h引用
当然你也可以考虑不同的Target生成使用不同的Module文件, 然后根据系统配置宏来做更为复杂的配置功能.
不过本文就是个小Demo, 就不做这种高难度动作了.
结
终于可以运行了, 谢天谢地. 顺便祝大家2018年开工大吉, 狗富贵, 勿相忘. 旺旺旺!