Skip to content

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

根本原因

该问题通常由以下因素共同导致:

  1. JDK 版本不兼容:插件要求 Java 17+,但项目仍使用 Java 8 配置
  2. Gradle 版本过低:旧版 Gradle 无法处理新的 Android SDK 模块
  3. 缺少核心库脱糖支持:某些插件需要启用 Java 8+ API 的脱糖功能
  4. 构建缓存冲突:旧版缓存与新依赖产生冲突

完整解决方案

步骤一:更新 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+ API
  • desugar_jdk_libs 必须添加以支持脱糖功能

步骤二:升级 Gradle 系统

  1. 更新 Gradle 分发版本
    修改 android/gradle/wrapper/gradle-wrapper.properties

    properties
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-all.zip

    或(根据项目需要):

    properties
    distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
  2. 更新 Android Gradle 插件
    修改 android/settings.gradle

    groovy
    pluginManagement {
        repositories {...}
        plugins {
            id "com.android.application" version "8.3.1" apply false
        }
    }

步骤三:清理构建环境

在终端中执行以下命令:

bash
# 在项目根目录执行
flutter clean

# 进入android目录执行
cd android
./gradlew clean
./gradlew --stop

警告

如果问题依然存在,尝试手动清理构建缓存:

  1. 删除项目中的 build.gradle 目录
  2. 清除系统级缓存:
    • Windows:删除 C:\Users\<用户名>\.gradle\caches
    • macOS:删除 ~/.gradle/caches
  3. 重置 Flutter 依赖缓存:
    bash
    flutter pub cache repair

替代方案与注意事项

  1. 检查插件兼容性

    yaml
    dependencies:
      flutter:
        sdk: flutter
     # google_fonts: ^5.0.0  # 有冲突时可暂注释
     flutter_local_notifications: ^15.3.3

    在 VS Code 中通过 Ctrl+Shift+U 查看 OUTPUT 选项卡中的兼容性警告

  2. 确认环境配置

    • 安装 Android Studio 最新版(包含最新的 JDK)
    • flutter doctor -v 中检查 JDK 路径是否正确
    • 设置 JAVA_HOME 环境变量指向 Android Studio 的 JDK(而非系统 JDK)
  3. 参考官方资源

验证解决效果

完成上述修改后:

  1. 重启 IDE(Android Studio/VS Code)
  2. 运行 flutter pub get
  3. 重新执行 flutter run

预期结果:

  • 成功完成 Gradle 构建并正常部署应用
  • 依赖插件功能可正常使用
  • 不再出现 jlink.exe 相关错误提示

::: success 提示 如果升级至指定版本后仍有问题,可尝试调整版本号(如 8.3.18.7.1),需匹配您的 Flutter SDK 版本要求。建议使用项目创建时生成的默认版本号作为基准进行调整。 :::