You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决升级play-services-location依赖后出现的版本不匹配报错问题

报错信息:com.google.android.gms.tasks.RuntimeExecutionException: com.google.android.gms.common.api.ApiException: 17: API: LocationServices.API is not available on this device. Connection failed with: ConnectionResult{statusCode=SERVICE_INVALID, resolution=null, message=null}

疑问解答:为什么依赖升级到18版本仍出现数字17?

报错中的17是Google Play服务框架定义的标准错误状态码,并非依赖库的版本号,对应枚举值SERVICE_INVALID,代表当前设备上安装的Google移动服务(GMS)版本与应用依赖的play-services-location版本不兼容,无法提供定位接口能力,和你升级的18.0.0依赖版本本身无关联。

修复方案
  • 统一所有GMS相关依赖版本
    检查app模块build.gradle中所有com.google.android.gms:前缀的依赖,确保版本号完全一致,避免跨版本冲突。如果存在第三方库间接引入不同版本GMS组件的情况,添加强制版本配置:
    configurations.all {
        resolutionStrategy.force 'com.google.android.gms:play-services-location:18.0.0'
        // 其余GMS相关依赖如果有版本冲突也可在此处添加强制规则
    }
    
  • 降级定位依赖适配旧设备
    play-services-location:18.0.0要求设备端GMS版本不低于21.0.0,大量未更新GMS的旧设备会触发该错误。如果需要覆盖旧设备群体,可将该依赖降级到17.1.0及以下的稳定兼容版本。
  • 前置GMS可用性检测
    在调用定位相关接口前,先检测设备GMS状态,避免直接调用引发崩溃:
    int gmsStatus = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
    if (gmsStatus != ConnectionResult.SUCCESS) {
        // 自定义降级逻辑,例如提示用户更新GMS、切换到系统定位接口等
    }
    
  • 清理本地构建缓存
    手动删除项目根目录下的.gradle文件夹、app模块下的build文件夹,再执行Rebuild操作,排除旧缓存导致的依赖引用异常。
  • 模拟器场景修复
    如果是测试模拟器触发该错误,更换带Google APIs的系统镜像创建模拟器,或打开模拟器内置的Play Store更新Google Play服务到最新版本即可。

内容的提问来源于stack exchange,提问作者Claudio Bogado Pompa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 03:06:00