Android 12(S) 开发出现 LocationRequest 未解析引用问题如何解决?
报错原因
- 你使用的
com.google.android.gms:play-services-location:18.0.0版本未完成Android 12(API 31)的适配。Google官方是从play-services-location 20.0.0版本开始支持API 31编译环境的,旧版本中的LocationRequest类在API 31编译时会出现符号无法解析的问题。 - Android 12对定位相关API做了调整,低版本play-services-location没有兼容这部分变更,导致编译时找不到对应的类引用。
解决方案
方案一:升级play-services-location依赖(推荐)
直接将依赖升级到官方适配API 31的版本即可解决问题,目前稳定版可用版本参考如下:
implementation 'com.google.android.gms:play-services-location:21.0.1'
升级后如果出现少量API调用报错,只需对照官方变更调整调用方式即可,核心的定位逻辑不需要做大幅修改。
方案二:临时兼容方案
如果暂时不方便升级依赖版本,可以先通过配置强制兼容,首先检查LocationRequest的导入路径是否正确:
// Kotlin项目导入路径 import com.google.android.gms.location.LocationRequest
// Java项目导入路径 import com.google.android.gms.location.LocationRequest;
然后在模块级build.gradle的android配置块中添加如下强制解析规则:
configurations.all { resolutionStrategy.force 'com.google.android.gms:play-services-location:18.0.0' }
注意:该方案仅作为临时处理手段,长期来看还是建议升级到适配版本,否则后续上架Google Play或者在Android 12及以上设备运行时,可能会出现权限异常、定位失效等问题。
内容的提问来源于stack exchange,提问作者user924
相关产品推荐
相关产品推荐

