一个工程建立多个target

多个应用使用界面效果几乎一致,仅仅改变主题色和主题logo的情况下,为了节省资源,便于代码维护,选择用一个工程建立多个target的方式实现此需求。

1,新建一个Target(在原来的target上右键,选择duplicate,Xcode会复制一个名为 copy的target对象,同时生成一个 copy-info.plist和Acopy的scheme)

注意
创建不同的target时,有个细节需要注意,那就是你的项目如果是xcworkspace时,先pod install后再去按照贴图上面的操作去完成,否则,先创建再pod install,projectName-dev和projectName-test就会出现报错,报错原因是pod的配置信息没完成或文件路径没索引到。

操作如图:
这里写图片描述

添加完之后有三点出现新的target
这里写图片描述

2,修改应用的名字,target的名字,在info.plist中修改 以及bundleID的修改
a)对 copy target改名,可以直接单击target来修改,改成SecondTarget
b)MoreTarget copy-info.plist,默认生成在程序环境根目录,如果想放到里层,可以先在Xcode删除 MoreTarget copy-info.plist索引,然后拷贝文件到制定目录中,然后更名为SecondTarget-info.plist,然后add到project中。Prefix Header的路径,视具体需求而定是否要修改,如果两个target可以公用同一个Prefix Header,那么就不需要修改这里的路径

生成一个新的target,可以定义预编译宏,预定义宏(Build Setting–>Preprocessor Macros)这个宏是一个全局宏,在所有/整个工程的代码中都是有效的,我们可以在这里添加上环境与处理的宏(例如:MORETARGET,这个是随便自己取的)

两个target情况下的配置如下:
这里写图片描述

这里写图片描述
然后在定义宏的文件中加入如下代码

/**
MORETARGET
0:项目1
1:项目2
*/
#ifdef MORETARGET

#if MORETARGET == 0
#defineWDAPIServerUrl   @""
#defineJSPatchAppKey     @""

#elif MORETARGET == 1
#defineWDAPIServerUrl @""
#defineJSPatchAppKey  @""

#else
#warning"未匹配环境"

#endif

其他:Build Phases(各target编译所包含的内容,需要注意的是,如果创建了Second target 后,再往原target里面添加资源或文件,Second target 中不会自动增加这些资源,需要手动添加)

1.Compile Sources
需要编译的代码文件
2.Link Binary With Libraries
编译所依赖的库
3.Copy Bundle Resources
编译需要的资源
每个target可以根据具体需要增减里面的内容

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值