解决Gradle中com.android.support库版本不一致的顽固报错
解决Android Support库版本冲突报错
这个问题我之前帮很多开发者解决过,别着急,咱们一步步来排查和修复!
首先,找到冲突的根源
你遇到的报错“All com.android.support libraries must use the exact same version specification”,本质是某个第三方依赖悄悄引入了和你指定版本不一致的Android Support库。要找出这个“捣蛋鬼”,最简单的方法是用Gradle的依赖分析命令:
执行依赖分析命令
- 在Mac/Linux终端运行:
./gradlew app:dependencies - 在Windows命令行运行:
gradlew.bat app:dependencies
(把app换成你的module名字,如果只有一个module就不用改)
运行后,在输出里搜索com.android.support,你会看到所有依赖树里的support库版本,找到那个版本不是25.3.1的条目,它的上层依赖就是引发冲突的源头。
针对你的依赖配置,我先帮你排查几个可疑点
看你的依赖列表,有两个地方很容易触发版本冲突:
com.readystatesoftware.sqliteasset:sqliteassethelper:+:用+会自动拉取该库的最新版本,而它内部可能依赖了更高版本的support库com.github.siyamed:android-shape-imageview:0.9.+@aar:同样用了+,存在自动升级引入冲突的风险
直接可行的修复方案
方案1:替换动态版本为固定版本
把带+的依赖改成固定版本,避免自动升级带来的冲突。修改后的依赖配置如下:
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support:support-v4:25.3.1' compile 'com.android.support:recyclerview-v7:25.3.1' compile 'com.android.support:design:25.3.1' compile 'com.mcxiaoke.volley:library:1.0.19' compile 'com.readystatesoftware.sqliteasset:sqliteassethelper:2.0.1' // 固定版本 compile 'com.android.support.constraint:constraint-layout:1.0.2' compile 'com.toptoche.searchablespinner:searchablespinnerlibrary:1.3.1' compile 'com.googlecode.plist:dd-plist:1.16' compile 'com.github.siyamed:android-shape-imageview:0.9.3@aar' // 固定版本 compile 'org.jsoup:jsoup:1.8.3' compile 'com.google.android.gms:play-services-location:11.0.4' }
方案2:强制所有support库使用统一版本(如果方案1无效)
如果替换固定版本后还是报错,可以在你的module的build.gradle里添加强制版本的配置,让Gradle忽略冲突,统一使用你指定的版本:
configurations.all { resolutionStrategy { force 'com.android.support:appcompat-v7:25.3.1' force 'com.android.support:support-v4:25.3.1' force 'com.android.support:recyclerview-v7:25.3.1' force 'com.android.support:design:25.3.1' } }
把这段代码放在android块外面,dependencies块的上方或下方都可以。
额外提醒
- 尽量避免用
+指定依赖版本,这会导致构建不稳定,也容易引入版本冲突 - Google Play Services的版本和Support库版本有对应关系,比如你用的
play-services-location:11.0.4对应的Support库最低版本是25.3.1,你的配置是匹配的,后续如果升级Play Services,记得同步升级Support库版本
内容的提问来源于stack exchange,提问作者Zee
相关产品推荐
相关产品推荐

