Flutter.io Android许可证状态未知

tdm*_*ler 32 android flutter

[!] Android工具链 - 针对Android设备开发(Android SDK 27.0.3)

•Android SDK a ..\Android\sdk•未配置Android NDK位置(可选;对本机分析支持很有用)•平台android-27,构建工具27.0.3•Java二进制文件:C:\ Program Files\Android\Android Studio\jre\bin\java•Java版OpenJDK运行时环境(版本1.8.0_152-release-1024-b02)X And​​roid许可证状态未知.

当我运行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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

小智 216

只需在android studio中安装sdk命令行工具(最新)即可。 在此处输入图片说明

然后运行: flutter doctor --android-licenses

之后你应该得到:

coolcoders@myhost ~ % flutter doctor --android-licenses
5 of 7 SDK package licenses not accepted. 100% Computing updates...             
Review licenses that have not been accepted (y/N)? y
Run Code Online (Sandbox Code Playgroud)

...然后您将获得一大堆许可证,可在您啜饮您最喜爱的饮料时阅读。

  • 我必须在运行“flutter doctor --android-licenses”之前执行此操作 (21认同)
  • 这是最有帮助的答案,至少对于我的 ubuntu 机器来说是这样。 (5认同)
  • 谢谢,最有帮助的答案!! (4认同)
  • 无法告诉你我是多么感激!万分感谢!!! (4认同)
  • 我也错过了:)非常感谢 (2认同)

mah*_*mnj 37

正确的解决方案是,如果您安装了 android studio

  1. 打开 SDK 管理器
  2. 在 SDK 工具下取消选中隐藏底部的过时包
  3. 那么你应该看到一个名为 Android SDK Tools (Obsolete)

在此处输入图片说明

  1. 检查并申请,让工作室下载包
  2. 一旦完成运行命令flutter doctor,它现在应该提示你flutter doctor --android-licenses 运行许可证命令,通过点击 y 接受所有许可证,它应该可以解决问题

在此处输入图片说明


rmt*_*zie 31

如果您更新了android SDK,许可证可能已更改.根据您执行更新的方式,您可能会或可能不会提示您接受更改,或者可能只是因为您确实接受了这些更改,因为这样可以让客户理解.

要解决,请尝试运行flutter doctor --android-licenses.这应该会提示您接受许可证(它可能会先询问您,如果只是键入y并按下输入 - 尽管它应该告诉您).

如果您仍然有这样做之后的问题,它可能是值得要么开在一个新的bug 扑Github上库,或像现有的问题添加注释这一个,因为它可能是你所看到的.

  • @HuzaifaAsif,我也遇到过这个问题几次,正如 Tommie C 在下面回答的那样,尝试手动安装 java 1.8 并将 $JAVA_HOME 设置为其 bin 文件夹,然后运行 ​​flutter doctor --android-licenses 并接受所有许可证。希望能帮助到你。 (3认同)
  • 它告诉我需要更新版本的Android SDK。要更新,请运行:C:\ Users \ abc \ AndroidSDK \ tools \ bin \ sdkmanager --update。我该怎么办? (2认同)

Aja*_*rge 20

我写这个是因为在安装 flutter 时遇到了挫折......大多数问题都是由简单的配置问题引起的。请按照以下步骤解决您的问题。

第 1 步:ANDROID LICENSES --android-licenses,将解决大多数情况

既然你在这里,你已经遇到了 Android 工具链的“Android 许可证状态未知”问题,正如许多人建议的那样flutter doctor --android-licenses。如果你对所有配置都很好。它应该要求是,然后按 y 和 Voila。但是如果它显示一个

在此处输入图片说明找不到 Android sdkmanager 工具(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)。进入第二步

第 2 步:从 Android Studio 安装 SDK Manager

打开你的 Android Studio ,File-> settings->System settings(left tab) ->Android SDK,进入SDK Tool section该页面,取消隐藏过时的包,选择Android SDL tools(obsolete)并按应用。

在此处输入图片说明 它将安装 SDK,您通过检查此路径是否存在来确认它(C\Users\__\local\Android\sdk\tools\bin\sdkmanager)

第 3 步:重复 1

在新的命令行中安装后重复步骤 1 检查其是否有效,否则转到步骤 4

第 4 步:sdkmanager --update

它会要求您更新 sdk,只需运行终端中给出的命令 C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update。如果它正在运行,那么它很酷。让它完成并重复步骤 1,否则如果它抛出一些异常,例如java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema等, 错误 这意味着您的java未安装或版本不正确。进入下一步

第 5 JAVA 8.1 和 JAVA_HOME 路径。

安装 JAVA 8.1 并设置 JAVA_HOME 路径。确保它是8.1版本(注册免费帐户并从oracle下载8.1版本,记住11+以上不适用于flutter 在此处输入图片说明

注意:由yaniv maymon 提供: 如果您的计算机上已经安装了 Java 并且 sdkmanager --update 仍然无法正常工作。转到环境变量并将“JAVA_HOME”路径更新到 jdk 文件夹。然后退出命令提示符,再次打开并运行更新命令——

第 6 步:最后一步

正确安装和设置路径后,C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update 在新终端中运行该命令,它将起作用

STEP 7: 重新运行 flutter doctor,你可以看到它说运行命令flutter doctor --android-licenses。所以flutter doctor --android-licenses 在终端中运行并在询问时按 y


cod*_*ade 16

错误:

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
Run Code Online (Sandbox Code Playgroud)

是因为当前的SDK版本与Java 9不兼容.

因此,要解决此问题,您可以将Java版本降级到Java 8,或者使用解决方法可以在终端上导出以下选项:

Linux的:

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Run Code Online (Sandbox Code Playgroud)

Windows:

set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Run Code Online (Sandbox Code Playgroud)

而为了让坚持下来,你可以导出JAVA_OPTS在您的个人资料文件在Linux( .zshrc,.bashrc等)或永久添加为环境在Windows上.


然后,您可以键入flutter或sdkmanager命令:

颤动:

flutter doctor --android-licenses
Run Code Online (Sandbox Code Playgroud)

sdkmanager:

sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)

并在需要接受许可证时输入Y.

  • 另一个选项,如果您同时安装了 java 11 和 8,则将 JAVA_HOME 指向 java8:`export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64` (4认同)
  • 这不起作用,因为在较新版本的 java 上删除了“java.se.ee” (3认同)
  • 我通过安装 Android SDK 命令行工具解决了这个问题,这可以在 SDK 管理器中轻松完成。 (3认同)
  • 您无法在 Java 11 中执行此操作。您必须安装 Java 8。请参阅[此答案](/sf/answers/4253409261/) (2认同)

Has*_*sef 10

在我的情况下,问题丢失了 Android SDK Command-line tools

在此处输入图片说明


Muh*_*kur 8

以下是解决我的问题的步骤:

  1. 打开你的终端
  2. 类型 flutter doctor --android-licenses
  3. 按此y接受,此过程可能会发生几次.完成!


Aba*_*Aba 8

我找到了这个必须使用 JDK 8 的解决方案(您现在需要一个帐户才能下载!) - 使用 Android Studio 附带的嵌入式 OpenJDK:

将此添加到您的~/.profile或类似的:

# Use the JDK embedded with Android Studio for command-line builds
export JAVA_HOME='/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home'
Run Code Online (Sandbox Code Playgroud)

通过gradlew和任何其他行为良好的脚本构建的命令行将使用 Android Studio 2.2+ 附带的 SDK 版本。

*我的 Mac 仍在使用默认的 Java 7。


Juk*_*Juk 5

这也是我的问题,与#16025相同

对于线程“main”中的异常 java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema 这个问题似乎通常发生在您之前安装 Java 9 时。顺便说一句,它与 android-sdk 不兼容,如果仍然存在,请尝试删除 Java 9 JDK。

一般来说,JAXB API 被认为是 Java EE API,因此不再包含在 Java SE 9 的默认类路径中。Java 9 引入了模块的概念,默认情况下 java.se 聚合模块在类中可用路径(或者更确切地说,模块路径)。顾名思义,java.se 聚合模块不包括传统上与 Java 6/7/8 捆绑在一起的 Java EE API。幸运的是,JDK 6/7/8 中提供的这些 Java EE API 仍在 JDK 中,但它们只是默认不在类路径中。以下模块中提供了额外的 Java EE API

如果您安装了 Java9/10,解决方法

  1. 在编辑器中打开 sdkmanager。
  2. 附加 DEFAULT_JVM_OPTS

代替

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'
Run Code Online (Sandbox Code Playgroud)

有了这个

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME" -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'
Run Code Online (Sandbox Code Playgroud)
  1. 保存文件并退出编辑器,然后再次尝试运行该命令。

对于 Android 许可证状态未知问题,我尝试通过以下步骤解决:

  1. 打开终端
  2. 转到您的 Android SDK 位置 C:\Users%user%\AppData\Local\Android\Sdk\tools\bin 或 ~/Library/Android/sdk/tools/bin

  3. 运行命令:./sdkmanager --license

参考

无法使用 Java 9 运行 sdkmanager --list (Android SDK)

如何解决 Java 9 中的 java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException


小智 5

这是我的解决方案:

  1. 安装 SDKMan

    $ curl -s "https://get.sdkman.io" | bash

  2. 设置你的 bash_profile

    $ source "$HOME/.sdkman/bin/sdkman-init.sh

    $ source ~/.bash_profile

  3. 找到java sdk,选择要安装的版本

    $ sdk ls java

    $ sdk install java 8.0.192-zulu

  4. 复制您的颤振医生警告消息以更新 sdkmanager

    $ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update

  5. 1~4后重做

    $ flutter doctor --android-licenses


归档时间:

查看次数:

29390 次

最近记录:

6 年,9 月 前