1.创建新的target
(1)方法一:File->New->Target,然后选中其中一个模板创建,app类型的Target,可以选空模板.
(2)通过对原有的target做duplicate,点击原来的项目根目录,右侧会出现Project和Target,选中Target右键,选择duplicate,复制一份.本文Demo是用这种方法做的.
2.改名
生层新的target后,系统自动给新的target命名为A copy,(PS:A为原始工程名)同时会自动生成一个A copy.plist之类名字的plist文件.带有copy这种命名不太友好,所以这里我们需要修改.
步骤1:点击xcode左上,选择运行设备的左方,在下拉菜单中选择Manage Schemes...
步骤2:选择A copy那一行,这里我是已经修改过的
敲回车键,最好是回车键,网上有些教程写着点两下,可折腾死我了,回车键,修改名字,简单明了.
步骤3:Close 弹出界面,然后点击Project下的A copy target ,回车编辑
可以点击ALite的Setting,搜索Packaging下的Private Headers Folder Path
看看是不是已经变成ALite.app/PrivateHeaders
3.改info.plist名
原有的A copy .plist 很明显不友好,我的做法是将该文件索引删除,记住是索引,然后将这个文件Add到info.plist下,添加时选Add 到 ALite中,然后改名为ALite-info.plist.
这时一般的就是两个应用了,当然,必须要改Bundle Identifier啊,还有ProductName
写代码的时候为了区别两个target,可以在target中的Build Setting->Preprocessor Macros 中定义预编译宏,比如 MACRO
然后在代码中就可以这样写
#if defined (MACRO)
NSLog(@"ALite");
#else
NSLog(@"A");
#endif
PS:本文主要参考自:http://blog.csdn.net/yongyinmg/article/details/40985341
还有其他的网络贡献者,下段是copy自上方链接.
其他:Build Phases(各target编译所包含的内容,需要注意的是,如果创建了target B后,再往A里面添加资源或文件,target B中不会自动增加这些资源,需要手动添加)
1.Compile Sources
需要编译的代码文件
2.Link Binary With Libraries
编译所依赖的库
3.Copy Bundle Resources
编译需要的资源
每个target可以根据具体需要增减里面的内容