一个工程建立多个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可以根据具体需要增减里面的内容

展开阅读全文

没有更多推荐了,返回首页