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

Android应用授予位置权限后崩溃问题求助(含错误堆栈及Manifest配置)

修复思路:位置权限授权后应用崩溃(NoSuchFieldError)

根据你提供的Logcat报错信息,核心问题是java.lang.NoSuchFieldError:找不到com.google.android.gms.common.api.Api$ApiOptions$NoOptions类里的NO_OPTIONS字段,这个错误发生在初始化FusedLocationProviderClient的时候。下面是针对性的修复方案:

1. 统一Google Play Services依赖版本

这个错误最常见的原因是项目中不同Google Play Services组件的版本不兼容。比如你用了play-services-location:18.0.0,但其他组件(如play-services-ads)用了不同的版本,导致类加载时出现字段缺失。

  • 打开Module级别的build.gradle文件,检查所有以com.google.android.gms:play-services-*开头的依赖,确保它们的版本号完全一致。
  • 推荐用版本变量统一管理,避免手动输入出错:
    // 在Project级别的build.gradle里定义版本变量
    ext {
        googlePlayServicesVersion = "20.0.0" // 选择一个稳定的最新版本,比如当前的20.x系列
    }
    
    // 在Module级别的build.gradle里引用变量
    implementation "com.google.android.gms:play-services-location:$googlePlayServicesVersion"
    implementation "com.google.android.gms:play-services-ads:$googlePlayServicesVersion"
    

2. 修正FusedLocationProviderClient的初始化方式

从报错行RegisterActivity.java:378来看,你应该是手动实例化了FusedLocationProviderClient,而不是用官方推荐的静态方法获取。手动实例化会依赖Google Play Services内部未公开的API,这些API在版本更新时可能被修改。

把初始化代码替换为官方推荐的方式:

// 错误写法:new FusedLocationProviderClient(context)
// 正确写法:
FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);

3. 配置混淆规则(如果开启了代码混淆)

如果你的项目开启了ProGuard/R8混淆,可能是混淆规则把NO_OPTIONS字段误删了。在proguard-rules.pro文件中添加以下规则:

// 保留Google Play Services位置相关类和字段
-keep class com.google.android.gms.location.** { *; }
-keep class com.google.android.gms.common.api.Api$ApiOptions$NoOptions { *; }

// 通用的Google Play Services混淆规则(可选)
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**

4. 清理重建项目

完成上述修改后,执行以下步骤确保依赖生效:

  • 点击Android Studio菜单栏的Build -> Clean Project
  • 再点击Build -> Rebuild Project
  • 必要时可以删除项目根目录的.gradle文件夹和Module下的build文件夹,然后重新同步项目。

5. 检查设备的Google Play Services版本

测试设备上的Google Play Services版本过旧也可能导致兼容性问题。进入设备的设置 -> 应用 -> Google Play Services查看版本,或者通过Google Play商店更新到最新版本。

这些步骤应该能解决你遇到的权限授权后崩溃问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 14:53:13