flatter.io android许可证状态未知

kyks70gy  于 2021-06-30  发布在  Java
关注(0)|答案(13)|浏览(414)

[!] 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 runtime environment(build 1.8.0\u 152-release-1024-b02)x android许可证状态未知。
当我运行flatter doctor时,android sdk出现了一个错误,尽管我仍然可以在我的设备上构建/运行它。我只是好奇如何解决这个问题。我相信我已经下载了最新版本的androidsdk,不知道发生了什么,因为我上周没有这个问题。

新问题在评论中经过几个可能的修复之后,它导致了一个新问题。我安装了新版本的androidsdkp、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:\flatter\flatter>c:\users\username\appdata\local\android\sdk\tools\bin\sdkmanager.bat--更新

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
3ks5zfa0

3ks5zfa01#

这也是我的问题,和16025一样
对于线程“main”java.lang.noclassdeffounderror:javax/xml/bind/annotation/xmlschema中的异常,当您以前安装过Java9时,此问题似乎通常会发生。顺便说一句,它与androidsdk不兼容。如果java9jdk仍然存在,请尝试删除它。
一般来说,jaxbapi被认为是javaeeapi,因此不再包含在javase9的默认类路径中。Java9引入了模块的概念,默认情况下,java.se聚合模块在类路径(或者更确切地说,模块路径)上可用。顾名思义,java.se聚合模块不包括传统上与Java6/7/8捆绑在一起的JavaEEAPI。幸运的是,jdk6/7/8中提供的这些javaeeapi仍然在jdk中,但它们只是默认情况下不在类路径上。以下模块提供了额外的javaeeapi
如果安装了java9/10,解决方案
在编辑器中打开sdkmanager。
附加默认值\u jvm\u 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'

保存文件并退出编辑器,然后再次尝试运行命令。
对于android许可证状态未知的问题,我尝试通过以下步骤来解决:
打开终端
转到android sdk位置c:\users%user%\appdata\local\android\sdk\tools\bin或~/library/android/sdk/tools/bin
运行命令:./sdkmanager--license
参考文献
无法使用java 9运行sdkmanager--list(android sdk)
如何解析java.lang.noclassdeffounderror:Java9中的javax/xml/bind/jaxbeException

0mkxixxg

0mkxixxg2#

对于那些使用linux并且在运行过程中不断出现错误的用户 flutter doctor --android-licenses .
在尝试接受许可证时,我不断收到“无法创建设置”警告,我通过指定sdk位置修复了该警告:

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

sdkmanager随后打印:接受所有sdk包许可证。
然而,flatter不断给出android许可证状态未知的错误。试图打电话 flutter doctor --android-licenses 会给我同样无法创建设置的错误,我用得到。
为了解决这个问题,我编辑了 sdkmanager 脚本位于${your android tools location}/tools/bin/并将最后一行更改为:

exec "$JAVACMD" "$@"

收件人:

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

这将使flatter调用sdkmanager,同时传递所需的sdk\u root参数,这是对的最后一个调用 flutter doctor --android-licenses 解决了这个问题。

okxuctiv

okxuctiv3#

只需在androidstudio中安装下面的sdk命令行工具(最新版本)。

lymgl2op

lymgl2op4#

以下是我的解决方案:
安装sdkman $ curl -s "https://get.sdkman.io" | bash 设置bash\u配置文件
$ source "$HOME/.sdkman/bin/sdkman-init.sh $ source ~/.bash_profile 找到java sdk,然后选择“要安装的版本”
$ sdk ls java $ sdk install java 8.0.192-zulu 复制Flutter医生警告消息以更新sdkmanager $ /Users/YourUserName/Library/Android/sdk/tools/bin/sdkmanager --update 1~4秒后,重做 $ flutter doctor --android-licenses

h9a6wy2h

h9a6wy2h5#

如果您更新了android sdk,许可证可能已经更改。根据更新的方式,可能会提示您接受更改,也可能不会提示您接受更改,也可能只是以flifter可以理解的方式保存了您接受更改的事实。
若要解决此问题,请尝试运行

flutter doctor --android-licenses

这将提示您接受许可证(如果只是键入 y 然后按回车键(尽管它会告诉你)。
如果这样做之后仍然有问题,那么在flattergithub存储库中打开一个新的bug,或者添加一个对现有问题的评论,就像您看到的那样。

bvhaajcl

bvhaajcl6#

以下是解决问题的步骤:
打开终端
类型 flutter doctor --android-licensesy 要接受,此过程可能会发生多次。完成!

dm7nw8vv

dm7nw8vv7#

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%
hmae6n7t

hmae6n7t8#

macos 10.15:android studio 3.5.1:
我的解决方案是使用java环境工具 jenv (通过自制软件安装)。当在java版本之间切换时,此工具会更改$java\u home。
在我的例子中,我安装了多个java版本,当前使用的全局版本是默认版本。我还发现有必要在我的文档中注解掉$java\u home环境变量 .bash_profile 使用此工具时。
在候机楼,我进去了 jenv global 1.8 为了让Java1.8运行而不是更高版本(我安装了多个版本)。
之后: flutter doctor --android-licenses 或者 sdkmanager --licenses 两者都很好。
注意:如果必须重新定义$java\u home环境变量,则可能需要退出并重新打开终端shell。

lh80um4z

lh80um4z9#

参考--https://robbinespu.gitlab.io/blog/2020/03/03/flutter-issue-fixed-android-license-status-unknown-on-windows/
因此,在这里的解决方案,打开您的sdk管理器,然后取消选中 Hide Obsolete Packages
现在你会明白的 Android SDK Tools (Obsolete) 26.1.1 出现。勾选那个包裹然后点击 apply button 然后单击“确定”按钮。它将下载sdk。那么 restart 安卓工作室
很好,现在如果你跑的话 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用户)。希望本教程能帮助那些寻找解决方案的人

q9rjltbz

q9rjltbz10#

我发现这个解决方案是为了使用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 ,以及任何其他行为良好的脚本,然后将使用androidstudio2.2+附带的sdk版本。

  • 我的mac仍然使用默认的Java7。
muk1a3rh

muk1a3rh11#

我写这个是因为在安装Flutter沮丧。。。大多数问题都是由简单的配置问题引起的。按照以下步骤解决问题。
第一步:android许可证——android许可证,可以解决大多数情况
既然你在这里,你已经达到了android工具链的“android许可证状态未知”问题,正如许多人建议的那样 flutter doctor --android-licenses . 如果你擅长所有的配置。它应该请求“是”,然后按“是”和“瞧”。但如果它显示出

未找到android sdkmanager工具 (C\Users\__\local\Android\sdk\tools\bin\sdkmanager) . 转到第二步
第2步:从android studio安装sdk管理器
打开你的android工作室, File-> settings->System settings(left tab) ->Android SDK,SDK Tool section 在该页面中,取消选中隐藏过时的包,然后选择 Android SDL tools(obsolete) 然后按apply。

它将安装sdk,您可以通过检查此路径是否存在来确认它 (C\Users\__\local\Android\sdk\tools\bin\sdkmanager) 第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没有安装或版本不正确。转到下一步
步骤5:Java8.1和JavaU主路径。
安装Java8.1并设置Java8.1的主路径。确保它是版本8.1(注册免费帐户并从oracle下载8.1版本,记住以上11+不会为Flutter工作

注意:如果您的计算机上已经安装了java,并且sdkmanager——更新仍然不起作用。转到环境变量并将“javahome”路径更新到jdk文件夹。然后退出命令提示符,再次打开并运行update命令-
第六步:最后一步
正确安装和设置路径后,运行 C\Users\__\local\Android\sdk\tools\bin\sdkmanager --update 命令在新的终端,它将工作
第7步:重新运行flatter-doctor,您可以看到它说要运行命令 flutter doctor --android-licenses . 所以快跑 flutter doctor --android-licenses 在终端中,询问时按y

myss37ts

myss37ts12#

正确的解决方案是安装androidstudio
打开sdk管理器
在sdk工具下,取消选中底部的隐藏过时包
然后您应该看到一个名为 Android SDK Tools (Obsolete)
检查并申请,让工作室下载包
完成后运行命令 flutter doctor 现在它应该提示您运行 flutter doctor --android-licenses 运行license命令后,按y键接受所有许可证,应该可以解决问题

py49o6xq

py49o6xq13#

错误:

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版本与java 9不兼容。
因此,要解决这个问题,您可以将java版本降级为java 8,或者通过解决方法,您可以在终端上导出以下选项:
linux操作系统:

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

Windows:

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

为了保持一致,您可以在linux上导出概要文件中的java\u选项( .zshrc , .bashrc 等)或在windows上永久添加为环境。
然后,可以键入flatter或sdkmanager命令:
Flutter:

flutter doctor --android-licenses

SDK管理员:

sdkmanager --licenses

并在需要接受许可证时键入y。
另外,这对没有JavaEE模块的Java11/11+不起作用。对于这个选项是一个好主意,降级您的java版本或等待flutter更新。
参考:jdk 11:javaee模块之路的尽头

相关问题