🐙

【Flutter】url_launcherを入れたらAndroidでビルドエラーが発生した

に公開

はじめに

Flutterのプロジェクトにurl_launcherを入れたら、Androidでビルドできなくなりました。(iOSは大丈夫)
2,3日悩まされたので、解決方法をメモっておきます。

エラーの状況

発生したエラーは以下のとおりです。

ERROR:/Users/~~/StudioProjects/url_launcher_sample/build/url_launcher_android/intermediates/runtime_library_classes_jar/debug/classes.jar: D8: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeLibDexDebug'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Failed to transform classes.jar (project :url_launcher_android) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, com.android.build.api.attributes.AgpVersionAttr=7.3.0, com.android.build.api.attributes.BuildTypeAttr=debug, com.android.build.gradle.internal.attributes.VariantAttr=debug, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=21, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime}.
      > Execution failed for DexingWithClasspathTransform: /Users/~~/StudioProjects/url_launcher_sample/build/url_launcher_android/intermediates/runtime_library_classes_jar/debug/classes.jar.
         > Error while dexing.

* 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 10s
Error: Gradle task assembleDebug failed with exit code 1

flutter doctorは以下のとおり。

[✓] Flutter (Channel stable, 3.22.0, on macOS 15.2 24C101 darwin-arm64, locale ja-JP)
    • Flutter version 3.22.0 on channel stable
    • Dart version 3.4.0
    • DevTools version 2.34.3

[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
    • Android SDK at /Users/~~/Library/Android/sdk
    • Platform android-35, build-tools 35.0.0
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)

[✓] Xcode - develop for iOS and macOS (Xcode 16.2)

[✓] Chrome - develop for the web

[✓] Android Studio (version 2024.2)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Java version OpenJDK Runtime Environment (build 21.0.3+-79915917-b509.11)

[✓] VS Code (version 1.96.0)

[✓] Connected device (5 available)

[✓] Network resources

解決方法

AndroidStudioで、「Project > android」を開きます。

右下に出てくる、「Start AGP Upgrade Assistant」をクリックします。

青いボタン「Run selected steps」をクリックします。

AGPを「8.7.3」までアップグレードします。

プロジェクトのファイルに戻り、flutter run を実行すると以下のエラーのみになり起動するようになります。

One or more plugins require a higher Android NDK version.
Fix this issue by adding the following to /Users/~~/StudioProjects/url_launcher_sample/android/app/build.gradle:
android {
  ndkVersion "27.0.12077973"
  ...
}

こちらのエラーも、「app > build.gradle」のndkVersionにエラーで出てくるバージョンを指定することで出ないようになります。(このエラーはほっといても動きました)

まとめ

今回の原因は、AGPのバージョンが低かったことでした。
settings.gradleを直接編集しても解決可能だと思いますが、小生はバージョン調べるのがめんどいので、AndroidStudioに任せることにします。

今回のサンプルリポジトリです。
https://github.com/jpn-geo/url_launcher_sample

参考

https://docs.flutter.dev/release/breaking-changes/android-java-gradle-migration-guide

GitHubで編集を提案

Discussion