这个错误是提示缺少 cmdline-tools
组件,并且需要接受 Android SDK
许可证。
1. 安装 cmdline-tools
找到你的Android SDK安装目录,在项目的 local.properties
文件中,通常会有一行类似:
sdk.dir=D\:\\Android\\Sdk
导航到你的 Android SDK 的 tools/bin 目录,下面以我的为例
cd D:\Android\Sdk\tools\bin
运行以下命令来安装 cmdline-tools:
sdkmanager --install "cmdline-tools;latest"
如果不出意外的话,等一会就会安装好,安装好后会打印如下日志
[=======================================] 100% Unzipping... cmdline-tools/lib/sd
如果报错的话,大概率是你的Java运行环境问题,类似于如下日志:
D:\Android\Sdk\tools\bin>sdkmanager --install "cmdline-tools;latest"
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:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 5 more
错误信息表明缺少 javax.xml.bind.annotation.XmlSchema
类,这是由于在 Java 9
及更高版本中移除了 javax.xml.bind
包。
把Java运行环境改为Java 8
就可以了。
2.接受许可证和验证配置
接着运行如下指令
flutter doctor --android-licenses
按提示输入 y 接受所有许可证。
运行 flutter doctor 验证配置:
flutter doctor
解决!