做项目一般都会有研发环境
、测试环境
、生产环境
这几种环境类型,常规的修改环境方式,实在代码中修改,但是如果要修改的场景过多,那修改起来就比较麻烦了;
既然做程序嘛,当然是想着怎么简单,怎么来咯;
多环境配置方式
- target 模式
- scheme 模式
- Xcconfig 模式
项目中是以target 模式
、Configurations
结合使用,所以主要就讲讲怎么使用;
使用target 模式
结合Configurations
的原因:
1、测试包与生产包,bundleId有区分;
2、测试与生产在URL Types的配置上有区分;如果使用scheme的方式,区分不开(也可能是我不会配置吧)
3、项目中使用了App Share Extension,针对不同的环境,share Extension bundleId也有区分;
等等。。。。。。
所以综合项目需求,使用target 模式
结合Configurations
是比较合适的;
第一步:创建多个Configurations
系统默认存在Debug
、Release
两个Configurations;
创建多环境,需要新建两个Configurations,作为测试环境
的Configurations;
选择项目的PROJECT
条目,选中Info
,找到Configurations
,点击➕添加新的Configuration
分别建立Debug
、Release
模式下的两个Configuration
;
添加 User-Defined Setting
选择项目的PROJECT
条目,选中Build Settrings
,点击 ➕ 号,添加自定义User-Defined Setting,命名为:CustomAppBundleId
在CustomAppBundleId
里,配置不同环境所需要的BundleId,比如说:
Debug
、Release
:作为生产版本的Debug、Release模式,那么,就配置生产版的BundleId; DevDebug
、DevRelease
:作为测试版本的Debug、Release模式,那么,就配置测试版的BundleId;
第二步 创建Target
选择项目TARGETS
,选中要copy的target,右键选择Duplicate
;
弹出提示,选择Duplicate Only
即可;
然后会Copy出新的Target,可以双击修改Target的名称;
创建新的Target,会同步生成一个.plist文件,如下图:
可以给plist文件重新命名;
新建Target会同步生成一个新的Scheme,一般名为:xxxx copy
‼️关联plist文件(重点)
关联之后,随便切换到另一个切页,在回到General
切页,就可以看到关联结果;
第三部 修改Target配置信息
修改BundleId
根据不同的Configuration,修改两个Target
的BundleId;
生产版(Debug、Relesase两种Configuration都需要修改):
测试版(DevDebug、DevRelesase两种Configuration都需要修改):
自定义多环境宏定义
在两个Target
中,配置环境宏定义;
在Build Settrings
中,搜索Preprocessor Macros
,根据不同的Configuration
,自定义环境区分字段;(注意⚠️:两个Target都需要配置哦!!!)
例子:
在
Debug
、Release
这两种Configuration,是生产环境使用的,所以设置自定义宏Res =1;在
DevDebug
、DevRelease
这两种Configuration,是测试环境使用的,所以设置自定义宏Dev =1;
其他配置
其他的配置,比如AppName、AppIcon、URL Types等等的配置,根据不同的业务,在不同的Target上配置即可;
如:
在生产版上,AppIcon如下:
而在测试版本上,AppIcon如下:
第四步 Edit Scheme(重要)
配置好信息,还需要配置Scheme;
测试TargetRun
、Archive
的Configuration配置:
生产TargetRun
、Archive
的Configuration配置:
到此,工程上的配置,基本完毕,接下来开始使用;
第五步 代码中配置多环境
在工程中配置完毕后,在需要多语言环境配置的地方,通过宏定义判断,选择不同的环境
例子:
#ifdef Dev
#define SeviceURL @"baidu.com"
#elif Res
#define SeviceURL @"google.com"
#else
#define SeviceURL @"aliyun.com"
#endif
第六步 pod install(重要‼️、重要‼️、重要‼️)
如果你的项目也使用cocoapods,那么必须要在Podfile文件中,添加新建的Target;
接着在终端,cd进入项目路径,执行pod install
;
运行
运行项目,选择不同的Scheme即可;
结语
本文主要是针对自己的项目,提供一些多环境配置的思路,因项目而异,仅供参考哦;
补充:修改Scheme名称
选择Manage Schemes
选中需要修改的Scheme
后,直接点击键盘enter(回车键)
,就可以编辑修改