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


## 環境
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](https://stackoverflow.com/questions/49758849/flutter-io-android-license-status-unknown)

原因は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エミュレータが立ち上がるのも確認できました。