📌  相关文章
📜  颤振医生 --android-licenses 错误 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:28:56.858000             🧑  作者: Mango

颤振医生 --android-licenses 错误

最近在使用Flutter开发Android应用的过程中,有些开发者可能会遇到“颤振医生 --android-licenses 错误”的问题,这个问题主要是由于Android SDK许可证没有同意引起的。在这篇文章中,我们将会详细讲解如何解决这个问题。

问题描述

当你在运行flutter doctor时,你可能会看到如下错误:

颤振医生 --android-licenses 错误

Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
        at com.google.devtools.build.android.desugar.Desugar.main(Desugar.java:809)
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 1 more
Error: A problem occurred configuring project ':app'.
> Failed to install the following Android SDK packages as some licences have not been accepted.
     platforms;android-28 Android SDK Platform 28
To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.
Alternatively, to transfer the license agreements from one workstation to another, see http://d.android.com/r/studio-ui/export-licenses.html

Using Android SDK: /Users/xxxxx/Library/Android/sdk

这个错误告诉我们,我们需要同意Android SDK的许可证协议才能继续开发。

解决方案

为了解决这个问题,我们需要同意Android SDK的所有许可证协议。

通过脚本同意Android SDK许可协议

首先,我们可以使用以下脚本来自动同意所有Android SDK的许可证协议。

flutter doctor --android-licenses

当你运行这个命令时,你将会被提示同意所有许可证协议。按下y即可完成同意。

手动同意Android SDK许可协议

如果你不想使用脚本或者你遇到了其他问题,你也可以手动同意Android SDK的许可证协议。

首先,你需要进入到Android SDK的目录中。在我的电脑上,这个目录是/Users/xxxxx/Library/Android/sdk。你可以根据你自己的电脑来确定这个目录的位置。

然后,进入到tools/bin目录,并运行以下命令。

./sdkmanager --licenses

你将会看到所有的许可证协议。按下y即可同意所有协议。这个过程可能会比较繁琐,但是这是必须的。

结论

在本文中,我们讲解了如何解决“颤振医生 --android-licenses 错误”的问题。无论你是选择使用脚本或者手动同意协议,都需要同意所有的许可证协议。这个过程可能会比较繁琐,但是这是必须的。