iOS 管理项目多个环境配置和多个 target

前言

在项目研发过程中,都会用到多个环境,一般包括 DEV(开发)、SIT(集成测试)、UAT(用户验收测试)、PPE(预生产)和 PRD(生成)等多个环境。环境不同,对应的服务器URL不同,执行条件不同,以及一些https证书或网络请求证书不同等等问题。有这么多的环境需要管理和配置,怎么样才能更好的管理呢?
有两种方案比较好的可以解决。
1、多个 .xcconfig 文件进行配置。
2、多个 Target 进行设置。
各有优缺点,大家可以根据需求和理解进行更简单,更方便,更有效的使用。

多个 .xcconfig 文件进行配置

每一个项目工程创建默认都是一个 target 并带有 Debug 和 Release 两种配置。在项目中都可以使用预编译, #if DEBUG 来判断当前环境时 Debug 还是 Release 环境。在设备直连 xcode 开发工具调试时, 是 Debug 环境,打包之后是 Release 环境。
多个 .xcconfig 文件是不需要创建多个 target 的。那么就需要在 target 中,创建不同环境的 Debug 和 Release。

创建多个环境的 Debug 和 Release
1、选择项目的 PROJECT -> info -> configurations
创建多个环境的 Debug 和 Release
多个环境的 Debug 和 Release

当然也可以不使用 Debug 和 Release 命名, 可以使用自定义命名

自定义命名 Debug 和 Release
2、设置多个 scheme 对应环境
  • 找到 scheme 入口 ,并选择 manage schemes
image.png
  • 删除默认的 scheme ,并创建新的 scheme, 命名对应环境

删除默认的 scheme

删除默认的 scheme

创建新的 scheme

创建新的 scheme, 命名对应环境
  • 修改 scheme 配置

第一步找到要修改的入口

要修改 scheme 配置入口

第二步修改对应的 debug 和 release

  • 修改 scheme 配置 debug
修改 scheme 配置 debug
  • 修改 scheme 配置 release
修改 scheme 配置 release
3、创建 .xcconfig 文件
  • 创建 .xcconfig 文件
创建 .xcconfig 文件
  • 对应环境命名
对应环境命名

因为在 .xcconfig 文件中, // 表示注释,所以不能直接使用 https://help... 只能识别到 https: 也就是 // 前面的内容
在相应的配置文件中添加您的服务器URL和其他自定义键值。

设置 .xcconfig 内容
4、设置多语言环境的 info.plist 文件

复制 info.plist 文件,创建多环境对应的 info.plist 文件。可以在文件中,复制,改名,添加到项目中

创建多环境对应的 info.plist 文件
5、设置 info.plist 文件对应 .xcconfig 文件内的 key

设置 多个环境的 info.plist 文件对应 .xcconfig 文件内的 key

设置 info.plist 文件对应 .xcconfig 文件内的 key
6、设置不同环境的 info.plist 文件对应关系
设置不同环境的 info.plist 文件对应关系
7、设置不同环境链接不同 xcconfig 文件
设置不同环境链接不同 xcconfig 文件
8、使用用例

先选择 scheme 环境 例如 UAT

使用示例

多个 Target 进行设置

1、创建多个target

修改环境 target 名称

修改环境名称

创建多个环境 target,右键点击 target ,选择 duplicate, 修改名称

创建多个环境 target
对个 target 生成成功

创建多个 target 时,会同时生成对应的 info.plist , 我们可以修改info.plist 文件名称,也可以不修改,因为info.plist 文件的包含在不同的 target 之中。为了方便查找,我们修改一下名称

不同 info.plist 文件设置到相对应的 target 之中

当设置了不同 target 包含文件时,切换 target 就不会打包有另外环境的配置

2、在多个 target 的 build setting 中,设置对应的 info.plist 文件
UAT环境 UAT target
SIT环境 SIT target

其他环境一样设置

3、设置不同环境的常量配置对应环境的 target

创建常用的常量和服务器URL 的配置,根据环境创建多个文件添加到不同的 target 之中,使用 target 进行管理,不会有重名的冲突,而且配置也是隔离的,减少耦合,减少修改配置影响其他的环境问题。并且打包时,只有当前环境的文件。

创建常用的常量和服务器URL 的配置
4、设置 target 对应的 scheme

这次设置 scheme 要选择对应的 target

设置 target 对应的 scheme
5、使用示例

首先选择环境 scheme ,然后使用并进行打印

使用示例

关于 .xcconfig 文件配置和多 Target 配置的优缺点

共同点

  • 都可以解决多环境配置,减少配置的耦合,可以快速的切换环境,避免了切换环境引起的问题

.xcconfig 配置

优点:
  • 只有一个 target,除了xcconfig 相关配置,其他只需要设置一遍 build setting 即可。
  • 配置文件也不需要选择 target
缺点:
  • build setting 是公用的,有可能会影响到其他环境,或容易改动到其他环境。例如开发证书等等。
  • .xcconfig 的配置,编译时不会报错,设置时要注意
  • 打包的时候,所有的文件和环境的配置都会打包进来。如何不想要其他环境的配置,可能需要手动删除或脚本删除。
  • 打包时,需要注意 scheme 的环境。

多 Target 配置

优点:
  • 有多个 target , build setting 是相互独立的,不会相互影响。
  • 打包时,只会打包 target 包含的文件,其他环境的文件和资源不会打包进来。
缺点:
  • build setting 是相互独立的,有些一样的配置,需要每个都设置一遍,容易忘记其他环境进行同步设置。
  • 添加文件需要注意选择 target ,是通用都勾选还是选择某个环境。
  • 打包时,需要注意 scheme 的环境。

总结

总体来说,多个 target 的环境隔离更彻底一下,因为文件包含是指定 target 的,除了公用的文件,其他都是隔离的,基本上可以看作不同的项目,只是代码放在了一起。
如果不想要有环境之间有耦合的配置或耦合的文件,那么建议使用多 target ,这个比较放心,无论修改 target 配置或还是修改文件,只要包含关系没有问题,那就没有问题,完全不用担心被其他环境改动到了。
需要注意一点,不同环境的相同的配置,需要及时的同步,以防遗漏

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容