Android在APP开发阶段实现动态环境配置切换

数据采集

APP开发


浏览:590 次

作者:WindfallSheng Nuggets:

@[toc]查看

不要啰嗦。首先,上图

apk安装包地址:

项目地址:

解释

参考本项目的2.0版

APP环境配置的动态切换

通常,在项目开发过程中,APP将配置不同的环境,如测试环境、准生产环境、生产环境等。不同的环境对应不同的服务器URL地址,或其他一些功能开关的配置。在正常的配置条件下,我们打印出一个安装包,该安装包也只对应于一个环境的配置。如果需要切换到另一个环境,则需要重新打包、安装和测试。这既不方便又耗时,并且影响了开发进度。因此,我们通常选择在App中添加一个来实现动态环境配置切换功能。在App运行期间,我们可以切换到其他环境进行测试。

本项目中实现的动态环境配置是一种相对常见的处理逻辑。您可以调整配置的json文件以满足项目要求,调整项目中所需的环境条目,并查看所有配置的参数内容。当然,如果在实际项目中使用,必须有额外的要求。基本上,基于现有逻辑的少量修改应该可以满足需求。整体逻辑框架不需要进行大的调整。

工程结构

用户定义的UI组件作为触发条件,如图中的“点I”,简称为配置开关视图,即项目中的EnvConfigShadowLayout类。它有自己的属性,可以控制用户是否可见。可见时,视图是不透明的。当不可见时,视图是透明的,即假隐藏;此外,其触发条件还分为两种:单击弹出配置对话框和快速多次单击触发弹出框。临时设置超过14次,点击间隔不小于300毫秒,否则将重新计算。

EnvConfigShadowLayout类在内部设置自己的事件。当满足触发条件时,弹出框会自动弹出。这个弹出框是使用DialogFragment实现的,因此页面的宿主活动必须是FragmentActivity的子类;

我们将与配置环境相关的类放在一个单独的模块ModuleEnvConfig中。其他处理业务,包括缓存数据,可以在该模块中完成,也可以根据需要调整实现;此外,将此业务模块放在主项目和单独的模块中,将主要影响是否可以获取主项目的BuildConfig中的数据。位置不同,只有与BuildConfig相关的数据采集方法及其相关的处理逻辑会受到影响。其他功能性业务不受影响。

App示例

必要的初始化阶段:初始化一些必要的参数和环境配置参数;

包com.windfallsheng;

导入android.app.Application;

导入com.windfallsheng.envconfig.EnvConfigHelper;

导入com.windfallsheng.envconfig.EnvServerUrlConsts;

导入com.windfallsheng.envconfig.bean.AppInfoBean;

导入com.windfallsheng.envconfig.envconfigexample.BuildConfig;

导入com.windfallsheng.lib.util.LogUtils;

/**

*@作者:lzsheng

*@日期:2021/5/28 16:26

*@描述:

*/

公共类MyApplication扩展App{

私有静态AppmApplication=空;

公共静态AppgetInstance(){

返回mApplication;

}

@覆盖

Create()上的公共void{

super.onCreate();

m应用=此;

LogUtils.initDebug(BuildConfig.BUILD_TYPE,BuildConfig.MODE);

//如果配置模块单独放置在模块中,则无法获取主项目的BuildConfig,

//这里可以使用AppInfoBean作为到配置模块的传输以供使用,因此您必须首先在这里分配值;

//在这种情况下,可以将分配逻辑置于App注册的初始化阶段;

//如果配置模块放置在主项目中,则可以直接在内部调用BuildConfig中的值;

AppInfoBean AppInfoBean=新的AppInfoBeans(BuildConfig.APPLICATION_ID、BuildConfig.BUILD_TYPE、BuildConfig_FLAVOR、BuildConfig_VERSION_CODE、,

生成配置。版本_名称,构建配置。日志_调试,构建配置。调试、构建配置模式);

LogUtils。dl(“MainActivity”,“method:onCreate#appInfoBean=”+appInfoBean);

环境配置助手.getInstance()

.initContext(mApplication)

.setAppInfoBean(appInfoBean);

//初始化环境配置参数;

环境配置帮助程序