はじめに
先日、M1 Macに買い替えてから「flutter doctor -v」をしてないなと思いやってみたところ、「✗ Android license status unknown.」が出ていることに気が付きました。
上記の際に表示された「flutter doctor –android-licenses」を実行してみても「Exception in thread “main” java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema」というエラーが出てしまい状況は改善しませんでした。
今回はこのエラーの対応のメモ書きです。
環境
- Flutter 2.2.3
- Android Studio 4.2.1
- MacBook Pro(13-inch, M1, 2020)
- macOS Big Sur 11.5.1
今回の問題
まずは対応前の状態で「flutter doctor -v」をターミナルで実行します。
「flutter doctor -v」はFlutterの開発環境に問題があるかどうかを教えてくれるコマンドです。
% flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.1 20G80 darwin-arm, locale ja-JP)
• Flutter version 2.2.3 at /Users/XXXXXXXX/fvm/versions/stable
• Framework revision f4abaa0735 (6 weeks ago), 2021-07-01 12:46:11 -0700
• Engine revision 241c87ad80
• Dart version 2.13.4
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at /Users/XXXXXXXX/Library/Android/sdk
• Platform android-S, build-tools 30.0.3
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
✗ 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 at /Applications/Xcode.app/Contents/Developer
• Xcode 12.5.1, Build version 12E507
• CocoaPods version 1.10.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
???? https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
???? https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
[✓] VS Code (version 1.59.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.25.0
[✓] Connected device (1 available)
• Chrome (web) • chrome • web-javascript • Google Chrome 92.0.4515.131
! Doctor found issues in 1 category.
内容を見てみると「Android license status unknown.」という項目がNGになっているのがわかります。
またそこにはヒントとして「flutter doctor –android-licenses」を実行してSDKライセンスを許可しろとります。
ということで「flutter doctor –android-licenses」を実行してみます。
% flutter doctor --android-licenses
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
すると例外が発生してしまいます。
これが今回の症状です。
対応方法
対応方法は簡単でした。
Android Studioで「Android SDK Command-line Tools」をインストールするだけです。
Android SDK Command-line Toolsのインストール方法
まずは適当なプロジェクトを開き、右上の[SDK Manager]を開きます。
ツールバーからなら[Android Studio]→[Preferences…]→[Appearance & Behavior]→[Android SDK]、プロジェクト選択画面からなら[Configure]→[SDK Manager]からも遷移できます。
次に「SDK Tools」を選択します。
[Android SDK Command-line Tools]にチェックをいれて、右下の「OK」を押します。
確認画面がでるので「OK」を押します。
すると以下のようなインストール画面がでてくるのでインストールが完了するまで待ちます。
これで対応完了です!
結果
念の為に「Android SDK Command-line Tools」をインストール後、ターミナルは再起動してください。
まずは「flutter doctor –android-licenses」を実行
% flutter doctor --android-licenses
All SDK package licenses accepted.======] 100% Computing updates...
例外を吐くことなく、無事完了!!
確認のために「flutter doctor -v」を実行
% flutter doctor -v
[✓] Flutter (Channel stable, 2.2.3, on macOS 11.5.1 20G80 darwin-arm, locale ja-JP)
• Flutter version 2.2.3 at /Users/XXXXXXXX/fvm/versions/stable
• Framework revision f4abaa0735 (6 weeks ago), 2021-07-01 12:46:11 -0700
• Engine revision 241c87ad80
• Dart version 2.13.4
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at /Users/XXXXXXXX/Library/Android/sdk
• Platform android-S, build-tools 30.0.3
• Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
• Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
• All Android licenses accepted.
[✓] Xcode - develop for iOS and macOS
• Xcode at /Applications/Xcode.app/Contents/Developer
• Xcode 12.5.1, Build version 12E507
• CocoaPods version 1.10.1
[✓] Chrome - develop for the web
• Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
[✓] Android Studio (version 4.2)
• Android Studio at /Applications/Android Studio.app/Contents
• Flutter plugin can be installed from:
???? https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
???? https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 11.0.8+10-b944.6916264)
[✓] VS Code (version 1.59.0)
• VS Code at /Applications/Visual Studio Code.app/Contents
• Flutter extension version 3.25.0
[✓] Connected device (1 available)
• Chrome (web) • chrome • web-javascript • Google Chrome 92.0.4515.131
• No issues found!
こちらもすべての項目で問題なし!
さいごに
こういうのは本当に困る。
コメント