谷歌地图依赖库使用旧版Support库引发Gradle版本冲突问题
嘿,我完全懂你把build.gradle里的compile换成implementation后碰到的麻烦——毕竟implementation会严格要求依赖版本一致,而com.google.android.gms:play-services-maps:12.0.1偏偏带进来了旧版的Support库(26.1.0),这确实是切换依赖关键字后很容易踩的坑。你用./gradlew dependencies -b app/build.gradle诊断问题的做法特别靠谱,这能帮我们精准定位冲突的来源。
下面给你几个可行的解决办法,按推荐程度排序:
优先升级Google Maps依赖版本
12.0.1版本实在太老了,Google早就更新了Play Services Maps的稳定版本,比如可以直接升级到17.0.1(也可以去官方渠道查最新的稳定版)。新版本的库会适配更新的Support库(甚至是AndroidX,如果你的项目已经迁移的话),从根源上解决旧依赖带来的冲突。修改你的依赖声明:implementation 'com.google.android.gms:play-services-maps:17.0.1'强制统一Support库版本
如果暂时没法升级Maps依赖,那可以在app/build.gradle里添加版本强制策略,让Gradle忽略传递依赖中的旧版本,统一使用你项目里正在用的Support库版本(比如假设你用的是28.0.0,根据自己项目的实际情况调整):configurations.all { resolutionStrategy { // 列出你项目中用到的所有Support库模块,确保版本统一 force 'com.android.support:appcompat-v7:28.0.0' force 'com.android.support:support-v4:28.0.0' force 'com.android.support:design:28.0.0' } }验证冲突是否解决
不管用哪种方法,都要再跑一遍./gradlew dependencies -b app/build.gradle命令,看看传递依赖里的Support库版本是不是已经统一了;或者直接同步项目,试试编译能不能正常通过。
额外提醒:如果你的项目还没迁移到AndroidX,建议尽早安排迁移——Google已经停止维护旧的Support库了,AndroidX不仅能避免很多版本冲突,还能获得后续的功能更新。
内容的提问来源于stack exchange,提问作者user1940676

