求助:Gradle中com.android.support库27.1.1与26.x版本冲突问题
解决Android Support库版本不一致(27.1.1 vs 26.0.2)的问题
我帮你梳理下解决这个问题的具体步骤,毕竟这种依赖冲突在Android开发里太常见了:
第一步:定位冲突来源
你已经启动了依赖树排查命令,接下来把完整命令跑完:./gradlew app:dependencies,然后在输出结果里搜索26.0.2。你会看到类似这样的结构:
+--- com.some.thirdparty:library:2.0.0 | \--- com.android.support:support-v4:26.0.2
这就说明是com.some.thirdparty:library:2.0.0这个第三方库偷偷引入了旧版本的Support库——不是你直接写的代码,是依赖传递导致的问题。
第二步:两种解决方法任选其一
方法一:强制统一所有Support库版本(最省心)
在你的app级build.gradle文件里,和android、dependencies块同级的位置,添加这段代码:
configurations.all { resolutionStrategy { // 强制所有com.android.support下的库使用27.1.1版本,multidex除外 eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex')) { details.useVersion '27.1.1' } } } }
这段代码会告诉Gradle:不管依赖树里的Support库是什么版本,一律用你指定的27.1.1版本,从根源上解决版本不一致的问题。
方法二:排除第三方库中的冲突依赖(更精准)
如果你不想全局强制版本,也可以针对找到的冲突第三方库,手动排除它带进来的旧版本Support库。比如刚才找到的com.some.thirdparty:library:2.0.0,修改它的依赖声明:
implementation('com.some.thirdparty:library:2.0.0') { // 排除该库引入的旧版本Support库 exclude group: 'com.android.support', module: 'support-v4' // 如果还有其他冲突的Support库,比如appcompat-v7,继续添加exclude exclude group: 'com.android.support', module: 'appcompat-v7' }
这样这个第三方库就会自动使用你项目中指定的27.1.1版本的Support库了。
最后验证
修改完之后,重新执行./gradlew clean build,看看报错是否消失。如果还有问题,再检查下依赖树,确认有没有漏网的旧版本Support库。
内容的提问来源于stack exchange,提问作者Paradox
相关产品推荐
相关产品推荐

