版权声明:本文为博主原创文章,未经博主允许不得转载。
最近产品线规划后,为了避免使用git维护多个分支所带来的高昂代价,需要在项目中引入多Target机制,即一个Project同时管理多个Target,达到git管理一个分支就可以开发多个产品的目的。
-
如何创建多个Target
1.通过File-->New-->Target,选择Empty Application模板,不过新建的target有自己的AppDelegate和main,如何与原来的AppDelegate和main复用需要进一步研究;2.选择一个原有的target,右键选择Duplicate,就会生成一个新的target。
-
使用第2中方法生成target创建多个target之后的配置
1.首先需要区分不同的target的名称,直接双击更改;2.Product->Schemes->Manage Schemes...弹出的面板中,将新建的target工程最后面那个shared按钮给勾上,就可以把自己的设置共享给团队的其他成员;
3.多个target需要设置不同的Build Phases->Link Binary With Libraries/Copy Bundle Resources/Embed Frameworks,不同的target可能需要依赖不同的资源和静态库等;
4.新建的Files或者资源等注意勾选需要添加到的target;
5.新建target之后会自动生成xxInfo.plist文件,其所在文件夹默认在工程的最外层目录,根据情况是否需要更新期所在位置;
6.工程中的InfoPlist.strings可以用来设置应用的多语言名称,同一个Project多target状态下使用InfoPlist.strings文件时,需要注意,不是生成多个不同名的xxInfoPlist.strings,而是需要在Resources->Strings多设置一层文件目录,有多少个target就生成几个文件夹,在每个文件夹中使用同名的InfoPlist.strings文件名,在第4点中Copy Bundle Resources中都添加InfoPlist.strings依赖;
7.图片资源的images.xassets也需要根据不同的target设置多个,可以实现不同的target使用不同的AppIcon和LanuchImage等图片资源;
8.如果两个target的相同点很多,用Duplicate,就可以把相关的设置全部拷贝过来,而不需要做过多的修改。
-
target之间会有各种区别,可以定义预编译宏,来区的不同target需要执行的不同代码,预编译宏可以在Build Settings>Preprocessor Macros(全局宏)定义,例如在target 1的Preprocessor Macros中设置TEST 1,target 2的Preprocessor Macros中设置TEST 2,在代码中可以使用
#ifdef TEST 1
// target 1 需要执行的代码
#elif TEST 2
// target 2 需要执行的代码
#endif
网友评论