iOS 多环境配置

做项目一般都会有研发环境测试环境生产环境这几种环境类型,常规的修改环境方式,实在代码中修改,但是如果要修改的场景过多,那修改起来就比较麻烦了;

既然做程序嘛,当然是想着怎么简单,怎么来咯;

多环境配置方式

  • target 模式
  • scheme 模式
  • Xcconfig 模式

项目中是以target 模式Configurations结合使用,所以主要就讲讲怎么使用;

使用target 模式结合Configurations的原因:

1、测试包与生产包,bundleId有区分;

2、测试与生产在URL Types的配置上有区分;如果使用scheme的方式,区分不开(也可能是我不会配置吧)

3、项目中使用了App Share Extension,针对不同的环境,share Extension bundleId也有区分;

等等。。。。。。

所以综合项目需求,使用target 模式结合Configurations是比较合适的;

第一步:创建多个Configurations

系统默认存在DebugRelease两个Configurations;

创建多环境,需要新建两个Configurations,作为测试环境的Configurations;

选择项目的PROJECT条目,选中Info,找到Configurations,点击➕添加新的Configuration

iShot2022-04-13_15.34.21.jpg

分别建立DebugRelease模式下的两个Configuration

iShot2022-04-13_15.44.00.jpg

添加 User-Defined Setting

选择项目的PROJECT条目,选中Build Settrings,点击 ➕ 号,添加自定义User-Defined Setting,命名为:CustomAppBundleId

iShot2022-04-13_15.55.16.jpg

CustomAppBundleId里,配置不同环境所需要的BundleId,比如说:

DebugRelease:作为生产版本的Debug、Release模式,那么,就配置生产版的BundleId; DevDebugDevRelease:作为测试版本的Debug、Release模式,那么,就配置测试版的BundleId; iShot2022-04-13_16.01.44.jpg

第二步 创建Target

选择项目TARGETS,选中要copy的target,右键选择DuplicateiShot2022-04-13_16.15.22.jpg

弹出提示,选择Duplicate Only即可;

iShot2022-04-13_16.17.06.jpg

然后会Copy出新的Target,可以双击修改Target的名称;

iShot2022-04-13_16.19.23.jpg

创建新的Target,会同步生成一个.plist文件,如下图:

iShot2022-04-13_16.26.52.jpg 可以给plist文件重新命名;

新建Target会同步生成一个新的Scheme,一般名为:xxxx copy iShot2022-04-13_17.48.51.jpg

‼️关联plist文件(重点)

iShot2022-04-13_16.30.48.jpg 关联之后,随便切换到另一个切页,在回到General切页,就可以看到关联结果;

第三部 修改Target配置信息

修改BundleId

根据不同的Configuration,修改两个Target的BundleId;

生产版(Debug、Relesase两种Configuration都需要修改): iShot2022-04-13_16.54.47.jpg

测试版(DevDebug、DevRelesase两种Configuration都需要修改): iShot2022-04-13_16.56.40.jpg

自定义多环境宏定义

在两个Target中,配置环境宏定义;

Build Settrings中,搜索Preprocessor Macros,根据不同的Configuration,自定义环境区分字段;(注意⚠️:两个Target都需要配置哦!!!)

iShot2022-04-13_17.07.04.jpg

例子:

DebugRelease 这两种Configuration,是生产环境使用的,所以设置自定义宏Res =1;

DevDebugDevRelease 这两种Configuration,是测试环境使用的,所以设置自定义宏Dev =1;

其他配置

其他的配置,比如AppName、AppIcon、URL Types等等的配置,根据不同的业务,在不同的Target上配置即可;

如:

在生产版上,AppIcon如下:

iShot2022-04-13_17.15.39.jpg

而在测试版本上,AppIcon如下:

iShot2022-04-13_17.15.52.jpg

第四步 Edit Scheme(重要)

配置好信息,还需要配置Scheme; iShot2022-04-13_17.21.12.jpg

测试TargetRunArchive的Configuration配置: iShot2022-04-13_17.24.45.jpg

iShot2022-04-13_17.26.09.jpg

生产TargetRunArchive的Configuration配置:

iShot2022-04-13_17.29.20.jpg

iShot2022-04-13_17.29.48.jpg

到此,工程上的配置,基本完毕,接下来开始使用;

第五步 代码中配置多环境

在工程中配置完毕后,在需要多语言环境配置的地方,通过宏定义判断,选择不同的环境

例子:

#ifdef Dev

#define SeviceURL @"baidu.com"

#elif Res

#define SeviceURL @"google.com"

#else

#define SeviceURL @"aliyun.com"

#endif

第六步 pod install(重要‼️、重要‼️、重要‼️)

如果你的项目也使用cocoapods,那么必须要在Podfile文件中,添加新建的Target;

iShot2022-04-13_17.40.54.jpg

接着在终端,cd进入项目路径,执行pod install

运行

运行项目,选择不同的Scheme即可;

iShot2022-04-13_17.46.09.jpg

结语

本文主要是针对自己的项目,提供一些多环境配置的思路,因项目而异,仅供参考哦;

补充:修改Scheme名称

选择Manage Schemes

iShot2022-04-14_10.41.34.jpg

选中需要修改的Scheme后,直接点击键盘enter(回车键),就可以编辑修改

iShot2022-04-14_10.45.48.jpg

猜你喜欢

转载自juejin.im/post/7086025682144198692