问题描述
在项目中依赖了 A 库的 X 版本后,后面改了库的版本,但项目依赖的还是老的版本,并没有切换到新的库上面来,导致无法依赖新的库版本。
比如:项目中最开始依赖了 Zxing 的 3.4.1 版本,而 3.4.1 版本无法支持 API < 24 的系统而导致应用崩溃。为了解决此问题,将依赖的版本改成了 3.3.3,并进行了各种清缓存的操作后,发现 gradle 依赖的还是 3.4.1。
解决方法
1. 使用 gradlew :app:dependencies
来查看一下该依赖没有生效的原因,是否是由于其它库也依赖了该库,而导致的。
从上图中发现,原来 Zxing 被其它库也依赖了,而且版本比我自己所设置的还要高,所以,我自己依赖的版本被覆盖了。
有两种方法可以解决这种问题:
- 直接将所依赖的库中的版本改成低版本。
- 在配置库依赖时,将想要使用的目标版本配置为强制使用,也就是当发生冲突时,优先使用该库。
api(deps.zxing) {
force = true
}
or
impementation('com.google.zxing:core:3.3.3') {
force = true
}
2. 第二种情况是 Gradle 没有刷新,此时要找到当前库所依赖的缓存文件将其删除
- 先找到缓存文件,并删除
- 清除 Android Studio 缓存。