在iOS开发期间,在多个环境中优雅地管理差异化设置


浏览:232 次

问题陈述

在开发过程中,我们经常需要满足一个需求,即我们需要在不同的开发环境之间切换以满足不同的发布需求

例如:

用于开发或内部测试构建-在iOS应用商店外发布开发版本

主机-devapi.project-name.com

API密钥-开发_密钥

客户端测试构建-在iOS应用商店外发布企业版

主持人-stgapi.project-name.com

API密钥-企业_密钥

为生产而构建-在App Store中分发

主机-api.project-name.com

API密钥-app_ store_密钥

最简单的方法是,我们可以使用DEBUG来管理两个设置

#如果调试

#定义API_ BASE_ URL@“https://devapi.project-name.com/api/v1 "

#定义API_KEY@“development_KEY”

#其他

#定义API_ BASE_ URL@“https://stgapi.project-name.com/api/v1 "

#定义API_KEY@“enterprise_KEY”

#结束

所以我们会遇到这样的问题

每次在企业发布(客户端测试)和iOS应用商店发布(生产)之间切换时,都需要修改代码。

用于企业分发

#如果调试

//调试设置

#其他

//企业设置

#定义API_ BASE_ URL@“https://stgapi.project-name.com/api/v1 "

#定义API_KEY@“enterprise_KEY”

#结束

用于App Store分发

#如果调试

//调试设置

#其他

//应用商店设置

#定义API_ BASE_ URL@“https://api.project-name.com/api/v1 "

#定义API_KEY@“app_store_KEY”

#结束

我们可以实施以下方法吗

#ifdef开发

#定义API_ BASE_ URL@“https://devapi.project-name.com/api/v1 "

#定义API_KEY@“development_KEY”

#elif企业

#定义API_ BASE_ URL@“https://stgapi.project-name.com/api/v1 "

#定义API_KEY@“enterprise_KEY”

#elifapp_存储

#定义API_ BASE_ URL@“https://api.project-name.com/api/v1 "

#定义API_KEY@“app_store_KEY”

#结束

所以我们需要解决这个问题

如何在不创建不同目标的情况下创建具有不同名称的三个构建?

ProductName-适用于App Store

ProductName Dev-用户内部开发和构建

ProductName Stg-用户客户端测试(企业版)生成

解决方案

创建个人配置

在项目设置(非目标)中,创建以下配置:

调试_开发

调试_暂存

调试_产品

发布_开发

发布_暂存

发布_产品

创建_配置

请注意,如果使用Cocoapods,您需要将配置设置回none,删除项目中Pods文件夹的内容,然后再次运行pod安装。

接下来,为每个环境创建一个场景

创建以下内容(复制原始内容)以替换MyApp解决方案:

创建_方案

MyApp_开发(开发)

MyApp_ Stg(暂存)

MyApp(生产)

在每个场景中,在适当的情况下使用关联的Debug_*和Release_*进行配置。

协会_环境

最后看起来像这样

创建_方案

然后,让我们添加预处理器宏来标识环境

添加额外的预处理器宏以确定要构建的环境。

在项目构造设置中,单击+号添加一个名称,如“环境”的“MYAPP_用户定义”设置。然后,在每个不同的环境组中添加不同的预处理宏,例如DEVELOPMENT=1、STATION=1和PRODUCTION=1

然后,使用$(MYAPP_ENVIRONMENT)将这个新的MYAPP添加到预处理器宏中(在项目级别,而不是目标目标级别)_环境设置。

最后看起来像下图

这样,开发环境的切换可以确定如下:

#ifdef开发

NSString*常量MyAppAPIBaseURL=@“https://api-dev.myapp.com/ ";

#elif阶段

NSString*常量MyAppAPIBaseURL=@“https://api-staging.myapp.com/ ";

#elif生产

NSString*常量MyAppAPIBaseURL=@“https://api.myapp.com/ ";

#结束

您还可以创建不同的用户定义生成设置来执行不同的操作,例如更改app的显示名称。

您可以创建一个名为MYAPP_DISPLAY_的文件。新的NAME设置(与用于标识环境的预处理器宏的创建相同),为每个配置设置正确的名称,然后单击info。

我希望这篇文章对你有帮助。如果你有什么问题,欢迎在评论区留言

完成项目-

相关资讯:
APP项目开发流程

APP项目开发流程

查看
软件外包开发过程

软件外包开发过程

查看
软件外包项目开发过程

软件外包项目开发过程

查看
如何找到一家满意的软件项目外包公司

如何找到一家满意的软件项目外包公司

查看
寻找优质APP外包公司

寻找优质APP外包公司

查看