iOS App配置多个环境变量
一般项目都会分为测试环境和发布环境,常用的做法就是通过代码来直接修改;这里要说的是通过配置
Configurations
来控制环境变量
在Configurations
中添加配置
点击➕号里面有两个选项,根据需求自由选择
Debug configuration
Release configuration

如果项目中用到了
cocoapds
需要pod install
一下
新建Scheme
- 点击
new Scheme
,新建一个Scheme


- 点击
target
选中刚才新建的scheme
->Edit Scheme
选择运行环境,这里可以把Run
模式和Archive
都改成新建Scheme
,如下图:

新建User-defined Build Settings
回到Project
的Build Settings
里面来,点击顶部的➕号按钮选择Add User-Defined Setting


这里新加了2
个参数,CustomAppBundleld
是为了设置多个build identifier
这样我们就可以打多个包,这里设置了3
个不同的build identifier
;
CustomProductName
是为了app
安装到手机上显示不同的名字和icon
。
修改info.plist
文件 和 Images.xcassets
- 修改
info.plist
文件
由于我们需要根据不同的配置环境来显示不同的APP
名称,所以我们需要把info.plist
里面的Bundle display name
、Bundle identifier
修改成我们自定义的这个字典;编译过程中编译器会根据我们设置好的Scheme
去自己选择对应的ProductName
和Bundle identifier

- 设置
Images.xcassets
为了根据不同的配置环境来显示不同的app icon
我们需要在Images.xcassets
里面新添加2
个New iOS App Icon

新建完AppIcon
之后,再在Build Setting
里面找到Asset Catalog Compiler
里面,然后把这几种模式下的App Icon set Name
分别设置上对应的图标,如下图:

配置和获取环境变量
- 使用
GCC
预编译头参数GCC_PREPROCESSOR_DEFINITIONS
进入到Build Settings
搜索preprocessor macros
找到Preprocessor Macros
,我们可以在这里加一些环境变量的宏定义来标识,Preprocessor Macros
可以根据不同的环境预先制定不同定义的宏。

之后我们可以根据我们设置的宏来进行一些逻辑的处理,譬如最简单的发布环境的url
和测试环境的url
最后附上效果图
