最近项目安全风险整改,目前项目里面使用的组件版本比较低,存在一些安全漏洞,需要升级第三方组件的版本。
先贴一下我的报错,有三个组件的升级会涉及到这一类报错,区别是三个组件报错涉及的包名不一样,分别是
(1)Gson 升级到 2.8.6
(2)OKhttp3 升级到 4.9.0
(3)Rxjava 升级到 3.0.6
百度上大多数的说法都是没有使用 java 8 导致的,于是我加上了这段配置
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
- 这个配置可以解决 Rxjava 升级 3.0.6 带来的报错,但是对另外两个组件并没有起作用。
- 查看 gson 和 okhttp3 的 release note 发现这两个组件分别在 2.8.6 和 4.6.0 中对 java 9 进行了支持,于是我尝试将上述配置改为 java 9 ,但是并没有效果。
- 尝试用空的 demo 去重现问题发现使用高版本的 gradle 就不会出现上述的报错。
基于目前整个 mPaas 项目的架构只支持 gradle 4.4 ,无法通过升级 gradle 版本去解决这个问题,所以只能退而求其次,两个组件的升级不更新到最新版本,也就是 Gson 更新到 2.8.5,OkHttp3 更新到 4.8.1,就不会有上述报错。