Flutter 项目中 path_provider_android:compileDebugJavaWithJavac
任务执行失败的解决方案
问题描述
在 Flutter 项目开发中,当向 pubspec.yaml
中添加依赖包后(如 path_provider
, google_fonts
, flutter_local_notifications
等),运行 Android 构建时会出现以下关键错误:
text
Execution failed for task ':path_provider_android:compileDebugJavaWithJavac'
> Could not resolve all files for configuration ':path_provider_android:androidJdkImage'
> Failed to transform core-for-system-modules.jar
> Error while executing process ...\jlink.exe
错误通常表现为:
- 项目在未添加依赖时能正常运行,但引入特定插件后即失败
- Android Studio 和 VS Code 中都会出现相同问题
- 错误涉及 Android SDK 中的
core-for-system-modules.jar
处理过程失败 - 可能导致构建完全中断:
Gradle task assembleDebug failed with exit code 1
根本原因
该问题通常由以下因素共同导致:
- JDK 版本不兼容:插件要求 Java 17+,但项目仍使用 Java 8 配置
- Gradle 版本过低:旧版 Gradle 无法处理新的 Android SDK 模块
- 缺少核心库脱糖支持:某些插件需要启用 Java 8+ API 的脱糖功能
- 构建缓存冲突:旧版缓存与新依赖产生冲突
完整解决方案
步骤一:更新 JDK 与 Java 版本
修改 android/app/build.gradle
:
groovy
android {
namespace = "com.example.your_app"
compileSdk = flutter.compileSdkVersion
ndkVersion = "25.1.8937393" // 明确指定NDK版本
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17 // 更新为VERSION_17
targetCompatibility = JavaVersion.VERSION_17
coreLibraryDesugaringEnabled true // 启用脱糖
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17 // 更新为VERSION_17
}
...
}
dependencies {
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.3" // 添加脱糖依赖
}
注意
coreLibraryDesugaringEnabled
允许在旧设备上使用 Java 8+ APIdesugar_jdk_libs
必须添加以支持脱糖功能
步骤二:升级 Gradle 系统
更新 Gradle 分发版本
修改android/gradle/wrapper/gradle-wrapper.properties
:propertiesdistributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip
或(根据项目需要):
propertiesdistributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
更新 Android Gradle 插件
修改android/settings.gradle
:groovypluginManagement { repositories {...} plugins { id "com.android.application" version "8.3.1" apply false } }
步骤三:清理构建环境
在终端中执行以下命令:
bash
# 在项目根目录执行
flutter clean
# 进入android目录执行
cd android
./gradlew clean
./gradlew --stop
警告
如果问题依然存在,尝试手动清理构建缓存:
- 删除项目中的
build
和.gradle
目录 - 清除系统级缓存:
- Windows:删除
C:\Users\<用户名>\.gradle\caches
- macOS:删除
~/.gradle/caches
- Windows:删除
- 重置 Flutter 依赖缓存:bash
flutter pub cache repair
替代方案与注意事项
检查插件兼容性:
yamldependencies: flutter: sdk: flutter # google_fonts: ^5.0.0 # 有冲突时可暂注释 flutter_local_notifications: ^15.3.3
在 VS Code 中通过
Ctrl+Shift+U
查看 OUTPUT 选项卡中的兼容性警告确认环境配置:
- 安装 Android Studio 最新版(包含最新的 JDK)
- 在
flutter doctor -v
中检查 JDK 路径是否正确 - 设置
JAVA_HOME
环境变量指向 Android Studio 的 JDK(而非系统 JDK)
参考官方资源:
验证解决效果
完成上述修改后:
- 重启 IDE(Android Studio/VS Code)
- 运行
flutter pub get
- 重新执行
flutter run
预期结果:
- 成功完成 Gradle 构建并正常部署应用
- 依赖插件功能可正常使用
- 不再出现
jlink.exe
相关错误提示
::: success 提示 如果升级至指定版本后仍有问题,可尝试调整版本号(如 8.3.1
→ 8.7.1
),需匹配您的 Flutter SDK 版本要求。建议使用项目创建时生成的默认版本号作为基准进行调整。 :::