Androidエミュレータの作成に失敗して解決した話

macOS CatalinaでFlutterのインストールでAndroidエミュレータを作成するときに

> flutter emulators --create --name DevelopAndroid

を実行すると

> sdkmanager "system-images;android-27;google_apis_playstore;x86"

を実行するように促されました。実行してみるとsdkmanagerにパスが通ってないので実行できません。

> ~/Library/Android/sdk/tools/bin/sdkmanager "system-images;android-27;google_apis_playstore;x86"

パスを指定して実行してみます。すると以下のエラーが発生しました。

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.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73)
	at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 5 more

調べてみるとこれはJavaのバージョンがあっていないためだそうです。

Java SDKをダウンロードしてインストールします。

export JAVA_HOME=$(/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v "1.8")

を.zshrcなどで設定します。また、設定を読み込みます。再度以下を実行します。

> ~/Library/Android/sdk/tools/bin/sdkmanager "system-images;android-27;google_apis_playstore;x86"
> flutter emulators --create --name DevelopAndroid

無事エミュレータが作成できました。


この記事が気に入ったらサポートをしてみませんか?