Flutter:Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8.のエラー
結論:JAVA_HOMEをPATHに設定する(PATHを通す)
2022/9/17 Flutter エラー・バグ日記
Google Play Consoleにアップロードするaabファイルを作ろうとしたら、Android Studioのアップグレードを求められたので、「Dolphin」バージョンに更新したが(こちらの日記ご参照)、今度は以下のエラーが発生し、結局、ビルドが進まなかった。
Build file '/Users/*******/android/app/build.gradle' line: 24 A problem occurred evaluating project ':app'. > Failed to apply plugin 'com.android.internal.application'. > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. You can try some of the following options: - changing the IDE settings. - changing the JAVA_HOME environment variable. - changing `org.gradle.java.home` in `gradle.properties`. * 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.
GradleがJava11を求めているのに、現在使っているJavaが1.8なので、不整合だということらしい。
エラーメッセージ内に、対応候補が3つも書かれており、ネットにも多くの情報が出てくるので、すんなり行くかと思いきや、かなり難航した。。。
そもそもJava11が入っているのか確認
過去、MacにJavaをインストールしたときは、Java8だったので、不安になった。
こちらの記事を参考にさせていただき、ターミナルから
/Applications/Android\ Studio.app/Contents/jre/Contents/Home/bin/java -version
と打ってみる(「\」は、恐らく、コマンド上でスペースを認識させるためのエスケープ文字)。
すると、
openjdk version "11.0.13" 2021-10-19
と出てきたので、Java11自体は、問題なくインストールされているらしい。
Android StudioにはJava11が同梱されているらしいので、そのためだろう。
Gradle JDKは既に「11 version 11.0.13・・・」なので、直す必要がない。。
1つめの対応候補である「IDEの設定を見直す」方法について、ネット上で多く見られたのが、
- Android Studioを、Flutter用ではなく、Androidアプリ用に起動し、
- 「Preferences」→「Build, Execution, Deployment」→「Build Tools」→「Gradle」の中の「Gradle JDK」で、
- 「1.8 verion・・・」となっているのを「11 version ・・・」に変更する
というもの(こちらやこちらの記事などを参考にさせていただいた)。
しかし、自分の環境では既に、
11 version 11.0.13 /Applications/Android Studio.app/Contents/jre/Contents/Home
が選択されており、変更の余地がなかった。。
gradleをダウングレードする(これは試さず)
こちらの記事では、恐らく、自分と同じ状況だったためか、
プロジェクト直下の「build.gradle」の
- 「com.android.tools.build:gradle:」
- 「org.jetbrains.kotlin:kotlin-gradle-plugin:」
のバージョンを、それぞれ
- 「4.1.0」
- 「1.6.10」
にダウングレードする(ダウングレード前は、それぞれ「7.1.2」と「$kotlin_version」)方法が紹介されていた。
しかし、以前のエラー対応(こちらの日記ご参照)で、gradleのダウングレードはしない選択をしたので、この方法は断念。。
Gradle JDKを「Embedded JDK version 11.0.13・・・」に変えると解消するが、設定が維持されない。。
改めて下記の記事を見てみると、他の記事とは異なり、前述した「Gradle JDK」のところで、「Embedded JDK version 11.0.13・・・」を選択する方法が紹介されていた。
※こちらの記事は、3つの対応方法を丁寧に説明されており、大変助かりました。ありがとうございます!
どうやら、Android Studioに同梱されているJavaを使うには、これを選択する必要があるらしい。
自分の場合、「Gradle JDK」に、
Embedded JDK version 11.0.13 /Applications/Android Studio.app/Contents/jre/Contents/Home
という選択肢があったので、これを選択後、Android Studioのメニューの「Build」→「Rebuild Project」でリビルドしたところ、無事エラーが解消された。
しかし、一度、Android専用のプロジェクトを閉じて、再び開くと、「Gradle JDK」の設定が「11 version 11.0.13・・・」に戻ってしまう。
そのため、再度「Embedded JDK・・・」を選択して、リビルドする必要があり、非常に手間。。
設定を維持する方法がないか調べると、下記に同じ質問をしているスレッドがあった。
回答内容を見ると、「gradle.properties」に設定を追記すれば良さそうだが、書き方が諸説あるようで、あまり気が進まず。
2つめのJAVA_HOMEをPATHに設定する方法を試す(解決)
仕方なく、2つめのJAVA_HOMEの環境変数を設定する方法に変更してみる。
いずれも既出ではあるが、改めて下記記事が大変参考になった。
具体的には、Finderで非表示ファイルを表示させ、ユーザー直下の「.zshrc」ファイルを開いて、設定を追記する方法。
但し、PATHを設定するには、JAVA_HOMEがどこにあるのか把握しなければならない。
ここでしばらく詰まったが、「Preferences」から確認できる「Gradle JDK」のプルダウンリストを見ると、いずれの選択肢にも、
/Applications/Android Studio.app/Contents/jre/Contents/Home
のパス名が書かれていた。
Java11の存在確認をしたときも、同じパスを入れて反応が得られたので、間違いないだろうと判断(恥ずかしながら、環境変数への理解が乏しく。。)。
そこで、「.zshrc」ファイルに、以下の2行を追記。
export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/Contents/Home" export PATH="$PATH:$JAVA_HOME/bin"
再度、「Open for Editing in Android Studio」から、Android専用のAndroid Studioを起動したところ、今度はエラー無く、ビルドが完了した!
「Preferences」の画面で「Gradle JDK」を選択し直す必要もなかった。
これでようやく、aabファイルの作成まで、完了できた。
なお、当初、PATHが通ったことを確認すべく、ターミナルで「echo $JAVA_HOME」を打つも、反応が無かったので(空白行が返ってくる)、詰まっていた。。
原因は、単なる入力ミス。恥ずかしながら、1行目の最後に、閉じるダブルコーテーションが抜けていた。。。(つい、参考記事のコードをそのままコピペしてしまった。。自分でしっかり理解する必要アリと反省。)
やはり、FlutterやAndroid Studioをアップグレードすると、色々と困難があるが、、より使いやすい環境に進化したと考えて、前向きに捉えることにする。
\一般的なエラー対処法をまとめた記事はこちら/
リリースしたアプリ(全てFlutterで開発)
個人アプリ開発で役立ったもの
おすすめの学習教材
\超初心者向けでオススメな元Udemyの講座/
\キャンペーン時を狙えば安価で網羅的な内容が学べる(日本語訳あり)/
\Gitの基礎について無料で学べる/
おすすめの学習書籍
\実用的。image_pickerに関してかなり助けられた/
\Dartの基礎文法を素早くインプットできる/