Flutter Doctor,Android 许可证状态未知

Posted

技术标签:

【中文标题】Flutter Doctor,Android 许可证状态未知【英文标题】:Flutter Doctor, Android licenses status unknown 【发布时间】:2020-12-24 21:17:41 【问题描述】:

Flutter 医生说找不到我的 android 许可证状态。

[√] Flutter (Channel stable, 1.20.3, on Microsoft Windows [Version 10.0.19041.450], locale en-US)
[!] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    X Android license status unknown.
      Try re-installing or updating your Android SDK Manager.
      See https://developer.android.com/studio/#downloads or visit
      https://flutter.dev/docs/get-started/install/windows#android-setup for detailed instructions.
[√] Android Studio (version 4.0)
[√] VS Code (version 1.48.2)
[!] Connected device
    ! No devices available

我确实尝试过运行颤振医生 --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:602)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 5 more

我在这里错过了什么?

【问题讨论】:

【参考方案1】:

我遇到了同样的问题。

Flutter 2.2.3 • 频道稳定 • https://github.com/flutter/flutter.git

框架 • 修订版 f4abaa0735(7 天前) • 2021-07-01 12:46:11 -0700

引擎 • 修订版 241c87ad80

工具• Dart 2.13.4

正在运行颤振医生...

医生总结(要查看所有详细信息,请运行 flutter doctor -v):

[✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale es-ES)

[!] Android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.2)

✗ Android 许可证状态未知。 运行 flutter doctor --android-licenses 以接受 SDK 许可证。 详情请见https://flutter.dev/docs/get-started/install/macos#android-setup。

[✓] Xcode - 为 ios 和 macOS 开发

[✓] Chrome - 为网络开发

[✓] Android Studio(4.2版)

[✓] VS 代码(版本 1.57.1​​)

[✓] 已连接设备(1 个可用)

!医生发现了 1 个类别的问题。

我已经通过下一个方式实现了解决方案:

1.- 打开终端窗口。

2.- 将环境变量 JAVA_HOME 设置为 jdk 8 所在的路径。在我的情况下是: export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

3.- 运行命令: flutter doctor --android-licenses

这三个步骤已经解决了我的问题。

颤抖的医生

医生总结(要查看所有详细信息,请运行 flutter doctor -v):

[✓] Flutter (Channel stable, 2.2.3, on macOS 11.4 20F71 darwin-x64, locale es-ES)

[✓] Android 工具链 - 为 Android 设备开发(Android SDK 版本 30.0.2)

[✓] Xcode - 为 iOS 和 macOS 开发

[✓] Chrome - 为网络开发

[✓] Android Studio(4.2版)

[✓] VS 代码(版本 1.57.1​​)

[✓] 已连接设备(1 个可用)

• 未发现任何问题!

【讨论】:

【参考方案2】:

保存 JAVA_HOME 环境变量的值,然后删除 JAVA_HOME 环境变量(如果存在)。

保存你的 jdk 路径的值。从 PATH 中删除你的 jdk。

做出这些更改后,flutter doctor --android-licenses 应该可以工作了。

如果适用,请在路径中恢复 JAVA_HOME 环境变量和 jdk。

如果这不起作用,请卸载 Android Studio 和 XCode,下载最新版本并重新安装。

如果您无法解决问题,请查看此帖子:https://github.com/flutter/flutter/issues/28230

【讨论】:

您好,感谢您的回复。原来是java版本的问题。显然 java 11 不支持颤振 atm。降级到 java 8 对我有用

以上是关于Flutter Doctor,Android 许可证状态未知的主要内容,如果未能解决你的问题,请参考以下文章

不接受某些 Android 许可证。要解决此问题,请运行:flutter doctor --android-licenses

运行 flutter doctor --android-licenses 时发生异常

为啥 Flutter Doctor 不能作为我的计算机工作?

Flutterflutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘(代码片段

FLUTTER DOCTOR [X] Android 工具链

【Flutter】运行安卓报错:flutter doctor --android-licenses报错