iOS开发设计多个target

创建target有两种方式,

1>.是通过新建target可以通过File-->New-->Target,然后选择其中一个模板来创建,app类型的target进行创建

2>.另一种方法是通过对原有的target做duplicate,复制一份

今天主要讲第二种方式创建target过程:

1、创建工程命名:CeShiTarget

2、在TARGET中选中项目,右键->Duplicate->Duplicate Only

3、经过以上步骤创建出来的target命名为之前工程名+copy(CeShiTarget copy),接下来做一下修改:

  • 双加CeShiTarget copy重命名如:OtherApp
  • 修改生成的CeShiTarget copy-Info.plist文件命名为OtherApp.plist
  • 设置OtherApp的Bundle Identifier如:come.huaban.OtherApp,修改Bundle display name 如:OtherApp
  • 在Build Setting中搜索packaging设置Info.plist File路径为我们创建的plist路径,Private Headers Folder Path修改为OtherApp/PrivateHeaders
  • 在manager schmes中修改新创建target的名称,选中新创建的target->设置->Duplicate->命名为OtherApp,此时可选择将CeShiTarget copy删除

4、生成一个新的target,一定会与原target有区别,这里可以定义预编译宏,来区分两个版本的不同代码,预编译宏可以在Build Settings中Preprocessor Macros定义,比如在我们新建的OtherApp中定义

分别双击Debug、Release点击+号按钮,输入CHANNEL=1

效果:

 

此时在代码中就可以根据宏做事情

#ifdef CHANNEL

//OtherApp中需要执行的代码

#else

//CeShiTarget中需要执行的代码

#endif

 

具体怎么执行,一下步骤(我将Main.storyboard删除了,纯代码写)

1>在TARGET(CeShiTarget、OtherApp)->Main Interface清空

 2>appDelegate中:

self.window  = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    self.window.rootViewController = [ViewController new];

3>在ViewController:

#ifdef CHANNEL

self.btn.hidden = YES;

#else

self.btn.hidden = NO;

#endif

 经过以上就完成设置

 

可以更进一步设置,如果想设置两个main.m、appdelegate文件分别管理两个应用,其实也很简单

1>选择CeShiTarget文件->show in finder ->创建文件夹命名为OtherApp,将文件夹拖入工程(记得add to targets选择OtherApp),此时工程中两个文件夹CeShiTarget、OtherApp在同一级

2>在OtherApp中创建类OtherAppDelegate继承UIResponder,注意target为OtherApp

创建类OtherAppDelegate,注意targets选择OtherApp

 3>创建main.m文件,注意targets选择OtherApp,修改代码如下

3>可以讲OtherApp.plist->show in finder中移动到OtherApp文件夹下并移动到工程,在General中从新选择OtherApp.plist就可以了,在Build Setting ->packaging下查看info.plist file路径是否正确

4>设置AppDelegate、ViewController、CeShiTarget的main.m的target设置为CeShiTarget(点击.m文件在右侧可看到),不要勾选OtherApp

5>以后再创建类或文件是注意targets,否则报错找不到文件

最终目录如下:

 

同时可以分别设置AppIcon和LaunchImage:

1>Assets.xcassets中创建CeshiTargetAppIcon、CeshiTargetLaunchImage和otherTargetAppIcon、otherTargetLaunchImage,并分别设置图片

2>删除LauchScreen.storyboard,分别在TARGET中设置CeshiTarget和CeshiTarget,如下:

完成

 

posted @ 2016-09-23 11:42  夜晚看日出  阅读(340)  评论(0编辑  收藏  举报