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);

//初始化环境配置参数;
环境配置帮助程序