Flutterでsqfliteを使うときにビルドエラーが出てなかなか解消できず。AI先生に聞いても解決しなかったもののなんとか解消できたので記録。
ところどころパラメータを変えたら動いたが、なぜ動いたかは正直よくわかっていない。
再現方法
pubspec.yaml
に追加してpub get
でインストールは成功した。その後、ビルドでエラー。
dependencies: (略) sqflite: ^2.4.1
参考: sqflite install | Flutter package
ビルドエラーの内容
FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':sqflite_android:compileDebugJavaWithJavac'. > Could not resolve all files for configuration ':sqflite_android:androidJdkImage'. > Failed to transform core-for-system-modules.jar to match attributes {artifactType=_internal_android_jdk_image, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}. > Execution failed for JdkImageTransform: /Users/XXXXXX/Library/Android/sdk/platforms/android-34/core-for-system-modules.jar. > Error while executing process /Users/XXXXXX/Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/jlink with arguments {--module-path /Users/XXXXXX/.gradle/caches/transforms-3/d9e926982c2c139ff9125eb7b6be4144/transformed/output/temp/jmod --add-modules java.base --output /Users/XXXXXX/.gradle/caches/transforms-3/d9e926982c2c139ff9125eb7b6be4144/transformed/output/jdkImage --disable-plugin system-modules} * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. > Get more help at https://help.gradle.org. BUILD FAILED in 1m 9s Error: Gradle task assembleDebug failed with exit code 1
もはやどれがエラーの原因なのかすらわからない。
解消方法
公式にそれっぽいエラー解消方法があったので試した。
android/gradle/wrapper/gradle-wrapper.properties
を変更する。gradleのバージョンを新しくした...?
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-all.zip ↓ distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-all.zip
android/settings.gradle
を変更する。前述のリンクのトラブルシューティングでは8.7.1だったが、自分の環境では8.7.1だと警告が出たので8.7.2にした。参考のバージョン警告が出るので合うのに変えればよさそう?
id "com.android.application" version "8.1.0" apply false ↓ id "com.android.application" version "8.7.2" apply false
トラブルシューティングではここまででまだエラーが出た。ここは自分の環境依存だったかもしれない。一応記載しておく。
android/app/build.gradle
のndkVersionを変更する。
ndkVersion = flutter.ndkVersion ↓ ndkVersion = "28.0.12674087"
このバージョンは自身のAndroid Studioから参照するとよさそう?あまりよくわかっていない。
ここで見つけた。
参考: Where is defined flutter.ndkVersion in build.gradle? - Stack Overflow