参考文章 手把手教你iOS 一个app配置多环境变量

有时为了开发需求,项目中经常要用到多种环境配置,比如开发环境,测试环境,预发环境,以及正式环境等,对于这个问题,一开始想到的是在pch中用一个变量去控制,每次打包都去修改这个变量的值,从来来达到实现不同环境的配置,但这种方式明显太Low,xcode可以在同一个app中设置不同的环境变量(系统默认的是DEBUG和release两种模式),文末会附上demo的github地址

#if DEBUG

#else

#endif
复制代码

这种写法想必大家都不陌生,那么我们如果想增加别的变量,实现类似这种去控制运行环境,该如何实现呢?下面我先描述下如何新增类似DEBUG这种配置变量。

一、第一步

如下几个图



到project-> info中增加你想要定制的环境变量配置



  • 注意,如果有cocoapods,这里增添后要进行一次pod install,pods会自动去配置相关的环境

二、第二步



到project-build settings中搜索preprocessor macros,修改里面的配置如下:



这里要加上${inherited},否则在进行Pod install或者编译的时候会有警告,最终的样式如下:



那么进行到这里,就可以再项目中 用了

三、第三步



到edit schemes -> run中,可以看到build configurations多了两个,这里就可以切换不同的环境



到现在为止,就可以根据不同的环境设置不同的值:





以上几个图已经表明一切

那么,如果想要实现不同环境下不同的app名称或者一个手机上可以安装多个版本的app,那又该如何设置呢?下面主要讲述这一点:

第四步



project->build settings店家加号,add user-defnied setting



比如增加了一个ProductDisplayName,下面四个可以设置对应的名称



之后再info.plist中修改默认的名称为$(ProductDisplayName)即可

此外,为了方便还可以新增schemes



点击这个,可以新增对应的schemes



检查下schemes配置,通过manage shcemes入口进入:



右侧只要都选中就好

下面看下target-general



这里的app名称已经设置为自己定义的了


之后在各自的scheme中的run-build configurations中设置对应的运行环境





对于一个手机上安装多个不同环境的app也是如此,只需要在add user-defined setting中增加一组配置去设置bundle id,并且把info.plist中的Bundle Identifier替换为自己设置的即可,替换方式和name替换方式一样

  • 如果有cocoapods,一定要注意pod install,否则会报错

demo地址