公司项目中全部采用多个Target在一份项目代码中生成多个app端,之前项目中未曾使用过,问了几个朋友打过马甲包的朋友,也都没多Target搞过,因此自己试验整理了下target生成的整个过程,尽量步骤详细,大牛勿喷,小白共勉。
1.添加多个target
如下图,在项目配置TARGETS中,选中需要复制的target目标,右键选择Duplicate,然后就会出现一个叫* copy名字的target。
如下图
选择Duplicate only,出现如下图MoreTarget copy
修改MoreTarget copy为我们所需要的名字,我这里改为MoreTarget旗舰。然后接下来选择左上角如下图
点击Manage Schemes进去修改MoreTargets copy为MoreTargets旗舰,注意修改选中MoreTargets copy,点击一下后,稍等再点击方可以进去编辑修改。
改名如下图,记得勾选shared,然后close即可。
然后,我们项目中因为用到cocopod,为了两个target都可以使用pod,我们在项目左侧podfile中添加字段
target ‘MoreTargets旗舰‘ do
end
command+s保存后,跟终端pod install。
最终结果我们点击project--MoreTargets--info,如下图所示,
等于我们新建的target,MoreTarget旗舰绑定了相应的debug和release环境。请注意我们项目左侧FrameWorks下面出现新的MoreTargets旗舰对应的plist文件MoreTargets copy-Info.plist,我们单击修改为我们MoreTargets旗舰对应的名字,如下图
然后我们点击TARGETS--MoreTargets旗舰--General--Identify下,点击选择我们刚才修改的plist文件,如下图选择即可。
2.接下来,我们配置两个target不同的app name,和不同的bundleIdentifier。如下图,我们将MoreTargets旗舰的bundelid改为com.targetqijian.www.MoreTargets,
此时分别选择运行不同的targe,会在模拟器上安装为两个不同的App。
3.然后我们修改不同target 不同的AppIcon和LanuchImage,分别拖进去相应图片,如下图
我们点击运行后,桌面如下图两个app,一个是MoreTargets应用,一个是MoreTargets旗舰应用,如下图
最后,后面你添加文件的时候,根据自己需要添加到对应的target就可以了。但是在代码中怎样区分两个target呢?我们可以添加一个预编译宏来解决。target->Build Setting,搜索:Preprocessor Macros,设置Debug和Release里的预编译宏内容,比如QIJIAN=1表示一个target版本(注意=前后不能右空格,有空格会编译不过),程序中对不同版本这样判断,如下图
最后,完毕。两个不同的target共用同一份代码,后续打包可根据需要配置不同的开发者账号即可。