升级到Flutter 2.5.1后项目无法构建,geolocator_android编译报错如何解决
问题原因
- 报错出自项目依赖的
geolocator_android2.0.0版本:该版本完成了Android 12(API等级31,系统代号S)的适配,你的项目当前Android编译SDK版本低于31,无法识别高版本SDK才有的常量和方法,触发编译失败:- 找不到
Build.VERSION_CODES.S常量:API 31以下的Android SDK未定义该常量 - 找不到
isMock()方法:该方法是Android 12才新增的Location类成员方法,低版本SDK不存在对应接口
- 找不到
- Flutter升级到2.5.1后,依赖解析规则变化,自动拉取了
geolocator_android的2.0.0版本,和原有Android编译配置不匹配,是问题的触发点。
解决方法
方案1:升级Android编译SDK版本(推荐)
- 打开Flutter项目下的
android/build.gradle文件,找到compileSdkVersion配置项,将数值修改为31或更高 - 若修改后仍有兼容报错,可同步将
targetSdkVersion也调整为31,重新执行构建即可正常运行
方案2:锁定geolocator_android低版本
如果暂时无法升级编译SDK,可通过依赖覆盖强制使用兼容低版本SDK的插件版本:
- 打开项目根目录的
pubspec.yaml文件,添加dependency_overrides配置如下:
dependency_overrides: geolocator_android: 1.0.2
- 保存后执行
flutter pub get重新拉取依赖,再执行构建即可解决报错
内容的提问来源于stack exchange,提问作者Osama Remlawi
相关产品推荐
相关产品推荐

