Flutter构建失败geolocator_android包编译错误如何解决?
问题原因分析
本次构建失败核心是geolocator_android依赖包版本与项目Android编译配置不匹配:
你使用的geolocator_android 2.0.0版本新增了Android 12(API级别31,代号S)的适配逻辑,调用了只有Android 12 SDK才支持的VERSION_CODES.S常量和Location.isMock()方法,但你当前项目的Android编译SDK版本(compileSdkVersion)低于31,编译器无法识别这两个符号,直接抛出编译错误。
虽然你本地已经安装了Android SDK 31,但项目配置中没有指定使用该版本SDK进行编译,因此触发报错。
可行解决方案
提供两种可落地的方案,按需选择即可:
方案一:升级项目Android编译SDK版本(推荐)
这是适配最新依赖包的最优方案,不会损失依赖包的新特性:
- 打开项目路径下的
android/app/build.gradle文件 - 找到
android配置块内的compileSdkVersion配置项,将数值修改为31,如无该配置项直接新增即可 - 可选操作:同步将同配置块内的
targetSdkVersion也修改为31,避免后续运行时出现适配问题 - 保存配置后重新执行构建任务即可
方案二:锁定geolocator_android低版本
如果暂时不想升级编译SDK,可以通过强制依赖旧版本的方式规避适配问题:
- 打开项目根目录的
pubspec.yaml文件 - 新增
dependency_overrides配置块(如已有则直接在块内添加内容),指定geolocator_android的低版本:
dependency_overrides: geolocator_android: ^1.0.0
- 执行
flutter pub get命令重新拉取依赖 - 重新执行构建任务即可
通用排查操作
如果执行上述操作后仍有异常,先执行flutter clean命令清理项目本地构建缓存,再重新执行构建即可。
内容的提问来源于stack exchange,提问作者Choi yun seok
相关产品推荐
相关产品推荐

