起因,想玩一下 jetpack compose,但是用的AndroidStudio版本太低不支持,然后手贱升级了,接着问题就来了。
凡是Activity中的 viewModels<VM>()
方法都报红了,无法正常引用,但是代码是可以正常运行的。
首先看了下 viewModels<VM>()
这个方法,它是kotlin扩展ComponentActivity的方法
ComponentActivity在androidx.activity库下,又继承了androidx.core里的ComponentActivity
image.png
这个时候问题发现了,项目里有两个版本的androidx.core,明显是冲突了,可是运行是正常的,说明最后应该只有一个版本。
image.png
然后导出依赖树看了下,确实全部都指向了项目里引用的最新的那个版本,那么解决这个引用包冲突应该就解决问题了。
image.png
通过在根目录的 build.gradle
上指定一个版本,同步后就会发现只有一个版本的库引用了,Rebuild下后代码也没报红了。
configurations.all {
resolutionStrategy {
resolutionStrategy.eachDependency { details ->
// 根据依赖树最后指定的版本,编译时统一指定,避免冲突
if (details.requested.group == 'androidx.core' && details.requested.module == "core") {
details.useVersion "1.8.0"
}
if (details.requested.group == 'androidx.fragment') {
details.useVersion "1.5.5"
}
}
}
}
image.png
网友评论