使用多target构建相似App
Targets that define the products to build. A target organizes the files and instructions needed to build a product into a sequence of build actions that can be taken.
Porject与Target
Project相当于一个仓库,包含了所有的代码和资源文件。而Target相当于一个具体的产品,包含了对于代码、资源文件的具体使用规则和配置。一个Project可以包含多个Target,也就是说通过不同Target我们可以生成不同的APP。
创建target
点击左侧的工程名称,右侧会出现PROJECT和TARGETS,点击你现在的target,假如叫A,右键弹出菜单中,选择Duplicate,复制一个相同的target,复制的target一般叫A copy,A copy和A的编译条件、源文件、资源文件完全一样,此时你可以根据需要修改A copy的编译条件和资源文件了
修改target名称
选择上图中的Manage Schemes,在弹出框中,选中A copy那行,再次点击,就可以修改A copy的名字。如果使用了Git等协同工具,这里还需要勾选Shared
同样的将下面两处进行修改,保持命名的一致性
优化文件结构
不同target会有各自的资源文件,我们可以新建文件夹将各target差异性的资源文件放在一起,方便统一管理。
通过预编译宏来区分target
首先选择一个Target,依次选择Build Settings ->搜索Preprocessor Macros,设置Debug和Release里的预编译宏内容。比如DEBUG_A=1表示CommonProject A版本(注意=前后不能有空格)。程序中依据宏对不同版本进行判断
#if DEBUG_A
NSLog(@"This is CommonProject A Debug!");
#elif DEBUG_B
NSLog(@"This is CommonProject B Debug!");
#elif RELEASE_A
NSLog(@"This is CommonProject A Release!");
#else
NSLog(@"This is CommonProject B Release!");
#endif
疑问:我这里所有的宏值均为1,但是仍然能够根据实际运行环境执行相应的代码片段,请大牛们在留言区不吝赐教,感谢~
相关链接
ios使用targets来构建大量相似App
猿题库iOS客户端的技术细节(一):使用多target来构建大量相似App
手把手教你给一个iOS app配置多个环境变量
iOS开发必备--环境变量配置(Debug & Release)