Flutter、Android Studio、Gradle, Java, Dartなど、さまざまなツールやフレームワークのアップデートされていきますが、時間などの余裕がないと、アップデート適用した後に、十分に検証できないことがあります。そうすると、開発していたアプリが急に原因不明の理由でビルドできなくなってしまう、ということが起こりかねません。
先日、色々とアップデートを済ませた後、FlutterでAndroidのビルドの作成した際に、以下のようなエラーが表示されてしまいました。
Launching lib/main.dart on sdk gphone x86 in debug mode...
Running Gradle task 'assembleDebug'...
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':audio_session:compileDebugJavaWithJavac'.
> Could not find tools.jar. Please check that /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home contains a valid JDK installation.
* 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 35s
Exception: Gradle task assembleDebug failed with exit code 1
エラーメッセージをコピペして、原因を探ったところ、tools.jarというファイルを古いバージョンのJDKから引っ張ってきて、参照可能なフォルダにコピペして置く、というような方法で解決している例を見つけました。
しかし、tools.jarというファイルは自分のシステム上には見つからず、公式サイトから古いJDKをダウンロードしようとすると個人情報を求められます。住所や勤務先といった大量の情報を提供することにためらいを感じたので、もう少し頑張って、他の方法を模索することにしました。
基本に立ち返り、flutter doctor
を実行してみると、以下のように表示されAndroid Studioの項目に問題が発生していることに気付きました。
% flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.1 20G80 darwin-x64, locale ja)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[!] Android Studio (version 2020.3)
✗ Unable to find bundled Java version.
[✓] VS Code (version 1.58.2)
[✓] Connected device (2 available)
! Doctor found issues in 1 category.
Android Studio関連のエラーが出ています。確かに、Android Studo Arctic Foxにアップデートしたばかりでした。このエラーメッセージで検索してみると、今度はtools.jarを必要としない解決策を見つけました。以下のように、Android StudioのJREフォルダなどにシンボリックリンクを貼るだけです。
cd /Applications/Android\ Studio.app/Contents/jre
ln -s ../jre jdk
ln -s "/Library/Internet Plug-Ins/JavaAppletPlugin.plugin" jdk
この方法を試してみたら、flutter doctor
はパスしました。
% flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.1 20G80 darwin-x64, locale ja)
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS
[✓] Chrome - develop for the web
[✓] Android Studio (version 2020.3)
[✓] VS Code (version 1.58.2)
[✓] Connected device (2 available)
• No issues found!
無事、Android版のビルドを再び生成することにも成功して、当面の問題は解決しました。
Arctic Foxにアップデートしたことが直接的な原因で発生した問題だったのかどうか定かではないですが、Flutter関連で何かをアップデートしたら、まずはflutter doctor
を実行して何か問題が発生していないか、こまめに確認しておいた方がいいですね。
次は依存パッケージをアップデートしたことが原因で発生していると思われるバグの修正に取り組みます。