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

已申请定位权限App出现GoogleApiManager SERVICE_INVALID的解决方法

问题根因

控制台抛出的SERVICE_INVALID、requires the Google Play Store, but it is missing报错,核心触发逻辑是:你引入的com.google.android.gms:play-services-location:20.0.0属于Google移动服务(GMS)套件下的定位组件,必须依赖设备端预装的、签名匹配的Google Play商店、Google Play服务基础框架才能运行。你的测试环境(模拟器/实体机)要么缺失GMS核心组件,要么手动安装的组件和系统签名不匹配,导致定位请求被静默阻塞,不会触发应用崩溃,但永远拿不到定位结果。
报错里提到的android.gms.internal.service.zap、android.gms.internal.location.zzaz都是GMS定位库的内部混淆类,类名随库版本迭代变化,没有实际排查价值。

排查与解决方案
  • 测试环境校验
    先打开测试设备的系统应用列表,确认存在「Google Play 商店」「Google Play 服务」两个系统级预装应用。注意国行发售的安卓实体机绝大多数出厂不带合规GMS框架,手动自行刷入/安装的GMS组件普遍存在签名不匹配、系统权限不足问题,无法支撑GMS定位接口正常运行,这类设备不要用GMS定位方案测试。
  • 模拟器环境修复
    删除现有故障模拟器,新建模拟器时必须选择带Google Play角标的系统镜像(不要选仅标注Google APIs的旧镜像,也不要选纯AOSP无服务镜像),这类镜像会预安装签名完全匹配的全套GMS组件。模拟器启动后先打开Google Play商店等待内置服务自动更新完成,再运行应用测试。手动重装模拟器内的Google Play服务无效,因为第三方安装包和系统镜像签名不一致,只会持续触发SERVICE_INVALID错误。
  • 无GMS环境兼容实现(课程项目优先选这个方案)
    直接弃用对GMS有强依赖的定位接口,改用Android系统原生LocationManager实现定位逻辑,不需要依赖任何Google服务,可适配所有安卓设备,完全满足你通过开关展示当前位置的核心需求。核心实现代码参考:
    // 1. 获取系统定位服务实例
    val locationManager = getSystemService(Context.LOCATION_SERVICE) as LocationManager
    // 2. 提前校验定位权限、GPS开关状态
    val hasLocationPermission = ContextCompat.checkSelfPermission(
        this,
        Manifest.permission.ACCESS_FINE_LOCATION
    ) == PackageManager.PERMISSION_GRANTED
    val isGpsOn = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)
    
    if (hasLocationPermission && isGpsOn) {
        // 3. 注册位置更新监听:最小更新间隔1s,最小位移1m
        locationManager.requestLocationUpdates(
            LocationManager.GPS_PROVIDER,
            1000L,
            1f
        ) { updatedLocation ->
            // 拿到经纬度后切主线程更新UI
            val latitude = updatedLocation.latitude
            val longitude = updatedLocation.longitude
            runOnUiThread {
                // 替换为你的UI赋值逻辑,比如给经纬度文本控件设值
            }
        }
    }
    
  • 版本适配注意
    Android 12及以上版本不要遗漏ACCESS_COARSE_LOCATION权限申请,Android 10及以上如果需要应用在后台时也获取定位,要额外申请ACCESS_BACKGROUND_LOCATION权限。不要照搬发布时间超过2年的旧教程内容,Android定位相关API迭代快,旧教程里大量GMS专属的过时方法在新系统上会直接失效。

内容的提问来源于stack exchange,提问作者Divroth

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 12:36:20