android老项目运行的辛酸泪:No resource identifier found for attribute 'appComponentFactory' in package 'and...

公司有个好几年的老项目,子模块是一直维护更新的。这个项目我一直没机会碰,昨天开始下载下来弄,发现各种错。现在记录下遇到的几个错:

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 的版本号。

最后完美运行起来了!