afkT / DevUtils

:fire: ( 持续更新,目前含 300+ 工具类 ) DevUtils 是一个 Android 工具库,主要根据不同功能模块,封装快捷使用的工具类及 API 方法调用。该项目尽可能的便于开发人员,快捷、高效开发安全可靠的项目。
Apache License 2.0
1.34k stars 302 forks source link

DevEnvironment 的DevEnvironmentActivity 界面显示错误 #17

Closed chenyang1900 closed 3 years ago

chenyang1900 commented 3 years ago

复现步骤: 修改 多个alias 如 : @Module(alias = "IM 模块") private class IM {

    @Environment(value = "https://im.release.com/", isRelease = true, alias = "线上@环境")
    private String release;

    @Environment(value = "https://im.debug.com", alias = "测试@环境")
    private String debug;
}

界面按照代码显示应该两个选项 ,会出现重复图中第三不应该出现 ;必须卸载app再次安装才能现在正常 image

afkT commented 3 years ago

其实这个并不算 bug,反而是一个专门加的功能。

支持通过后台数据动态设置配置信息

出现这个过程是这样的:

// 原始注解数据

@Module(alias = "IM 模块")
private class IM {

    @Environment(value = "https://im.release.com/", isRelease = true, alias = "线上环境")
    private String release;

    @Environment(value = "https://im.debug.com", alias = "测试环境")
    private String debug;
}

当你选中某个环境时会存储一个 MODULE_NAME => MODULE_IM 文件 ( 无后缀,JSON 格式 )

接着你修改数据再进行编译时

// 修改注解数据

@module(alias = "IM 模块")
private class IM {

    @Environment(value = "https://im.release.com/", isRelease = true, alias = "线上@环境")
    private String release;

    @Environment(value = "https://im.debug.com", alias = "测试@环境")
    private String debug;
}

这个时候进入 DevEnvironmentActivity 操作页面,优先判断是否存在 MODULE_IM 文件,存在则解析并且选中该环境

接着把新编译的 线上@环境测试@环境 也添加进去展示,则会出现三个环境情况

支持通过后台数据动态设置配置信息 这个功能就是这样实现的,通过后台返回数据可动态设置服务器地址

DevEnvironment.setIMEnvironment(context, EnvironmentBean) 进行设置自定义配置

当你选中其他环境时,这个 MODULE_IM 自然也变成新的配置信息,再次进入时就会出现只有 线上@环境测试@环境

不过目前只有一个 DevEnvironment.reset(context) 重置全部 Module 环境的 ( 既把全部 MODULE_NAME 文件全部删除,恢复默认)

我新加两个方法吧

这样就能够自行决定是否需要重置某个模块