Rubellum fly light

ほぼPHP日記

Flutterでsqflite利用時にビルドエラーが出る問題の解消方法

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

もはやどれがエラーの原因なのかすらわからない。

解消方法

公式にそれっぽいエラー解消方法があったので試した。

github.com

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から参照するとよさそう?あまりよくわかっていない。

ここで見つけた。

Android StudioのndkVersion

参考: Where is defined flutter.ndkVersion in build.gradle? - Stack Overflow