Flutterのセットアップ[Mac]でエラー多すぎて詰んだけどなんとかなった方法

IT系の会社に書類選考で受かり(フリーランス契約)、面接までにFlutterのセットアップをしてほしいと言われたので頑張ってみたらエラー多すぎて死にそうになりました。
でもなんとかなったのでメモとしてここに置いときます。同じように悩んでいる方がいたら参考になれば。


#はじめに
・MacOSはMojaveの最新版をインストール
・Xcodeをインストール
・Android Studioをダウンロード
を済ませます
多分大体の人は既に入っていると思うのでこの辺の説明は省きます

#Android StudioにFlutterのプラグインをインストール
ConfigureからPluginsよりFlutter Pluginをインストールします
Flutter Pluginが出てこない人はAndroid Studioをアップデートすれば出てくるはずです

#エミュレータの起動
ConfigureからAVD Managerを起動し、
Create Virtual DeviceでPxel 2を選択、PieのDownloadをし、進む、実行ボタンで起動します

#動作確認
動くか確認します
Android Studioを改めて起動し、Start a new Flutter project からFlutter Applicationを作成します
Install SDK をダウンロード(画像の矢印のところからダウンロードページに飛べます)
<img width="902" alt="スクリーンショット 2019-08-19 3.20.24.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/232752/9c5e25f6-9996-a8fe-e13c-8b72b3479a79.png">

Flutter SDK pathには先程ダウンロードしたSDKファイルの場所を指定します。
Finishで起動できたら実行ボタンを押し、エミュレータでアプリが起動できれば成功です(私は数分かかりました　遅いと思ったらコンソールを確認して気長に待ちましょう)
#隠しファイルを表示
.bash_profileというファイルを編集したいのですが、隠しファイルのため表示できません。
なので隠しファイルを表示できるようにしましょう。
ターミナルを起動し、

```
$ defaults write com.apple.finder AppleShowAllFiles -boolean true
```
を入力し、
処理が終わったら

```
$ killall Finder
```
を入力しましょう
#.bash_profileの確認
まず.bash_profileが存在するか確認しましょう

```
$ ls -a
```
で、隠しファイルが表示されます
.bash_profileがあるかどうか確認しましょう
もしなければ

```
$ touch .bash_profile
```
で作れます

#PATHを通す
.bash_profileの中身を編集しましょう

```
$ open .bash_profile
```
で、テキストエディットが.bash_profileを開いてくれます
そこに
```export PATH=”$PATH:~/Documents/flutter/bin```
と記入しましょう

ターミナルをもう一度起動し、

```
$ flutter
```
が起動すれば成功です
#ライセンス認証
```
$ flutter doctor --android-licenses
```
を実行します

するとエラーが...（エラーが出ずにそのまま行けた人は次の項目まで飛ばしてください）

```
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
A newer version of the Android SDK is required. To update, run:
/Users/nanaho/Library/Android/sdk/tools/bin/sdkmanager --update
```
これによるとエラーは

```
$ /Users/nanaho/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
```

調べた結果、現在のSDKのバージョンはJava9より上のバージョンにはに対応しておらず、Java8でないと動かないらしいです。

現在のJavaのバージョンを確認してみましょう

```
$ java -version
```
9以降のバージョンであれば、Javaのバージョンが原因です

```
$ /usr/libexec/java_home -V
```
で、インストールされているJDKのバージョンが表示されます。
もしそのなかにJava8("Java SE 8")がなければインストールしましょう

(Java8を既に持っている方は・・・まで飛ばしてください　切替方法を記載します)

https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
こちらからJava SE Development Kit 8u221を自分の機種に合わせてインストールします
(Oracleのアカウントが必要なのでログインまたは登録しましょう)



・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・



Javaのバージョンを切り替えます

```
$ export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0`
```
一応切り替わっているか確認しましょう

```
$ java -version
```
```java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)```
と出てくれば成功です

これでエラーのエラー(/Users/nanaho/Library/Android/sdk/tools/bin/sdkmanager --updateのエラー)を回避できる条件が達成しました！！！
早速もう一度打ってみましょう

```
$ /Users/nanaho/Library/Android/sdk/tools/bin/sdkmanager --update
```
（y/n）の確認が多いですがyとエンターを押していきましょう
エラーも出ず無事できました！

これでエラー(flutter doctor --android-licensesのエラー)を回避できる条件が達成しました！！！
早速もう一度打ってみましょう

```
$ flutter doctor --android-licenses
```
成功しました！

#Flutter Doctorの実行
これでついに終わりです　やっと寝れます

```
$ flutter doctor
```
を入力するだけです
成功した方はおめでとうございます。セットアップは終了です。
エラーした方、安心してください、私もです(2回目)
↓エラー文

```
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
Doctor summary (to see all details, run flutter doctor -v):
 
Oops; flutter has exited unexpectedly.
Crash report written to /Users/nanaho/flutter_03.log;
please let us know at https://github.com/flutter/flutter/issues.
```
MacOSをアップデートするとなるらしいです。
xcodeを再インストールすると治るっぽい。

```
$ xcode-select --install
```
割と時間かかります。あるあるの予想時間がどんどん増えていくやつです。
インストールが終わったらもう一度入力しましょう

```
$ flutter doctor
```
```Building flutter tool...```と表示されれば成功です。長いですが待ちましょう。

[✗]や[!]の項目が出たら最後の気合を振り絞って解決しましょう
何がだめなのか詳細に書いてくれているので和訳すれば解決方法がすぐわかります。(実際にすんなりできました)
```[!] Connected device
    ! No devices available```
というエラーは、Android Studioでエミュレータを起動させると解決します(ので、無視しても大丈夫ですが一応起動してエラーが消えるか確認しておきましょう)

#終了

おつかれさまでした！セットアップはすべて終了です
やっぱりなんでもセットアップが一番めんどくさいですね