LoginSignup
11

fluter doctorに「Android sdkmanager not found.」と言われた時の対処

Last updated at Posted at 2021-09-12

あらすじ

flutter doctorの初期設定の一つ。--android-licensesについて、戸惑うところと、その思考過程の一部始終について解説。初心者向けの内容です。

ドクター!アンドロイドライセンス!

flutter doctor --android-licensesが効かなかった。

flutter doctor --android-licenses
Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are installed to
resolve this.

sdkマネージャーが見つからないらしい。

パスを書き換えてみる その1

探してみると、それっぽいのが見つかったため、

C:\Users\who\AppData\Local\Android\Sdk\tools\bin\sdkmanager.bat

pathにC:\Users\who\AppData\Local\Android\Sdk\tools\binを追記。

ひとまず、もう一度ドクターを呼んでみる。

flutter doctor --android-licenses
Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are installed to
resolve this.

やっぱりエラー。

パスを書き換えてみる その2

公式から[command-tools](https://developer.android.com/studio?hl=ja# パスを書き換えてみる その2

先ほどpathに追加したものを書き換え、
C:\Users\who\AppData\Local\Android\Sdk\cmdline-tools\binに変更。

それでは、もう一度ドクターを呼んでみる。

flutter doctor --android-licenses
Android sdkmanager not found. Update to the latest Android SDK and ensure that the cmdline-tools are installed to
resolve this.

やっぱりエラー。

しかもなんだかエラーが出てる。

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:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 5 more
sdkmanager
Error: Could not determine SDK root.
Error: Either specify it explicitly with --sdk_root= or move this package into its expected location: <sdk>\cmdline-tools\latest\

C:\Users\who\AppData\Local\Android\Sdk\cmdline-tools\latest\binというディレクトリ構成になるようにしろってことらしい。そうなるようにフォルダ配置しなおせば行けるのだろう。だが何か違う。こんなの新しいのが出てるか頻繁に手動確認が必要ではないか!

Android SDKさんに頼ってみる

VScodeを使う予定のため、二度と開かないであろうAndroid Studioさんを開いてみる。Android Studioからもインストールできるだろうし、IDEなら更新を自動でお知らせしてくれるだろう。

image.png

見つけた。Command-line tools (latest)と親切にもそれっぽい単語が並んでいる。ステキだ。
applyボタンとかそれっぽいことをしていくと、更新処理が走って完了する。ただなぜか、statusNot Installedのままだ。気に入らない。

よく見ると、C:\Users\who\AppData\Local\Android\Sdk\cmdline-tools\binのとなりに、latestフォルダがあって、その下にちゃんとbinがある。インストールは出来たようだ。Not Installedのままだが。

パスを書き換えてみる その3

すでにディレクトリ構成は出来上がった。Android Studioさんありがとう。
先ほど書き換えたばかりのpathを再度書き換えてC:\Users\who\AppData\Local\Android\Sdk\cmdline-tools\latest\binとする。

sdkmanagerを呼んでみる。

PS C:\Users\who> sdkmanager
[=======================================] 100% Computing updates...

なんか勝手に更新した。

PS C:\Users\who> sdkmanager --version
5.0

バージョンちゃんと出ました。

これでOK

PS C:\Users\who> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.5.0, on Microsoft Windows [Version 10.0.19043.1165], locale ja-JP)
[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2020.3)
[✓] VS Code, 64-bit edition (version 1.60.0)
[✓] Connected device (2 available)
    ! Device emulator-5554 is offline.

• No issues found!

Excelsior!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11