前言
谈到多环境,很多公司都有2-3个App环境,比如用户开发的Debug环境、用于发布的Release环境等等。下面就来介绍一下多环境配置的三种常用方案。
一、利用Targets来配置多环境
-
创建一个target
-
创建完成之后会发现多了一个plist文件,这个plist就是对应就是新的target,然后修改对应target和plist文件的名称。
- 创建新target的App Icon,再到Build Setting里边将icon重新设置一下,这样两个target就展现不同的icon了
- 修改Bundle Identifier,然后分别编译两个Targets
- 使用宏定义来区分Target
OC项目设置方法:在两个Target分别添加isDev变量
Swift项目设置:
- 在Build Setting->other swift flags,在Dev后面新增加“-D Dev”
2. 在Build Setting->Active Compilation Conditions下的Debug后面删除原来的Debug
- 然后在项目根据isDev判断编译环境
二、利用Scheme来配置多环境
-
新建一个编译Scheme
-
新建Scheme完成之后,我们就可以在Edit Scheme找到新建的Scheme
-
在Project的Build Settings里面来,Add User-Defined Setting
我们这里新加入2个参数,CustomAppBundleld和CustomProductName
CustomAppBundleld是为了之后打包可以分开打成多个包
CustomProductName就是打包之后展示的名字
修改info.plist文件
因为我们希望Bundle display name和Bundle identity从上面配置的字典中去取。编译过程中,编译器会根据我们设置好的Scheme去获取对应的display name。
- 添加新的 iOS App Icon
新建完AppIcon之后,再在Build Setting里面找到Asset Catalog Compiler里面,然后设置对应环境下的App Icon set Name。
三、利用Xcconfig来配置多环境
-
新建Xcconfig
-
可以根据需求创建多个config文件
-
我们再将config文件配置到对应的环境中
-
在config文件中定义相应的变量
-
然后在info.plist文件里面将该变量公开出去
这样我们就可以获取到不同环境配置的信息
这样我们发现,通过config配置文件进行配置又比scheme方便一点,我们可以将多config配合多个scheme一起使用,这样会更灵活。
Xcconfig拓展
Xcconfig可以配置很多内容,包括buildSetting里面所有涉及到环境的选项
例如Other Linker Flags,我们在config配置上OTHER_LDFLAGS
编译一下,到Build Settings里面看下Other Linker Flags
当然还可使用环境变量来限制生效的场景
// 表示在debug环境+模拟器+x86架构下才链接“AFNetworking”
OTHER_LDFLAGS[config=Debug][sdk=iphonesimulator*][arch=x86_64] = -framework "AFNetworking"
在日常开发中,一般都是Target
、Scheme
、Xcconfig
搭配使用来配置多环境的。