Flutterビルドエラーの解決: path_provider_android:compileDebugJavaWithJavac
主な原因
このエラーは主に以下が原因で発生します:
- JDKバージョンの互換性問題 (特にJava 17+対応)
- Gradle設定とプラグインバージョンの不整合
- コアライブラリのデシュガリングが必要な依存関係の存在
問題の詳細
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_fonts
、flutter_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
app/build.gradle
に依存関係追加:
gradle
dependencies {
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:2.0.4"
}
- コンパイルオプションでデシュガリングを有効化:
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
などの特定パッケージで発生する場合:
pubspec.yaml
でバージョンを固定:
yaml
dependencies:
google_fonts: ^5.1.0 # 安定版を明示指定
- パッケージの互換性チェック:
bash
flutter pub outdated
予防策
- 定期アップデート: Flutterとプラグインを月1回更新
- バージョン固定:
pubspec.yaml
でメジャーバージョンを固定 - CI環境の統一: 開発環境とCI環境のJDK/Gradleバージョンを一致させる
- ログ分析: ビルド失敗時は
--verbose
オプションで詳細ログ取得bashflutter build apk --verbose
::: success 設定確認ポイント 問題解決後は以下を再確認:
- Android StudioのJDK設定 (File > Project Structure > SDK Location)
- 環境変数
JAVA_HOME
がAndroid StudioのJDKを指しているか flutter doctor
コマンドで環境整合性を確認 :::