[iOS进阶] - 多环境配置

449 阅读2分钟

前言

谈到多环境,很多公司都有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项目设置:

  1. 在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"

在日常开发中,一般都是TargetSchemeXcconfig 搭配使用来配置多环境的。