Help us understand the problem. What is going on with this article?

Flutter始めようとしたらエラー出た。Android license status unknown.

More than 1 year has passed since last update.

環境

Mac

現象

Flutterのインストールと起動確認が終わっていざ開発と思ったら、Androidのエミュレータが出てこなくなった。

改めて、flutter doctorで調べてみたところなんかエラーが出てる。

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.2 18C54, locale ja-JP)
[!] Android toolchain - develop for Android devices (Android SDK 28.0.3)
    ✗ Android license status unknown.
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2018.2.2)

どうやらAndroidのライセンス確認ができていない様子。

Android license status unknown.

通常の解決方法

Androidのライセンスアップデートなどで発生するらしいので、もう一度、以下コマンドで同意作業をする。

$ flutter doctor --android-licenses

あとは承認するかを聞かれるので[y]を押せばOK

別の問題(エラー)

普通はライセンスの問題らしいのですが、実は別の原因でこのエラーが出るときがあるらしく自分はこちらでした。

確認コマンドを実行してみたら

$ flutter doctor --android-licenses
A newer version of the Android SDK is required. To update, run:
/Users/qiita/Library/Android/sdk/tools/bin/sdkmanager --update

と出てきてしまい、どうやらSDKManagerの更新が必要そうなので、実行

$ /Users/qiita/Library/Android/sdk/tools/bin/sdkmanager --update
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:582)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
    ... 5 more

まさかのエラー...
これは詰んだかもしれないと思いつつ、調査した結果StackOverflowに同じ現象の記事を発見

StackOverflow

原因はJavaのバージョンをあげたのが問題だったことが判明。
現在のSDKバージョンはJava 9以降に対応しておらず、Java8で動かす必要があるとのこと。

Javaバージョンが原因の場合の解決方法

Javaのオプションを指定すると解決するらしい。

Linux:

$ export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Windows:

$ set JAVA_OPTS=-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

Javaの設定を変えてからもう一度実行

Flutter:

$ flutter doctor --android-licenses

sdkmanager:

$ sdkmanager --licenses

これで問題はなくなるそうです。

ただ、私の場合これだと作業的に困るので、bash_profileの設定を追加しました。
※Javaの1.8が入っていない場合はインストールしてください。

~/.bash_profile
export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

環境に反映

$ source ~/.bash_profile

そして改めてコマンドを打つと。。。

/Users/qiita/Library/Android/sdk/tools/bin/sdkmanager --update

ちゃんと成功したので確認コマンドで最終確認

$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.0.0, on Mac OS X 10.14.2 18C54, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.3)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.1)
[✓] Android Studio (version 3.1)
[✓] IntelliJ IDEA Ultimate Edition (version 2018.2.2)

これで問題なし。
実際にAndroidエミュレータが立ち上がるのも確認できました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした