在开发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 Identifier
、Version
、Team
等,以及资源文件等。
方式二
方式二就简单许多,直接复制工程所需的文件,之后我们可以看到工程的根目录下面,会多出一个文件夹,里面的文件内容和工程是一样的,所以是一个独立的工程空间,包括:源文件、配置文件、资源文件等等。我们在新工程里面的修改不会影响到旧工程。
根据上面的两种方案可以看出,第一种仅仅是创建了一个工程的配置文件,来实现多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
配置的介绍,如有不足之处,欢迎指出,共同进步。
参考资料