在开发iOS应用程序的过程中,经常需要根据不同的需求,切换到不同的项目配置,或者打不同的包(测试环境、开发环境、生产环境等等),如果每次都是手动配置,一则比较麻烦,二则容易配置错,那么有没有更好的方案来解决这个问题呢?答案是:有的。我们可以根据不同的需求,创建不同的target,在不同需求要切换配置或打包时,直接选择对应的target完成工作,从而提高我们的开发效率。

创建多个target有两种方式,一种是创建多个info.plist的配置文件,另一种是拷贝整个工程所需的文件,如:源文件、资源文件、配置文件等等。下面介绍这两种方式的创建过程:

方式一

复制target

首先复制target,然后在弹出的框中,选择Duplicate Only,即可复制一个target

修改名字

1.修改target的名字

双击复制出来的target即可修改名字

2.修改plist名字

把复制出来的*** copy-Info.plist文件改成其它名字,然后在General的配置里面,重新选择target的配置文件

3.修改scheme的名字

选择Manage Schemes...,然后在目标scheme上门双击(具体是:单击一下,等3s再单击,如果快速双击,是无法进行名字的修改的),之后修改名字

经过上面的修改,一个新的target就创建完成,之后我们可以修改Bundle IdentifierVersionTeam等,以及资源文件等。

方式二

方式二就简单许多,直接复制工程所需的文件,之后我们可以看到工程的根目录下面,会多出一个文件夹,里面的文件内容和工程是一样的,所以是一个独立的工程空间,包括:源文件、配置文件、资源文件等等。我们在新工程里面的修改不会影响到旧工程。


根据上面的两种方案可以看出,第一种仅仅是创建了一个工程的配置文件,来实现多target的功能;而第二种是完全创建了一个新的工程目录,拷贝了之前的所有文件,之后的修改也不会影响到旧工程了,类似工程的备份功能。

预编译

在同一target下,我们也会需要不同的配置,如果都在代码里面进行判断,每次都要手动修改,也是比较麻烦的问题。针对这个问题,我们可以用预编译宏来解决。通常,target里会有一个Debug模式下的默认的宏:Debug=1,我们可以继续添加,或者直接使用这个宏来进行不同的配置。

实例代码如下:

#ifdef DEBUG
    #define BASE_URL    @"https://www.baidu.com"
#else
    #define BASE_URL    @"https://www.chaoaicai.com"
#endif

通过以上配置,那么以后我们在切换开发和生产模式时,就不同再手动修改base_url了,是不是感觉爽的飞起。


以上就是针对多target配置的介绍,如有不足之处,欢迎指出,共同进步。

参考资料

iOS开发多个Target的使用

多个Target的使用

如何在iOS项目中创建多个target?