公司有个好几年的老项目,子模块是一直维护更新的。这个项目我一直没机会碰,昨天开始下载下来弄,发现各种错。现在记录下遇到的几个错:
1、glide库版本冲突,主项目的glide和用到的第三方的glide版本不一致。最重要的是glide库在老版本(我猜测是从4.10.0前)用的是support包,后面都升级用了androidx。刚开始看到项目的库有androidx的jar引用,找了半天没找到那里用了。后面问下大神才知道如何查找各种依赖库关系。有两种方法:
第一种,在项目目录下运行:./gradlew app:dependencies
第二种,如图点击运行:
可以非常方便看到哪个库用到androidx!!
2、当然就是support包版本的冲突
我在主项目app目录的build.gradle文件的android大括号里添加appCompact包强制统一的版本使用,如图:
configurations.all{
resolutionStrategy.eachDependency{ details->
def requested = details.requested
// requested.group == 'com.android.support:recyclerview-v7'
if (requested.group =='com.android.support') {
if (!requested.name.startsWith("multidex")) {
//这里写你想统一的版本是多少,前提是你sdk里有
details.useVersion'28.0.0'
}
}
}
}
以为到了这步就可以运行起来,发现一直报这个错:No resource identifier found for attribute 'appComponentFactory' in package 'android',不关androidx问题,还是support冲突问题。
上网查了资料,始终没头绪,后面想起来之前遇到过类似的问题。解决方法就是app项目的build.gradle的compileSdkVersion、targetSdkVersion、buildToolsVersion这些相关的版本号需要和com.android.support:appcompat-v7:28.0.0的一致,也就是需要把他们改成 28 的版本号。
最后完美运行起来了!