💨
Android StudioをアップデートしたらビルドでJava Rutime Error
先日、Android Studio Flamingo | 2022.2.1 Patch 2にアップデートして、FlutterでAndroidをビルドしうとしたらよくあるJava系のエラーが発生。
Javaのバージョンが古いらしい。
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: com/android/prefs/AndroidLocationsProvider has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
flutter doctor も通らず
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0-rc2)
✗ Android license status unknown.
Run `flutter doctor --android-licenses` to accept the SDK licenses.
See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
java のバージョンを確認、Java SE 8ではなく、Java SE 11が必要と思われる。
/usr/libexec/java_home -V
Matching Java Virtual Machines (5):
18 (x86_64) "Oracle Corporation" - "OpenJDK 18" /Users/kentaroyamamoto/Library/Java/JavaVirtualMachines/openjdk-18/Contents/Home
1.8.0_144 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
1.8.0_92 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
1.7.0_71 (x86_64) "Oracle Corporation" - "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
1.7.0_60 (x86_64) "Oracle Corporation" - "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home
Java SE 11をインストール。(Oracleのアカウントが必要になっている。)
Matching Java Virtual Machines (6):
18 (x86_64) "Oracle Corporation" - "OpenJDK 18" /Users/kentaroyamamoto/Library/Java/JavaVirtualMachines/openjdk-18/Contents/Home
11.0.19 (x86_64) "Oracle Corporation" - "Java SE 11.0.19" /Library/Java/JavaVirtualMachines/jdk-11.jdk/Contents/Home
1.8.0_144 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home
1.8.0_92 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home
1.7.0_71 (x86_64) "Oracle Corporation" - "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home
1.7.0_60 (x86_64) "Oracle Corporation" - "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_60.jdk/Contents/Home
したが、状況変わらず。
brew upgrade
で環境をアップデートしたら、修正されたと思ったら修正されず。
よく考えると、自分の環境はopenjdkで構成されているらしい
記事に従ってbrewを使ってopenjdkをインストールし直したら、java --versionがアップデートされた。
それでも直らず。。結局Android Studioのバグと思われるものを対処したら、flutter doctor が通る様に。。
ここまででiOSのビルドは通った。Flutter doctor ではOKだったがAndroidのビルドが通らず。android/gradle.propertiesをエディットしてビルドできるようになった。こちらの記事を参考に対応。
変更前
org.gradle.jvmargs=-Xmx1536M
変更後
org.gradle.jvmargs=-Xmx1536M --add-exports=java.base/sun.nio.ch=ALL-UNNAMED --add-opens=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED --add-opens=java.base/java.lang.reflect=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-exports=jdk.unsupported/sun.misc=ALL-UNNAMED
Discussion