VS Code运行Flutter点餐项目构建失败 报shared_preferences属性错误
问题复现
- 购入的点餐类Flutter商用项目,在Visual Studio Code中构建、运行时持续报错,更新Flutter SDK后问题没有任何改善
- 核心报错:类型为
org.gradle.api.Project的:shared_preferences模块无法获取未知属性android,构建运行5秒后直接失败 - 伴随异常:Gradle拉取网络依赖构件出错,触发第9次构建重试,本次重试等待时长25600ms
- 构建日志提示可附加不同参数获取更多排障信息
问题根因
两个问题叠加触发报错:
- 第三方交付的项目普遍使用老旧的Android构建配置,没有适配新版Gradle、Android Gradle插件的逻辑,本地更新Flutter SDK后自带的新版构建链无法识别老配置,导致
shared_preferences插件加载时读不到Android配置块的属性 - 默认配置的Gradle依赖仓库服务器在海外,国内网络环境下访问经常超时,依赖构件下载残缺,会进一步触发构建重试,甚至直接报配置类错误
修复操作
- 先解决依赖下载失败问题
- 打开项目路径下
android/build.gradle文件,把仓库配置里默认的google、mavenCentral源替换成国内可正常访问的镜像源,从根源避免依赖拉取超时 - 核对两个版本的匹配关系:打开
android/gradle/wrapper/gradle-wrapper.properties看当前配置的Gradle版本,再打开android/build.gradle看声明的com.android.tools.build:gradle(即Android Gradle插件)版本,两个版本必须符合官方给出的兼容对应关系,版本差过大会直接构建失败
- 打开项目路径下
- 修复
shared_preferences属性找不到问题- 打开
android/settings.gradle,删除老版本Flutter要求手动写的原生插件注册配置,新版Flutter会自动完成插件注册,残留的老配置会干扰插件加载Android扩展属性 - 打开根目录
pubspec.yaml,把shared_preferences依赖升级到适配当前Flutter版本的稳定版,不要用发布时间超过2年的老旧版本 - 在项目根目录终端依次执行命令清理缓存、重新拉取依赖:
flutter clean flutter pub get - 手动删除项目目录下的
.gradle缓存文件夹,清掉之前下载不完整的坏缓存文件
- 打开
- 仍无法构建时的排障方法
- 不要直接点VS Code的运行按钮触发构建,在终端手动执行构建命令,按需加参数拿详细日志:
- 加
--stacktrace参数获取完整错误堆栈 - 加
--info或--debug参数输出全量构建日志 - 加
--scan参数生成完整构建过程分析报告
- 加
- 拿到详细日志后直接定位到读取
android属性失败的具体代码行,针对性调整配置即可
- 不要直接点VS Code的运行按钮触发构建,在终端手动执行构建命令,按需加参数拿详细日志:
内容的提问来源于stack exchange,提问作者Khofi Lyndon
相关产品推荐
相关产品推荐

