Flutter.io Android License Status Unknown

>[!] Android toolchain - develop for Android devices (Android SDK 27.0.3)
>>• Android SDK a ..\Android\sdk
• Android NDK location not configured (optional; useful for native profiling support)
• Platform android-27, build-tools 27.0.3
• Java binary at C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
X Android license status unknown.

I am getting an error with Android SDK when I run Flutter doctor, although I can still build/run it on my device. I was just curious about how to fix this issue. I believe I have the most updated version of the Android SDK downloaded, not sure what happened because I didn't have this issue last week.

##New Issues After following several possible fixes in the comments it has led to a new problem. I installed newer versions of android sdk P, 8, and 7 along with a new jdk10. Still not updated enough apparently.

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
251774 次浏览

如果您更新了 android SDK,许可证可能已经更改。根据您如何做更新,您可能已经或可能没有被提示接受更改,或者也许它只是不保存的事实,您确实接受了他们的方式扑通可以理解。

要解决这个问题,可以试试跑步

flutter doctor --android-licenses

这应该会提示您接受许可证(它可能会首先询问您,以防只是键入 y并按回车键-尽管它应该会告诉您这一点)。

如果在这样做之后您仍然有问题,那么可能值得在 Flutter Github 仓库中打开一个新的 bug,或者在现有问题(如 这个)上添加一条注释,因为它可能就是您正在看到的。

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

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

这也是我和 # 16025一样的问题

对于线程“ main”java.lang.NoClassDefFoundError 中的 Exception: javax/xml/bind/notation/XmlSchema 这个问题通常发生在以前安装 Java9时。顺便说一下,它不兼容 android-sdk 如果 Java9JDK 仍然存在,试着删除它。

一般来说,JAXBAPI 被认为是 JavaEEAPI,因此 不再包含在 JavaSE9.Java 中的默认类路径中 9介绍了模块的概念,默认情况下是 java.se 聚合模块在类路径(或者更确切地说,模块)上可用 顾名思义,java.se 聚合模块没有 包括传统上捆绑在一起的 JavaEEAPI 幸运的是,这些 JavaEEAPI 是在 JDK 6/7/8仍然在 JDK,但它们已经不在阶级路径上了 额外的 JavaEEAPI 如下所示 模组

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

  1. 在编辑器中打开 sdkmanager。
  2. 附加 DEFAULT _ JVM _ OPTS

替换

DEFAULT_JVM_OPTS='"-Dcom.android.sdklib.toolsdir=$APP_HOME"'

用这个

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

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

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

  3. 运行命令: ./sdkmanager ——许可证

参考文献

使用 Java9运行 sdkmanager —— list (Android SDK)失败

如何在 Java9中解决 Java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

在 GitHub 问题社区提供的这条线路解决了我的问题,在这里它只是以防万一它帮助其他人。

@rem Execute sdkmanager


"%JAVA_EXE%" %DEFAULT_JVM_OPTS% -XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee %JAVA_OPTS% %SDKMANAGER_OPTS% -classpath "%CLASSPATH%" com.android.sdklib.tool.sdkmanager.SdkManagerCli %CMD_LINE_ARGS%

错误是:

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

因为当前的 SDK 版本与 Java9不兼容。

所以,为了解决这个问题,你可以把你的 Java 版本降级到 Java8,或者通过一个变通方法,你可以在你的终端上导出以下选项:

Linux:

export JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

视窗 :

set JAVA_OPTS='-XX:+IgnoreUnrecognizedVMOptions --add-modules java.se.ee'

为了使它更加有效,您可以在 Linux 上的配置文件(.zshrc.bashrc等)中导出 JAVA _ OPTS,或者在 Windows 上永久地添加一个环境。


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

颤动 :

flutter doctor --android-licenses

Sdkmanager :

sdkmanager --licenses

在需要接受许可证时键入 Y。

注意。这不适用于没有 JavaEE 模块的 Java11/11 + 。对于这个选项是一个好主意,降级您的 Java 版本或等待 Flutter 更新

档号: JDK11: JavaEE 模块的终结

我也有同样的问题,检查你的 Java 版本 至少是1.8

从 flutter SDK 根文件夹打开 flutter _ console. bat 文件并运行命令

flutter doctor --android-licenses

它将接受新下载的 Android SDK 更新的许可证。您需要在每次下载和更新 Android SDK 时都运行它。

我的解决办法是:

  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

尝试 降级你的 Java 版本,这将发生当您的系统 Java 版本不兼容的一个来自 android。一旦你改变了你的 java 版本只是运行 flutter doctor它将自动接受许可证。

我发现这个 解决方案必须使用 JDK8(您现在需要一个帐户来下载!)- 使用 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'

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

我的 Mac 还在使用默认的 Java7。

MacOS 10.15: Android Studio 3.5.1:

对我有效的解决方案是使用 Java 环境工具 jenv(通过 自酿的安装)。当在 Java 版本之间切换时,这个工具会更改 $JAVA _ Home

在我的例子中,我安装了多个 Java 版本,当前使用的全局版本是默认版本。当我使用这个工具时,我也发现有必要注释掉我的 .bash_profile中的 $JAVA _ Home环境变量。

在 Terminal 中,我输入了 jenv global 1.8来运行 java 1.8,而不是后来的版本(我已经安装了多个版本)。

之后:

flutter doctor --android-licenses

或者

sdkmanager --licenses

都很好。

注意: 如果有,可能需要退出并重新打开终端 shell 重新定义 $JAVA _ HOME 环境变量。

对于仍然面临这个问题的人来说:
正如下面汤米 C,阿坝和其他一些人的回答,但可能不够清楚,因为我发现它。
按照 windows/linux 上的描述,尝试手动安装 Java 1.8: [ ref = “ https://www3.ntu.edu.sg/home/ehchua/Programming/howto/JDK _ Howto.html ]”rel = “ nofollow norefrer”> https://www3.ntu.edu.sg/home/ehchua/programming/howto/jdk_howto.html ]
并设置 $JAVA _ Home变量(jdk 路径)。
在 windows 上设置 jdk path ($JAVA _ HOME) : [ 如何在 Windows7上设置 java _ home?
在 linux 上: [ https://askubuntu.com/questions/175514/how-to-set-java-home-for-java]
然后运行 flutter doctor --android-licenses并接受所有的许可证。希望它有所帮助。

我把我的 Java 版本降级到了1.8并解决了这个问题,下面是下载 JDK8的链接

安装 JDK8后运行以下命令

   flutter doctor --android-licenses

警告 : 如果您对 JAVA _ HOME 环境变量及其方向有疑问,这个答案是有用的。如果你没有这个问题,你不应该尝试这个解决方案。

如果您有这个错误,并且尝试使用 flutter doctor —— android-許可或 sdkmanager ——許可,而且您的 JAVA _ HOME 环境变量出现了问题,那么您必须阅读此文件。

我有一个 MacOS Catalina 蚂蚁,我可以通过下面的步骤成功地解决这个问题:

  1. 打开终端
  2. Type: open-e.bash _ profile (您应该会看到几乎两个环境变量: flutter 和 JAVA _ HOME)
  3. 如果愿意,可以在 textEdit 文件中保存 JAVA _ HOME 环境变量,并删除 JAVA _ HOME 环境变量。保存 bash _ profile。
  4. 再次转到终端并运行源代码 $HOME/. bash _ profile
  5. 再试一次颤振医生,你不会再看到同样的错误。

如果你有疑问,请告诉我。

我找到了这个解决方案,我下载了 JDK 8。然后将下载的 jdk 文件路径名 JAVA _ HOME 添加到用户变量的环境变量中。

正确的解决方案将是,如果你有安装 android 工作室然后

  1. 打开 SDK 管理器
  2. 在 SDK 工具下取消选中,在底部隐藏过时的软件包
  3. 然后您应该会看到一个名为 Android SDK Tools (Obsolete)的选项

enter image description here

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

enter image description here

我写这个是因为在安装颤振的挫折... 大多数问题是由简单的配置问题造成的。按照以下步骤解决您的问题。

第一步: 安卓许可证 ——安卓许可证,将解决大多数情况

既然你在这里,你已经达到“ Android 许可状态未知”的问题为 Android 工具链,许多人建议尝试 flutter doctor --android-licenses。如果您对所有配置都满意。它应该要求一个是,然后按 y 和瞧。但如果它显示

enter image description hereAndroid 的 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)并按应用程序。

enter image description here 它将安装 SDK,您可以通过检查这个路径是否存在来确认它

步骤3: 重复1

在新命令行中安装后重复步骤1检查是否正常工作,否则转到步骤4

步骤4: sdkmanager ——更新

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

步骤5: < strong > JAVA 8.1和 JAVA _ HOME 路径。

安装 JAVA 8.1并设置 JAVA _ HOME 路径。 请确保它是版本8.1(注册免费帐户和下载从甲骨文的8.1版本,记住以上11 + 不会为扑动工作 enter image description here

注释: yaniv maymon: 如果您已经在计算机和 sdkmanager 上安装了 Java,那么更新仍然无法工作。进入环境变量并更新“ JAVA _ HOME”路径到 jdk 文件夹。然后退出命令提示符,再次打开它并运行 update 命令-

步骤6: 最后一步

正确安装和设置路径后,运行 C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update 新航站楼指挥部,它将工作

步骤7: 重新运行颤振医生 , 您可以看到它说要运行命令 flutter doctor --android-licenses。所以在终端运行 flutter doctor --android-licenses,当被问到时按 y

我面临着同样的问题,就像上面提到的,我尝试了这些。

  1. 安装了 JDK 1.8并将我的 JAVA _ HOME env 设置为1.8-这不起作用
  2. 我的 Android 工作室没有展示任何“ Android SDK 工具(过时)”,但有一个“ Android SDK 工具”

这就是对我有效的方法:

  1. 从 SDK 管理器中删除“ Android SDK 工具”
  2. 重新安装它首先取消选择“隐藏过时的软件包”,然后选择“ Android SDK 工具(过时)”,安装它。
  3. 运行 flutter doctor --android-licenses并为提示选择 y
  4. 运行 flutter doctor,一切都会好起来的!

这就是我解决问题的方法。请注意,您不必卸载 Android Studio/SDK 的旧副本。当你安装最新版本的时候,安卓工作室会处理这个问题。

  1. 下载并安装 安卓工作室的最新版本
  2. 按照本 教程中的说明操作
  3. 安装完成后,运行 颤动医生并进行检查,您的问题应该已经得到解决。如果问题得到解决,就不需要运行 颤动医生,机器人执照命令。

对于那些在 Linux 上并且在 flutter doctor --android-licenses期间不断得到错误的人来说。

在尝试接受许可证时,我不断收到 无法创建设置警告,我通过指定 SDK 位置修复了这个问题:

sdkmanager --sdk_root=/home/adel/bin/android-sdk --licenses

然后打印: 接受所有 SDK 包许可证。

但是 Flutter 一直给出 机器人许可状态未知错误。如果尝试调用 flutter doctor --android-licenses,将会得到与过去相同的 无法创建设置错误。

为了解决这个问题,我编辑了位于 ${您的机器人工具位置}/tools/bin/中的 sdkmanager脚本,并将最后一行改为:

exec "$JAVACMD" "$@"

致:

exec "$JAVACMD" "$@" --sdk_root=/home/adel/bin/android-sdk

这将使 Flutter 在传递所需的 sdk _ root 参数时调用 sdkmanager,对 flutter doctor --android-licenses的最后一次调用解决了这个问题。

我不需要使用 Java8。

参考—— https://robbinespu.gitlab.io/blog/2020/03/03/flutter-issue-fixed-android-license-status-unknown-on-windows/

因此,这里的解决方案,打开您的 SDK 管理器,然后取消选中 Hide Obsolete Packages

enter image description here

现在你会看到 Android SDK Tools (Obsolete) 26.1.1出现。勾选该软件包并按 apply button然后确定按钮。它将下载 sdk。 然后是 restart Android 工作室

很好,现在如果你运行 flutter doctor,你会得到如下的正面结果

PS D:\Workplace\flutter_projects> flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, v1.12.13+hotfix.8, on Microsoft Windows [Version 10.0.18363.657], locale en-MY)


[√] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[√] Android Studio (version 3.6)
[√] VS Code (version 1.42.1)
[√] Connected device (1 available)


• No issues found!


PS D:\Workplace\flutter_projects> flutter doctor --android-licenses -v
All SDK package licenses accepted.======] 100% Computing updates...

运行 flutter doctor --android-licenses并在被要求时输入 Y

如果需要,我们可以在这里手动下载软件包 https://dl.google.com/android/repository/sdk-tools-windows-4333796.zip(对于 Windows 用户)。希望本教程对寻找解决方案的人有所帮助

我当时正面临问题。tools文件夹在 Android SDK文件夹中也不见了。我相信 tools文件夹只有在安装 Android SDL tools(obsolete之后才会出现)。我没有这个选项。

解决方案: 我将 Java从版本8升级到了版本12,并且我能够安装这些工具。在给出命令 flutter doctor -v时,仍然可能得到错误 Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses。运行命令 flutter doctor --android-licenses,当你点击 yes时,每次这个问题出现 Accept? (y/N):时,许可证将被审查

希望能帮到别人。

如果你使用 自制木桶,你可以

brew cask install android-sdk
mkdir ~/Library/Android/sdk/tools
ln -s /usr/local/bin/ ~/Library/Android/sdk/tools/bin
flutter doctor --android-licenses

对于 Windows 的人,一个短期的解决方案是降级到 JDK8。希望 flutter 能够很快解决 Android SDK 使用 > JDK8的问题。

我的环境: Windows 1064位,OpenJDK 14.0.2

初始错误如上所述。

错误后解决

  1. 将“ < strong > C: < install-file > openjdk-14.0.2 _ windows-x64 _ bin jdk-14.0.2 ”改为“ * C: Program Files Android Studio jre * ” 环境变量 PATH & JAVA _ home
  2. 运行 < strong > 扑博士——机器人许可证 并为提示选择 强大

在对我的 Ubuntu20.04做了大量分析之后,我找到了解决方案

对我来说,错误是 /home/rk/Android/Sdk/tools/bin/sdkmanager缺少 写作权限。

  1. chmod +w home/rk/Android/Sdk/tools/bin/sdkmanager

然后运行以下命令。

  1. flutter doctor --android-licenses

它自动处理许可证。

遵循以下简单步骤。

  1. 去工具,然后 SDK 管理器,然后点击 android SDK。
  2. 单击 SDK 更新站点选项卡。
  3. 选中指定使用 https://获取 https://..sources 的复选框。
  4. 点击应用和确定。
  5. 现在重启安卓工作室。
  6. 转到 SDK 工具并选中复选框,该复选框指出隐藏过时的包。
  7. 等待大约一分钟左右的包出现。
  8. 然后选择一个名为“ android SDK tools (过时)”的包,然后按 OK。
  9. 继续安装软件包。
  10. 安装后重新启动 android 工作室,也重新启动 cmd,然后运行颤振医生。
  11. 只需要几分钟,应该就可以了

只需要在 android 工作室中安装下面的 sdk 命令行工具(最新版本)。 enter image description here

然后跑: 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

然后你就可以一边喝你最喜欢的饮料一边读一堆许可证了。

在我的情况下,问题是缺少 Android SDK Command-line tools

enter image description here

即使在2021年,我也面临着同样的问题

  • 安卓工作室-北极狐2020.3.1补丁2
  • Java jdk-16.0.2
  • Android SDK Version 31.0.0
  • 颤振2.5

除了编辑 sdkmanager. bat 文件之外,我已经尝试了上面的答案,但是根本没有成功。

然后我使用“ flutter update”命令将 flutter 2.5升级到2.5.1。现在起作用了。与“扑动医生”命令没有问题。

Linux: 20.10 请确保为 ANDROID _ HOME,ANDROID _ SDK _ ROOT 设置了路径

我必须更新最新的 cmdline 工具:

path/to/sdkmanager --install "cmdline-tools;latest"

运行路径/to/sdkmanager:

which sdkmanager

然后我就可以跑了:

flutter doctor --android-licenses