Skip to content

Flutterビルドエラーの解決: path_provider_android:compileDebugJavaWithJavac

主な原因

このエラーは主に以下が原因で発生します:

  1. JDKバージョンの互換性問題 (特にJava 17+対応)
  2. Gradle設定とプラグインバージョンの不整合
  3. コアライブラリのデシュガリングが必要な依存関係の存在

問題の詳細

Flutterプロジェクトでパッケージ追加後に以下のビルドエラーが発生:

log
FAILURE: Build failed with an exception.

* What went wrong:
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...

発生条件の特徴:

  • 動作していたプロジェクトが突然ビルド失敗
  • google_fontsflutter_local_notificationsなど特定パッケージ追加で発生
  • Android StudioとVS Codeの両方で再現
  • エラーメッセージにjlink.exeの実行失敗が含まれる

根本解決策

解決策1: JDKとGradle設定の更新(推奨)

前提条件

Flutter SDKを最新版に更新:

bash
flutter upgrade
flutter clean

手順1: android/app/build.gradle の修正

gradle
android {
    namespace = "com.example.new_flutter"
    compileSdk = 34 // 明示的にバージョン指定
    ndkVersion = "25.1.8937393" // 固定バージョン推奨

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17 // VERSION_1_8 → VERSION_17
        targetCompatibility JavaVersion.VERSION_17
        coreLibraryDesugaringEnabled true // デシュガリング有効化
    }

    kotlinOptions {
        jvmTarget = JavaVersion.VERSION_17.toString() // 17に更新
    }

    defaultConfig {
        // ...
        minSdk 21 // minSdkVersionが21未満の場合に設定
    }
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.3" // 追加
}

手順2: android/gradle-wrapper.properties の更新

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

手順3: android/settings.gradle の修正

gradle
id "com.android.application" version "8.3.1" apply false

解決策2: デシュガリングの有効化(依存関係エラー対策)

特定パッケージ使用時に必要な設定:

エラー例
Dependency ':flutter_local_notifications' requires core library desugaring
  1. app/build.gradleに依存関係追加:
gradle
dependencies {
    coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.4"
}
  1. コンパイルオプションでデシュガリングを有効化:
gradle
android {
    compileOptions {
        coreLibraryDesugaringEnabled true
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
}

補足対策

キャッシュクリア手順

上記解決後もエラーが解消しない場合:

bash
# プロジェクトルートで実行
flutter clean
rm -rf .dart_tool
cd android
./gradlew clean
cd ..
flutter pub get

パッケージ固有の対処法

google_fontsなどの特定パッケージで発生する場合:

  1. pubspec.yamlでバージョンを固定:
yaml
dependencies:
  google_fonts: ^5.1.0 # 安定版を明示指定
  1. パッケージの互換性チェック:
bash
flutter pub outdated

予防策

  • 定期アップデート: Flutterとプラグインを月1回更新
  • バージョン固定: pubspec.yamlでメジャーバージョンを固定
  • CI環境の統一: 開発環境とCI環境のJDK/Gradleバージョンを一致させる
  • ログ分析: ビルド失敗時は--verboseオプションで詳細ログ取得
    bash
    flutter build apk --verbose

::: success 設定確認ポイント 問題解決後は以下を再確認:

  1. Android StudioのJDK設定 (File > Project Structure > SDK Location)
  2. 環境変数JAVA_HOMEがAndroid StudioのJDKを指しているか
  3. flutter doctorコマンドで環境整合性を確認 :::

参考リソース