使用多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构建相似App_第1张图片

使用多target构建相似App_第2张图片

修改target名称

选择上图中的Manage Schemes,在弹出框中,选中A copy那行,再次点击,就可以修改A copy的名字。如果使用了Git等协同工具,这里还需要勾选Shared


使用多target构建相似App_第3张图片

同样的将下面两处进行修改,保持命名的一致性


使用多target构建相似App_第4张图片

优化文件结构

不同target会有各自的资源文件,我们可以新建文件夹将各target差异性的资源文件放在一起,方便统一管理。


使用多target构建相似App_第5张图片

使用多target构建相似App_第6张图片

通过预编译宏来区分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

使用多target构建相似App_第7张图片

使用多target构建相似App_第8张图片

疑问:我这里所有的宏值均为1,但是仍然能够根据实际运行环境执行相应的代码片段,请大牛们在留言区不吝赐教,感谢~

相关链接

ios使用targets来构建大量相似App
猿题库iOS客户端的技术细节(一):使用多target来构建大量相似App
手把手教你给一个iOS app配置多个环境变量
iOS开发必备--环境变量配置(Debug & Release)

你可能感兴趣的:(使用多target构建相似App)