“未能安装以下 Android SDK 软件包,因为某些许可证尚未被接受”错误

Posted

技术标签:

【中文标题】“未能安装以下 Android SDK 软件包,因为某些许可证尚未被接受”错误【英文标题】:"Failed to install the following Android SDK packages as some licences have not been accepted" error 【发布时间】:2019-06-13 20:46:49 【问题描述】:

我在 jitpack 中遇到了这个错误,我已经在互联网上尝试了所有方法。以下是我的错误

Failed to install the following android SDK packages as some licences have not been accepted.
     platforms;android-26 Android SDK Platform 26
     build-tools;28.0.3 Android SDK Build-Tools 28.0.3
  To build this project, accept the SDK license agreements and install the missing components using the Android Studio SDK Manager.

当我运行 ./sdkmanager --licenses

 All SDK package licenses accepted.======] 100% Computing updates...             

在上面的命令中使用 sudo 会给出

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

附加错误日志

File /opt/android-sdk-linux/.android/repositories.cfg could not be loaded.
Checking the license for package Android SDK Build-Tools 28.0.3 in /opt/android-sdk-linux/licenses
Warning: License for package Android SDK Build-Tools 28.0.3 not accepted.
Checking the license for package Android SDK Platform 26 in /opt/android-sdk-linux/licenses
Warning: License for package Android SDK Platform 26 not accepted.

我不知道为什么当我的 sdk 位置在其他位置时它会在那里检查许可证

【问题讨论】:

好像有点疯狂的solution here,不过可能有用! 我遇到了同样的问题。我通过 Android Studio 下载了相关的 SDK,它从来没有向我询问任何许可证。另一个不必要的问题。 我“接受”了许可证,但它一定没有保存,因为 android sdk 目录是只读的。 Chmod 777-ing sdk 目录使事情对我有用。 sudo chmod -R 0777 /opt/android-sdk @nathanfranke 这是一个很好的观点 - 如果 Android SDK 目录不可写,则许可接受不会生效。您可能还可以通过以拥有这些文件夹的用户身份运行,或者在文件夹的组所有权中运行,这取决于文件夹的安装方式。 sudo chown User -R /usr/lib/android-sdk 【参考方案1】:

在版本28.0.3 上使用android-28build-tools;或build-tools 版本为26.0.3

或试试这个:yes | sudo sdkmanager --licenses

【讨论】:

在 Windows 上,您只需运行 sdkmanager.bat --licenses 并输入 y 即可回答所有问题。【参考方案2】:

目前似乎是一个错误: https://issuetracker.google.com/issues/123054726

对我有用的解决方案:

在您的项目目录中创建一个 .travis.yml 文件并复制以下行:

before_script:
- mkdir "$ANDROID_HOME/licenses" || true
- echo "24333f8a63b6825ea9c5514f83c2829b004d1fee" > "$ANDROID_HOME/licenses/android-sdk-license"

参考: https://github.com/square/RxIdler/pull/18/files

【讨论】:

【参考方案3】:

您需要在构建之前接受许可。

根据Android SDK docs,您可以根据 sdkmanager 位置使用以下命令:--licenses 上的文档选项似乎丢失了。

yes | sdkmanager --licenses

GNU/Linux 发行版:

yes | ~/Android/Sdk/tools/bin/sdkmanager --licenses

macOS:

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
yes | ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

窗户:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses

颤动:

> flutter doctor --android-licenses

【讨论】:

我收到了这个错误Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema @HendraWD 如果您在计算机中安装了额外的 Java(注意:Android Studio 有自己的 Java),您应该确保它们具有相同的版本。否则可能会出现这个错误。我刚刚通过将“Android Studio/jre”路径设置为 JAVA_HOME 解决了它。 对于没有安装 Java 的 Mac,我必须 export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Homecd ~/Library/Android/sdk/tools/bin./sdkmanager --licenses FWIW:似乎也只支持 JDK openjdk 11 作为默认 jdk。在确定我使用的是受支持的 java 版本后,我得到了 Error: Could not create the Java Virtual Machine,我发现我必须使用 sudo 调用 sdkmanager 对于新手来说,%ANDROID_HOME% 表示安装sdk的路径【参考方案4】:

这对我有用:

yes | ./sdkmanager "platforms;android-28"

yes | ./sdkmanager "build-tools;28.0.3"

yes | ./sdkmanager --licenses

【讨论】:

对我来说效果很好(Ubuntu 19.10,IntelliJ 2019.2.4)。我只需要安装 openJDK,因为我只有嵌入式 JDK,无法从终端 sudo apt install openjdk-8-jdk 访问【参考方案5】:

在 Windows 操作系统中转到您的 sdkmanager 路径然后执行

./sdkmanager.bat --licenses

你可以在C:\Users\USER\AppData\Local\Android\Sdk\tools\bin找到你的sdkmanager

要找到您实际的 android SDK 路径,请按照下图中的红色标记区域

【讨论】:

在此之后,您可以查看每个许可证并通过相同的 bash 窗口相应地接受它们(Windows CMD 抛出错误。使用 git bash 或其他代替 windows CMD) 我试过这个,但由于 XmlSchema 的某种原因,我得到了一个 Java classdefnotfound 错误。【参考方案6】:

如果你正在使用 Flutter,那么这个命令肯定对你有用。

flutter doctor --android-licenses

【讨论】:

它不起作用。不确定时不要说绝对。【参考方案7】:

在 Mac OS 10.15.1 上,即使通过运行 sdkmanager --licenses 接受了所有许可证,我也遇到了同样的错误,在我将 ~/.bash_profile 中的 ANDROID_HOME 路径配置更新为以下内容后,它仍然有效

export ANDROID_HOME=/Users/your_username/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
export PATH=$PATH:~/Library/Android/sdk/platform-tools

然后重新加载 ~/.bash_profile

source ~/.bash_profile 

【讨论】:

【参考方案8】:

要添加答案,您还可以更改到 sdkmanager 目录和子 shell 并接受那里的许可证

(
    cd /home/user/android-sdk-linux/tools/bin
    yes | ./sdkmanager --licenses
)

【讨论】:

【参考方案9】:

我刚刚完成文件 -> 使缓存无效并重新启动 然后安装缺少的软件包。 为我工作。

【讨论】:

【参考方案10】:

您可以通过转到 SDK 管理器(设置 > [搜索 Android SDK])接受所述 SDK 的许可协议,然后找到错误消息中注明的软件包并在那里找到它们。您可能会发现尚未完全安装的 SDK,安装它们会要求您接受许可协议。

【讨论】:

感谢您,能够在 AS 中接受许可证比在命令行中乱七八糟更有意义。发挥了魅力,应该在顶部。 @dKen 没问题。感谢您的欣赏。 对我来说,SDK 也需要更新,但要让我的应用最终编译,我还需要安装 Android-SDK-Command-Line-Tools。【参考方案11】:

MacOS 卡塔利娜

第 1 步:更改 Android Studio 首选项

    打开你的 Android Studio 按 Command+, 或转到左上角的 AppBar Android Studio > Preferences。 从左窗格中,选择 外观 > 系统设置 > Android SDK 选择 SDK 平台 旁边的 SDK 工具Android SDK 位置 勾选Android SDK命令行工具(最新)并按确定按钮。 等待安装完成

第 2 步(针对 Flutter 用户):

    转到终端并运行以下命令

flutter doctor --android-licenses

第 2 步(适用于 Android 用户):

    转到终端并运行以下命令

export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home

yes | ~/Library/Android/sdk/tools/bin/sdkmanager --licenses

【讨论】:

完美且非常有用的答案。在我尝试过的所有答案和不同的解决方案中,只有这个对我有用。我正在使用 ionic 和 mac,上面的解决方案非常完美,详细的步骤非常有帮助。谢谢。 非常感谢。 Flutter 用户的第 1 步和第 2 步对我有用。我目前正在使用 macOS Big Sur 11.6 以及 Flutter 和 android studio 设置的新手。再次感谢您!【参考方案12】:

Android Studio 中转到 工具 -> SDK 管理器

转到 SDK 工具 选项卡。

选择Android SDK Command-line Tools (latest)并按Apply下载。

Windows 上,您可以在

找到 sdkmanager.bat

C:\Users\[your_user]\AppData\Local\Android\Sdk\cmdline-tools\latest\bin

【讨论】:

这是 Windows 的最佳答案!谢谢。 这也是我在 OS X 中的工作。sdkmanager 终端选项不起作用。 此解决方案适用于 Ubuntu V20.04 适用于 Windows 10。 最佳答案,在 Win11 上完美运行 :)【参考方案13】:

我尝试了很多解决方案,但都没有为我工作。 以下解决方案对我有用。

在 android SDK 中找到 sdkmanager 文件。

就我而言: ~/Android/Sdk/tools/bin

去那个路径:cd ~/Android/Sdk/tools/bin

手动接受许可证:./sdkmanager --licenses 输入是或y

【讨论】:

【参考方案14】:

在 Windows 操作系统中,在 cmd 中转到您的 sdkmanager 路径目录

您可以在 C:\Users\USER\AppData\Local\Android\Sdk\tools\bin 中找到您的 sdkmanager

然后执行如下命令:

sdkmanager --licenses

之后它会多次要求接受许可协议,然后只需在 cmd 上键入 y 即可接受所有协议

【讨论】:

【参考方案15】:

在 Android Studio 上试过,对我有用:

工具 > SDK 管理器(请务必选中下方的显示包)

SDK 平台 > 显示包 > Android - 28

SDK 工具 > 显示包 > 28.0.3

【讨论】:

【参考方案16】:

如果您使用的是颤振,请按照以下步骤操作

1.open the command prompt

然后是下面的命令

2.C:\Users\niroshan>flutter doctor

你会看到如下问题

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 1.22.2, on Microsoft Windows [Version 10.0.17763.1339], locale en-US)

[!] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    X Android licenses not accepted.  To resolve this, run: flutter doctor --android-licenses
[!] Android Studio (version 4.1.0)
    X Flutter plugin not installed; this adds Flutter specific functionality.
    X Dart plugin not installed; this adds Dart specific functionality.
[√] VS Code (version 1.50.1)
[!] Connected device
    ! No devices available

! Doctor found issues in 3 categories.

其实你要运行的是下面的命令

C:\Users\niroshan>flutter doctor --android-licenses

【讨论】:

【参考方案17】:

在 Windows 上:

    添加 USER 环境变量:

注意:应附加路径

JAVA_HOME           %ProgramFiles%\Android\Android Studio\jre
ANDROID_SDK_ROOT    %LocalAppData%\Android\Sdk
Path                %LocalAppData%\Android\Sdk
    运行以下命令接受许可:

注意:接受所有许可(比如y

%ANDROID_SDK_ROOT%/tools/bin/sdkmanager.bat --licenses
    现在运行您的应用:

(如下所示,或其他对您失败的命令):

cd \myapp\
react-native run-android

【讨论】:

【参考方案18】:

在我的情况下,在应用级别 build.gradle 中更新 buildToolsVersion 效果很好。如果您不知道要使用哪个,可以创建新项目并将 buildToolsVersion 从该项目复制到现有项目中。

【讨论】:

【参考方案19】:

在我的情况下,我刚刚在新笔记本电脑上安装了新版本的 android studio 并克隆了旧存储库,其中 buildToolsVersion "30.0.2" 在应用程序级别 build.gradle。 我刚刚升级到 android studio 自己推荐的30.0.3,问题就消失了

【讨论】:

【参考方案20】:

如果您在使用 Flutter 时遇到此错误,请在命令提示符下运行以下命令。

flutter doctor --android-licenses

如果运行上述命令后出现以下错误

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)

然后请执行以下步骤

    打开安卓工作室 转到 SDK 管理器 点击 SDK 工具标签 安装 Android SDK 命令行工具 再次运行flutter doctor --android-licenses

【讨论】:

这对我有用 这真的很有帮助【参考方案21】:

这适用于我在 Windows 10 中:

C:
cd \Users\YOUR_USER\AppData\Local\Android\Sdk\cmdline-tools\latest\bin
sdkmanager.bat --licenses

之后,所有人都同意

【讨论】:

【参考方案22】:

https://www.youtube.com/watch?v=g789PvvW4qo 真的帮助了我。所做的是打开 SDK Manager 并下载任何新的 SDK 平台(不要担心它不会影响您想要的 api 级别)。

因为下载任何 SDK 平台(API 级别),您都应该接受许可。这对我有用。

【讨论】:

【参考方案23】:

在 Android Studio 中转到:工具 > SDK 管理器 > SDK 工具

在右下角,勾选“显示包详细信息”框并下载您需要的sdk版本:

【讨论】:

【参考方案24】:

问题:SDK 许可不被接受

第 1 步:打开 SDK 管理器

打开 SDK 管理器后,打开 SDK 工具选项卡,如下图所示

第二步:勾选Show Package Details选项

它会列出所有 SDK 工具的版本

第三步:安装所需的SDK工具版本

从列表中检查抱怨的 SDK 工具的特定版本(对我来说,它是 29.0.3,如上图第一个屏幕截图所示),在接下来打开的对话框中接受协议,您就完成了。

【讨论】:

此解决方案运行良好,但其他一些解决方案不起作用。 非常感谢兄弟。这个已经在 WINDOWS 上运行了。由于这个问题,来自 udacity 教程的代码无法正常工作,您的解决方案节省了我的时间 @Dr.Mukama 欢迎您。 :) 当其他人没有时也为我工作。谢谢! 在 Apple Silicon 上为我工作【参考方案25】:

当我尝试在我的 android 设备上运行另一个项目时遇到同样的问题,我正在使用一些旧版本的 tomcat8 并且必须设置 JAVA_OPTS 变量和值。所以我删除了 JAVA_OPTS 的这个系统变量,它的变量值设置为 -Xms1024m(删除 JAVA_OPTS 系统变量,但如果您需要恢复使用可能需要它的旧项目,也可以将其存储以备将来使用)。

然后在你的 sdk 路径中运行 SDK manager bat 文件: PS C:\Users[your_pc_username]\AppData\Local\Android\Sdk\tools\bin> .\sdkmanager.bat --licenses

接受所有许可 (Y)。

【讨论】:

【参考方案26】:

我如何解决这个问题(AndroidStudio 4.2)

点击Build标签 选择Failed to install the following Android SDK packages ...(警告) 点击安装缺少的 SDK 包

【讨论】:

【参考方案27】:

降级到 java 8 的单线解决方案:

sudo apt-get install openjdk-8-jdk -y && export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 && flutter doctor --android-licenses

【讨论】:

【参考方案28】:

对于 Android Studio Arctic Fox,我通过安装 Google Play 许可库解决了这个问题。

    转到首选项 展开Appearance &amp; Behavior 然后展开System Settings 选择Android SDK 并转到SDK Tools 选项卡 安装 Google Play 许可库

【讨论】:

【参考方案29】:

Ubuntu 上使用建议的答案仍然无法正常工作。

这对我有用:

cd full-path-to-bin 文件夹,sdkmanager 所在的文件夹。

yes | ./sdkmanager --licenses --sdk_root="full-path-to-bin"

在选项--help 中,它显示我们可以将通用参数传递给它,它最终接受了所有许可证:

Usage:
...
sdkmanager --licenses [<common args>]
...
Common Arguments:
    --sdk_root=<sdkRootPath>: Use the specified SDK root instead of the SDK containing this tool

【讨论】:

【参考方案30】:

我移动了我的 Sdks 和 Avds 文件夹,因为它在本地磁盘 c 中使用了大量内存,但之后我遇到了上述问题。

对我来说,使缓存无效/重新启动解决问题

文件->使缓存无效/重新启动

【讨论】:

以上是关于“未能安装以下 Android SDK 软件包,因为某些许可证尚未被接受”错误的主要内容,如果未能解决你的问题,请参考以下文章