背景介绍
在开发过程中,我们会在内网搭建一个测试服务器,开发、测试都是在内网进行的。这样产生脏数据不会影响外网的服务器。外网服务器只有最后发布时才会进行一些必要的测试。
还有就是要对同一份代码生成不同的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预处理命令

最后附一张运行结果图片

网友评论