手把手教你给一个iOS app配置多个环境变量
手把手教你给一个ios app配置多个环境变量。谈到多环境,相信现在大多公司都至少有2-3个app环境了,比如test环境,uat(user acceptance test)用户验收测试环境,release环境等等。当需要开发打多个包的时候,一般常见做法就是直接代码里面修改环境变量,改完之后archive一下就打包了。当然这种做法很正确,只不过不是很优雅很高效。如果搭建好了jenkins(搭建教程),我们利用它来优雅的打包。如果利用jenkins来打包,我们就需要来给app来配置一下多个环境变量了。之后jenkins分别再不同环境下自动集成即可。接下来,我们来谈谈常见的2种做法。
一.利用build configuration来配置多环境
前言里面我们先谈到了需求,由于需要配置多个环境,并且多个环境都需要安装到手机上,那么可以配置build configuration来完成这个任务。如果build configuration还不熟悉的,可以先温习一下官方文档。
1. 新建build configuration
先点击project里面找到configuration,然后选择添加,这里新加一个configuration。默认是2个,一个debug,一个release。这里我们需要选择是复制一个debug还是release。release和debug的区别是,release是不能调试程序,因为默认是屏蔽了可调试的一些参数,具体可以看buildsetting里面的区别,而且release编译时有做编译优化,会比用debug打包出来的体积更小一点。
这里我们选择一个duplicate “debug” configuration,因为我们新的环境需要debug,添加完了之后就会多了一套configuration了,这一套其实是包含了一些编译参数的配置集合。如果此时项目里面有cocopods的话,打开configuration set就会发现是如下的样子:
在我们自己的项目里面用了pod,打开配置是会看到如下信息
注意:刚刚新建完build configuration之后,这时如果有pod,请立即执行一下
pod install
pod安装完成之后会自动生成xcconfig文件,如果你手动新建这个xcconfig,然后把原来的debug和release对应的pod xcconfig文件内容复制进来,这样做是无效的,需要pod自己去生成xcconfig文件才能被识别到。
新建完build configuration,这个时候需要新建pod里面对应的build configuration,要不然一会编译会报错。如果没用pod,可以忽略一下这一段。
如下图新建一个对应之前porject里面新建的build configuration
2. 新建scheme
接下来我们要为新的configuration新建一个编译scheme。
新建完成之后,我们就可以编辑刚刚新建的scheme,这里可以把run模式和archive都改成新建scheme。如下图:
注意:如果是使用了git这些协同工具的同学这里还需要把刚刚新建的scheme共享出去,否则其他人看不到这个scheme。选择“manage schemes”
3. 新建user-defined build settings
再次回到project的build settings里面来,add user-defined setting。
我们这里新加入2个参数,customappbundleld是为了之后打包可以分开打成多个包,这里需要3个不同的id,建议是直接在原来的bundleld加上scheme的名字即可。