🐙
【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に任せることにします。
今回のサンプルリポジトリです。
参考
Discussion