Google Play Services版本自动变为11.8的原因咨询(Android Studio 3)
为什么指定的GMS 10.2.1版本被自动替换成11.8了?
嗨,这个问题我之前也碰到过,大概率是Gradle的依赖解析机制在搞鬼,给你拆解下原因和对应的解决办法:
可能的原因
- 依赖传递冲突:Gradle在处理依赖时,会自动解决版本冲突,默认策略是选择依赖树里的最高版本。如果你的项目里其他依赖(比如其他Google Play服务组件、第三方库)引用了GMS 11.8版本,那么即使你指定了maps的10.2.1,Gradle也会自动升级到11.8来避免版本不一致的问题。
- 全局版本配置覆盖:如果你的项目根目录
build.gradle里定义了全局的GMS版本变量(比如在ext块里写了googlePlayServicesVersion = "11.8.0"),并且所有GMS依赖都引用这个变量,那你单独给maps写的10.2.1会被全局配置覆盖。 - 意外的依赖升级:有时候Android Studio的依赖升级提示可能被误点,或者配置文件被意外修改,导致版本号悄悄变成了11.8。
解决办法
- 查看完整依赖树:执行命令
./gradlew app:dependencies(Windows系统用gradlew.bat app:dependencies),在输出里搜索com.google.android.gms:play-services-maps,就能找到是哪个依赖引入了11.8版本,针对性处理。 - 强制指定版本:在app模块的
build.gradle里添加版本强制策略,让Gradle忽略传递依赖的版本,强制使用你指定的10.2.1:
configurations.all { resolutionStrategy { force 'com.google.android.gms:play-services-maps:10.2.1' // 如果还有其他需要固定版本的GMS组件,也可以在这里添加 } }
- 检查全局配置:打开根目录的
build.gradle,看看有没有类似下面的全局版本定义,把它改成10.2.1,或者在maps的依赖里直接写死版本号而不是引用变量:
ext { googlePlayServicesVersion = "10.2.1" }
内容的提问来源于stack exchange,提问作者Behnam Maboudi
相关产品推荐
相关产品推荐

