FlutterでAndroidの開発環境を構築する際、avdmanager
をcliから実行すると下記のようなエラーが発生した際の備忘録です。
$ ~/Library/Android/sdk/tools/bin/avdmanager list
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156)
at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75)
at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81)
at com.android.sdklib.tool.AvdManagerCli.run(AvdManagerCli.java:213)
at com.android.sdklib.tool.AvdManagerCli.main(AvdManagerCli.java:200)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:602)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 5 more
使用するJavaのバージョンをAndroid Studioに同梱されているJavaに変更することで解決しました。
# パスを通す
$ echo 'export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home"' >> ~/.zprofile
$ source ~/.zprofile
# 確認
$ ~/Library/Android/sdk/tools/bin/avdmanager list
Available Android Virtual Devices:
Parsing ~
:
:
Android Studioに同梱されているJAVAのパスは、アプリを立ち上げcmd + ;
→ 「JDK location」から確認が可能です。