升级Flutter/Dart后path_provider_android编译报错如何解决?
这个Execution failed for task ':path_provider_android:compileDebugJavaWithJavac'报错的核心原因是升级Flutter后,当前项目的path_provider依赖版本、安卓编译环境和新版Flutter SDK不兼容,或者和其他第三方依赖存在版本冲突,你可以按以下步骤逐一排查解决:
1. 升级path_provider到适配版本
你当前pubspec.yaml中指定的path_provider: ^2.0.1是适配Flutter 2.x早期版本的旧版包,和你升级后的新版Flutter SDK不匹配。直接修改依赖配置:
path_provider: ^2.1.0
如果不确定适配版本,可以先写path_provider: any拉取和当前SDK兼容的最新版本,编译正常后再锁定版本号即可。
2. 彻底清除所有构建缓存
之前执行的flutter clean不够彻底,按以下顺序操作:
- 手动删除项目根目录下的
pubspec.lock文件,以及安卓目录下的.gradle缓存文件夹 - 执行命令修复全局Pub缓存:
flutter pub cache repair - 执行项目清理:
flutter clean - 重新拉取依赖:
flutter pub get - 进入安卓目录,执行
./gradlew clean(Windows系统执行gradlew clean)清除安卓端构建缓存
3. 修正安卓编译环境配置
检查安卓目录下的两个配置文件:
- 根目录
build.gradle:确保kotlin版本不低于1.6.0,推荐配置ext.kotlin_version = '1.7.10' app/build.gradle:确保compileSdkVersion不低于33,当前主流Flutter插件都要求编译版本≥33才能正常编译,minSdkVersion保持21以上即可- 如果之前加过针对
path_provider的混淆规则,暂时注释后重试编译
4. 强制覆盖依赖版本解决冲突
如果操作后还是报错,大概率是其他第三方子依赖拉取了低版本的path_provider_android导致版本冲突:
- 执行
flutter pub deps查看依赖树,确认所有依赖path_provider的子包版本 - 在
pubspec.yaml中添加强制覆盖配置,统一版本:
dependency_overrides: path_provider_android: ^2.2.0
5. 回退验证定位问题
如果以上操作都无效,可以先把Flutter SDK回退到升级前的正常版本,确认项目可以正常编译后,再逐个升级依赖,定位具体不兼容的依赖包。
内容的提问来源于stack exchange,提问作者Muhammad Moiz
相关产品推荐
相关产品推荐

