XCode项目多Target开发指南

888 阅读2分钟

声明: 转载注明本人出处, 请在方便的情况下尽量告知.

尊重原创, 共同进步.


立意

不少公司开发的项目有面对多客户/市场的需求, 然而基本功能完全一致的情况下, 可以考虑多Target开发, 减少开发和维护的人力成本.

考虑到目前业界的实际情况, 本文主要以Objective C为主要开发语言, Swift为后续加入的开发语言来做示例. 其它情况请自行参考.

流程

1. 创建

创建第一个项目FirstProduct, 如图:

001

002

003

2. 添加Swift配置

添加Swift文件, OC调用和基本的配置内容, 如图:

004

005

006

007

008

009

010

011

012

013

014

初次运行结果如下:

015

3. 创建第二个Target

基本的思路就是"搬砖"(复制-粘贴ORZ).

复制Target, 复制Schemes, 修改新项目的Bundle Indentifier:

016

017

018

019

020

021

复制图片资源库, 修改其内容及Target指向. 原资源库仅指向First Target:

022

023

024

025

复制启动页, 修改其内容及Target指向. 原启动页仅指向First Target:

026

027

028

好了, 可以尝试运行了.

结果肯定是失败. XD

因为我们还没有修改完.

4. 修改第二个Target的项目配置

029

030

031

032

目前Demo只做简单的项目名称替换, 更复杂的可以考虑使用User Defined Settings配置项及Configurations来做.

这样就可以适配不同的语言, 甚至完成不同的打包需求了. 因其不在本文范围内, 不做进一步扩展.

More...

你以为这就可以佛祖保佑, 永无Bug, 完美运行了?

只能说Too Young, too simple.

别忘了我们的项目是OC和Swift混编的, 而Swift是用Module进行模块系统划分的. 至于专业解说, 请参考猫·仁波切这篇文章

所以FirstProduct的Module, 在SecondProduct里不一定能用, 我们需要稍微改造一下.

  • 这个是FirstProduct原来的Swift.h引用

033

  • 这个是SecondProduct修改的Swift.h引用

034

当然你也可以考虑不同的Target生成使用不同的Module文件, 然后根据系统配置宏来做更为复杂的配置功能.

不过本文就是个小Demo, 就不做这种高难度动作了.

终于可以运行了, 谢天谢地. 顺便祝大家2018年开工大吉, 狗富贵, 勿相忘. 旺旺旺!