CodeXiaoMai/EnvironmentSwitcher

当前正在使用的环境地址发生变化时,获取环境时会发生NPE

CodeXiaoMai opened this issue · 0 comments

开始 Music 环境配置如下,并且已切换当前环境为测试环境:

/**
 * 特殊模块 Music 的环境
 */
@Module(alias = "音乐")
private class Music {
    @Environment(url = "https://www.codexiaomai.top/api/", isRelease = true, alias = "正式")
    private String online;
    @Environment(url = "http://test.codexiaomai.top/api/", alias = "测试")
    private String test;
}

当修改 Music 模块的配置后(修改地址)

/**
 * 特殊模块 Music 的环境
 */
@Module(alias = "音乐")
private class Music {
    @Environment(url = "https://www.1222", isRelease = true, alias = "正式")
    private String online;
    @Environment(url = "http://test.2323", alias = "测试")
    private String test;
}

重新运行项目后,获取当前模块环境时会发生 NPE。

  • bug 原因:
    获取当前模块环境时,只有在 SharedPrefrences 中当前模块的地址和配置中的某个地址匹配时,才会给当前模块环境赋值,如果地址修改了,导致配置中没有地址和 SharedPreferences 中的地址匹配,所以当前模块为 NULL。

  • 解决方案:
    当配置中没有地址和 SharedPreferences 中的地址匹配时,当前模块指定为 DEFAULT(isRelease = true) 环境。