flutter docter で「Run `path/to/sdkmanager --install "cmdline-tools;latest"`」になった時

flutter doctor を実行して、以下のようなワーニングが出たときの（私の）対処法です。

基本的にはワーニングメッセージ通りに実行すれば良いはずですが、私はメッセージ通りに実行してもうまくいかず、ちょっと躓いたのでメモしておきます。

```bash
$ flutter doctor
Running "flutter pub get" in flutter_tools...
Resolving dependencies in flutter/packages/flutter_tools... (8.4s)
  _fe_analyzer_shared 50.0.0 (58.0.0 available)
...

Got dependencies in flutter/packages/flutter_tools!
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.11, on macOS 12.6 21G115 darwin-arm64, locale ja-JP)
[!] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
    ✗ cmdline-tools component is missing
      Run `path/to/sdkmanager --install "cmdline-tools;latest"`
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/docs/get-started/install/macos#android-setup for more details.
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.77.2)
[✓] Connected device (2 available)
[✓] HTTP Host Availability
```

# 対処法

## Run `path/to/sdkmanager --install "cmdline-tools;latest"`

### Step1

ワーニングで指定されたコマンドを実行して、Androidコマンドラインツールをインストールします。（これですんなり成功すれば、以降は不要）
```bash
$ find ~/Library/Android/sdk -name sdkmanager
→[/path/to/sdkmanager]のパスを取得
$ /path/to/sdkmanager --install "cmdline-tools;latest”
```
### Step2

上記Step1でコマンドラインツールのインストールに失敗した時
```bash
The operation couldn’t be completed. Unable to locate a Java Runtime.
Please visit http://www.java.com for information on installing Java.
```
対処法として、以下の対応案あり
- 対応案1. メッセージ通りJavaをインストールする（→私の環境が悪かったのか、何故かうまくいかなかった）
    - [Mac The operation couldn’t be completed. Unable to locate a Java Runtime that supports jarsigner - Stack Overflow](https://stackoverflow.com/questions/71059252/mac-the-operation-couldn-t-be-completed-unable-to-locate-a-java-runtime-that-su)
    - [macOSでjavaを使いたい。](https://zenn.dev/satokazur222/articles/66568417b291d8)
    - [Android StudioでJavaのversionで躓いたのでまとめる - Qiita](https://qiita.com/hohohoris/items/ede44f00d09d2ae93e99)
- 対応案2. 最新のコマンドラインツールをAndroidStudioの設定からインストールする（→私はこれで成功した）
    - [Flutterバージョンアップ時のjava.lang.NoClassDefFoundErrorの対処方法 - Nothing Behind](https://nothing-behind.com/2021/09/13/flutter%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97%E6%99%82%E3%81%AEjava-lang-noclassdeffounderror%E3%81%AE%E5%AF%BE%E5%87%A6%E6%96%B9%E6%B3%95/)
- 対応案3. その他諸々

### Step3

今回は対応案2. 最新のコマンドラインツールをAndroidStudioの設定からインストールします。

インストール手順
1. AndroidStudioの設定から「Android SDK」を開く
    - Android Studio > Preference > Appearance & Behavior > System Settings > Android SDK > SDK Tools
1. 「Android SDK Command-line Tools(latest)」にチェックを入れる
1. 「Apply」を選択してインストール

これで最新のコマンドラインツールはインストールされているはず。
つまり、`path/to/sdkmanager --install "cmdline-tools;latest"`は完了したことになります。

## Run `flutter doctor --android-licenses` to accept the SDK licenses.

こちらはメッセージ通りにコマンドを実行すれば、特に問題なく終わりました。
```bash
$ flutter doctor --android-licenses
```

上記コマンドを実行すると何度か`Accept? (y/N):`と聞かれるのでひたすら`y`を入力して最後まで読めばOKです。

## 最後にもう一度 flutter doctor

これでワーニングは解消できたので、最後にもう一度 flutter doctor を実行して、以下のようになれば完了です。
```bash
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.7.11, on macOS 12.6 21G115 darwin-arm64, locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 33.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 14.2)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2021.2)
[✓] VS Code (version 1.77.2)
[✓] Connected device (2 available)
[✓] HTTP Host Availability

• No issues found!
```