はじめに
2021/09にFlutter2.5がリリースされたので自作アプリのFlutterバージョンを上げようとしたところ、Androidの依存関係でmissingが出てしまったのでその対処方法になります。
環境
- M1 Mac
- MacOS Big Sur 11.4
- Flutter ver2.2.3
先に結論
Android StudioでAndroid SDK Command-line Tools
をインストールすればOKです。では細かく見ていきましょう。
Flutterバージョンアップ
Flutter2.2.3から2.5へのアップグレードになります。Flutterのバージョンアップをするには以下のコマンドを叩くだけでOKです。
$ flutter upgrade
出力はこんな感じでした。
Upgrading Flutter to 2.5.0 from 2.2.3 in /usr/local/Caskroom/flutter/2.0.5/flutter...
Downloading Dart SDK from Flutter engine f0826da7ef2d301eb8f4ead91aaf026aa2b52881...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
14 219M 14 31.0M 0 0 31.9M 0 0:00:06 --:--:-- 0:00:06 31.9M
33 219M 33 74.1M 0 0 37.6M 0 0:00:05 0:00:01 0:00:04 37.6M
46 219M 46 100M 0 0 33.9M 0 0:00:06 0:00:02 0:00:04 33.9M
56 219M 56 123M 0 0 31.0M 0 0:00:07 0:00:03 0:00:04 31.0M
61 219M 61 134M 0 0 27.1M 0 0:00:08 0:00:04 0:00:04 27.1M
67 219M 67 148M 0 0 24.8M 0 0:00:08 0:00:05 0:00:03 23.4M
76 219M 76 167M 0 0 23.9M 0 0:00:09 0:00:06 0:00:03 18.6M
90 219M 90 198M 0 0 24.7M 0 0:00:08 0:00:08 --:--:-- 19.3M
100 219M 100 219M 0 0 25.3M 0 0:00:08 0:00:08 --:--:-- 20.5M
Building flutter tool...
Upgrading engine...
Downloading android-arm-profile/darwin-x64 tools... 370ms
Downloading android-arm-release/darwin-x64 tools... 100ms
Downloading android-arm64-profile/darwin-x64 tools... 103ms
Downloading android-arm64-release/darwin-x64 tools... 88ms
Downloading android-x64-profile/darwin-x64 tools... 95ms
Downloading android-x64-release/darwin-x64 tools... 607ms
Downloading android-x86 tools... 696ms
Downloading android-x64 tools... 952ms
Downloading android-arm tools... 531ms
Downloading android-arm-profile tools... 224ms
Downloading android-arm-release tools... 201ms
Downloading android-arm64 tools... 704ms
Downloading android-arm64-profile tools... 242ms
Downloading android-arm64-release tools... 181ms
Downloading android-x64-profile tools... 196ms
Downloading android-x64-release tools... 220ms
Downloading android-x86-jit-release tools... 243ms
Downloading ios tools... 2,321ms
Downloading ios-profile tools... 1,694ms
Downloading ios-release tools... 6.7s
Downloading Web SDK... 967ms
Downloading package sky_engine... 85ms
Downloading flutter_patched_sdk tools... 83ms
Downloading flutter_patched_sdk_product tools... 89ms
Downloading darwin-x64 tools... 823ms
Downloading darwin-x64/font-subset tools... 55ms
Flutter 2.5.0 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 4cc385b4b8 (4 days ago) • 2021-09-07 23:01:49 -0700
Engine • revision f0826da7ef
Tools • Dart 2.14.0
Running flutter doctor...
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.5.0, on macOS 11.4 20F71 darwin-arm, locale ja-JP)
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
✗ 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
[✓] Chrome - develop for the web
[✓] Android Studio (version 4.1)
[✓] VS Code (version 1.61.0-insider)
[✓] Connected device (2 available)
自動でflutter doctor
が実行されるので楽ですね。
今回はAndroidでcmdline-tools
コンポーネントがないって怒られました。解消するためのコマンドも書いてあるので便利!ということで実行してみたところ。。。[
解消コマンド
$ path/to/sdkmanager --install "cmdline-tools;latest"
sdkmanager
の場所はAndroid Studioで確認することができます。(正確には、確認の一歩手前まですることができます。)
Android Studioで以下のところまで行ってください。
Android Studio > Preference > Appearance & Behavior > System Settings > Android SDK
画面上部にAndroid SDK Location
があります。特別なことをやっていなければこのLocationのパスにtools/bin/sdkmanager
をつけたものがsdkmanger
のパスになります。
java.lang.NoClassDefFoundError発生
java.lang.NoClassDefFoundErrorが発生しました。エラー全文はこちらです。
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:606)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
... 5 more
指定されたコマンド実行の結果、こんなエラーが出ました。なんとも憤りを感じます。もう少し調べてみましょう。
調べてみると、java.lang.NoClassDefFoundError
はそもそもcmdline-tools
がない場合に発生するようです。
そもそもcmdline-toolsがない
Android Studioを見てみると、確かにAndroid SDK Command-line Tools
がインストールされていないようです。
調べ方は以下です
Android Studio > Preference > Appearance & Behavior > System Settings > Android SDK > SDK Tools
のAndroid SDK Command-line Tools
にチェックが入っていませんでした。(下の画像は既にインストールされている状態です)
インストール
上の画像のAndroid SDK Command-line Tools
にチェックを入れて、モーダル下部のApply
をクリックしてください。確認画面を1つ挟んでインストールが始まります。そんなに時間は掛からなかった印象です。
再度flutterをチェック
インストールが終わったら再度flutter doctor
を実行してみましょう。-v
をつけることで詳細を見ることができるのでおすすめです。
[✓] Flutter (Channel stable, 2.5.0, on macOS 11.4 20F71 darwin-arm, locale ja-JP)
• Flutter version 2.5.0 at /usr/local/Caskroom/flutter/2.0.5/flutter
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 4cc385b4b8 (5 days ago), 2021-09-07 23:01:49 -0700
• Engine revision f0826da7ef
• Dart version 2.14.0
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at /Users/user_name/Library/Android/sdk
• Platform android-30, 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 1.8.0_242-release-1644-b3-6915495)
• 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.1)
• 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 1.8.0_242-release-1644-b3-6915495)
[✓] VS Code (version 1.61.0-insider)
• VS Code at /Applications/Visual Studio Code - Insiders.app/Contents
• Flutter extension version 3.26.0
[✓] Connected device (1 available)
• Chrome (web) • chrome • web-javascript • Google Chrome 93.0.4577.63
• No issues found!
最後にNo issues found!
と出ましたね。これで完了です。