[!] Android工具链 - 针对Android设备开发(Android SDK 27.0.3)•Android SDK a .. \ Android \ sdk•Android NDK位置未配置(可选;对原生分析支持很有用)•平台android-27,构建-tools 27.0.3•Java二进制文件:C:\ Program Files \ Android \ Android Studio \ jre \ bin \ java•Java版OpenJDK运行时环境(版本1.8.0_152-release-1024-b02)X Android许可证状态未知 .
当我运行Flutter医生时,我收到了Android Sdk的错误,尽管我仍然可以在我的设备上构建/运行 . 我只是想知道如何解决这个问题 . 我相信我已经下载了最新版本的android sdk,不知道发生了什么,因为我上周没有这个问题 .
新问题
在评论中遵循几个可能的修复后,它导致了一个新问题 . 我安装了较新版本的android sdk P,8和7以及一个新的jdk10 . 显然仍然没有足够的更新 .
C:\Flutter\flutter>flutter doctor --android-licenses
A newer version of the Android SDK is required. To update, run:
C:\Users\tdmil\AppData\Local\Android\sdk\tools\bin\sdkmanager --update
C:\ Flutter \ flutter> C:\ users \ username \ appdata \ local \ android \ sdk \ tools \ bin \ sdkmanager.bat --update
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:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
... 5 more
8 回答
如果您更新了android SDK,许可证可能已更改 . 根据您执行更新的方式,您可能会或可能不会提示您接受更改,或者可能只是因为您确实接受了这些更改,因为这样可以让客户理解 .
要解决此问题,请尝试运行
flutter doctor --android-licenses
. 这应该会提示您接受许可证(如果只是输入y
并按回车键,它可能会先询问您 - 虽然它应该告诉您) .如果您在执行此操作后仍然遇到问题,则可能需要在Flutter Github repository中打开新错误,或者在现有问题上添加评论,例如this one,因为它可能就是您所看到的 .
以下是解决我的问题的步骤:
打开终端
类型
flutter doctor --android-licenses
按
y
接受,此过程可能会多次发生 . 完成!错误:
是因为当前的SDK版本与Java 9不兼容 .
因此,要解决此问题,您可以将Java版本降级到Java 8,或者使用解决方法可以在终端上导出以下选项:
Linux:
Windows :
为了使它坚持下去,你可以在你的配置文件中导出JAVA_OPTS(
.zshrc
,.bashrc
等)或在Windows上永久添加为环境 .然后,您可以键入flutter或sdkmanager命令:
Flutter :
sdkmanager :
并在需要接受许可证时输入Y.
GitHub问题社区提供的这一行解决了我的问题,这里只是为了防止其他人 .
这也是我的问题#16025
对于线程“main”中的异常java.lang.NoClassDefFoundError:javax / xml / bind / annotation / XmlSchema这个问题似乎通常在您之前安装Java 9时发生 . BTW它与android-sdk不兼容尝试删除Java 9 JDK如果仍然存在 .
Solution to workaround if you have Java9/10 installed
在编辑器中打开sdkmanager .
追加DEFAULT_JVM_OPTS
更换
有这个
For Android license status unknown issue, I've tried to solve by these steps:
打开终端
转到Android SDK位置C:\ Users%user%\ AppData \ Local \ Android \ Sdk \ tools \ bin或〜/ Library / Android / sdk / tools / bin
运行命令:./ sdkmanager --license
参考
Failed to run sdkmanager --list (Android SDK) with Java 9
How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9
同样的问题,检查你的java版本至少它必须是1.8
从flutter SDK根文件夹中打开flutter_console.bat文件并运行该命令
它将接受新下载的Android SDK更新的许可 . 每次下载和更新Android SDK时都需要运行它 .
这是我的解决方案:
$ curl -s "https://get.sdkman.io" | bash
$ source "$HOME/.sdkman/bin/sdkman-init.sh
$ source ~/.bash_profile
$ sdk ls java
$ sdk install java 8.0.192-zulu
$ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update
$ flutter doctor --android-licenses