Flutter集成新版本原生包后Android构建报错:Cannot query the value of this provider because it has no value available
Flutter集成新版本原生包后Android构建报错:Cannot query the value of this provider because it has no value available
这种依赖冲突类的构建报错确实挺头疼的,尤其是flutter doctor全绿但项目还是跑不起来的情况,我帮你整理几个针对性的排查和解决步骤:
1. 核对包与构建工具的版本兼容性
很多时候这类报错是因为升级的原生包(比如firebase_core)和你当前使用的Flutter、AGP、Gradle版本不匹配。建议去对应包的pub.dev页面查看官方标注的兼容版本范围,比如部分新版本的Firebase包要求AGP 8.0+、Flutter 3.10+,如果你的项目里其他依赖拖了后腿,就容易出现这类模糊的依赖查询错误。
2. 彻底清理项目与系统构建缓存
有时候flutter pub cache repair不够彻底,试试更全面的缓存清理:
- 执行命令清理Flutter项目缓存:
flutter clean flutter pub get - 删除Android项目本地Gradle缓存(Mac/Linux):
Windows系统则执行:rm -rf android/.gradle rm -rf ~/.gradle/cachesrd /s /q android\.gradle rd /s /q %USERPROFILE%\.gradle\caches - 清理完成后重新执行构建命令。
3. 强制统一Kotlin版本
Kotlin版本不一致是常见的隐藏冲突点,打开android/build.gradle文件,在buildscript块中指定统一的Kotlin版本(选一个和你的AGP版本兼容的,比如AGP 8.4对应Kotlin 1.9.x):
buildscript { ext { kotlin_version = '1.9.23' } repositories { google() mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:8.4.0" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // 其他依赖... } }
4. 统一Android SDK版本配置
确保项目的compileSdkVersion和targetSdkVersion与你安装的Android SDK(35.0.0)一致:
- 打开
android/app/build.gradle:android { compileSdkVersion 35 defaultConfig { targetSdkVersion 35 // 其他配置... } } - 同时检查
android/build.gradle中AGP的版本是否统一:plugins { id 'com.android.application' version '8.4.0' apply false id 'com.android.library' version '8.4.0' apply false // 其他插件... }
5. 逐步排查单个包的兼容性问题
用排除法定位问题包:
- 先暂时移除
volume_controller这类第三方包,只保留firebase_core,重新构建项目。如果构建成功,说明是volume_controller的版本和当前环境不兼容,尝试降级该包到前一个稳定版本。 - 如果移除后仍然报错,尝试降级
firebase_core到前一个大版本(比如从3.0.x降到2.24.x),看是否能解决依赖冲突。
6. 确认Java SDK环境配置正确
AGP 8.x官方推荐使用Java 17,确保:
- 系统的
JAVA_HOME环境变量指向Java 17的安装路径,没有同时指向其他Java版本(比如22)。 - Android Studio的
File > Project Structure > SDK Location中,JDK路径也设置为Java 17的路径。
按照这些步骤逐步排查,应该能定位到问题所在。这类报错大多是依赖版本不兼容或者缓存残留导致的,耐心排查就能解决。
内容来源于stack exchange
相关产品推荐
相关产品推荐

