iOSOC

iOS实现一个project多个target详解

2017-09-22  本文已影响29人  会上树的潴

背景介绍

在开发过程中,我们会在内网搭建一个测试服务器,开发、测试都是在内网进行的。这样产生脏数据不会影响外网的服务器。外网服务器只有最后发布时才会进行一些必要的测试。

还有就是要对同一份代码生成不同的product,比如一个游戏有100关,要生成一个免费版(只有20关),可以新建一个Target,设置参数就可以实现,如果通过代码来控制就太麻烦了。

怎么办

针对第一个问题,在代码级别,对这个URL的选择,可以使用简单一点的宏来判断。这样所有的请求只要都调用这个宏,就可以做到控制。但是这样写不少限制,那就是很多工程属性不能设置,比如不能改变Bundle ID,不能改启动图片,不能改应用名称等。这样的测试版和正式版不能同时安装到同一部手机上,这样测试起来很麻烦,很多情况下我们需要对比正式版和测试版。

解决办法就是一个项目建立多个target,通过target来控制不同的版本.具体的步骤如下:


1:创建一个全新的项目命名为DZT-1

2:创建头文件以及.pch文件

.pch的文件创建和配置可以参考连接pch配置

到这里基本的配置已经完成,下面就是创建多个target版本了

1:先在DZT-1的target中配置一些信息点击 DZT-1的target ->Build Setting->搜索PreprocessorMacros,然后进行如下图设置,关于PreprocessorMacros 的作用以及用法详解参考以下连接全局宏定义

2:添加target添加方法如下图

3:修改PreprocessorMacros里面的宏定义把DZone改成DZtwo,作用会在define文件中说明,另外还需要把target中的Bundle identifier修改一一下 保证每个target的Bundle identifier都不一样.

4:添加plist文件 1:把info.plist从项目中移除 如图

5:修改plist文件 并且添加到项目中,如图

6:在对应target中选择plist文件如图

7:把Assets.xcassets文件移除并且按照修i改plist文件的步骤修改Assets.xcassets文件如图,并且绑定对应target 

8:修改define文件以及在DZ-1.xcassets和DZ-2.xcassets添加相同名字的图片,关于#endif等预处理命令可以参考Object-C预处理命令

最后附一张运行结果图片

                                                  总结



由于是第一次写简书,水平有限,有不明白的可以留言讨论!

上一篇 下一篇

猜你喜欢

热点阅读