"Failed to install the following Android SDK packages as some licences have not been accepted" 错误

"Failed to install the following Android SDK packages as some licences have not been accepted" error

我在 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 位置是其他位置时检查许可证

在版本 28.0.3 中将 android-28build-tools 一起使用;或 build-tools 版本 26.0.3.

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

目前似乎是一个错误: 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

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

根据 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

Windows:

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

颤振:

> flutter doctor --android-licenses

这对我有用:

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

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

yes | ./sdkmanager --licenses

在 Windows OS 进入你的 sdkmanager 路径然后执行

./sdkmanager.bat --licenses

您可以在 C:\Users\USER\AppData\Local\Android\Sdk\tools\bin

中找到您的 sdkmanager

对于 os 在 window os 上没有使用 android studio 的人。转到 cmdline-tools\tool\bin 并在目录框中键入 cmd 以在终端中打开目录。然后 运行 sdkmanager --licenses

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

如果您正在使用 Flutter,那么此命令绝对适合您。

flutter doctor --android-licenses

在 Mac OS 10.15.1 上,即使在 运行 sdkmanager --licenses 接受了所有许可后,我也遇到了同样的错误。它在我更新 ANDROID_HOME路径配置在~/.bash_profile到下面

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 

要添加到答案中,您还可以切换到 sdkmanager 目录和子目录 shell 并在那里接受许可

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

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

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

MacOS 卡特琳娜

第 1 步:更改 Android Studio 首选项

  1. 打开您的 Android Studio
  2. Command+, 或转到左上角的 AppBar Android Studio > 首选项
  3. 从左窗格,select 外观 > 系统设置 > Android SDK
  4. Select SDK 工具SDK 平台 旁边和 Android SDK 位置下
  5. 勾选标记 Android SDK 命令行工具(最新) 并按 确定 按钮。
  6. 等待安装完成

第 2 步(对于 Flutter 用户):

  1. 转到终端并运行以下命令

flutter doctor --android-licenses

第 2 步(对于 Android 用户):

  1. 转到终端并运行以下命令

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

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

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

转到 SDK 工具 选项卡。

Select Android SDK 命令行工具(最新) 并按 应用 下载。

Windows,您可以在

找到 sdkmanager.bat

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

我尝试了很多解决方案,但都不适合我。 以下解决方案适用于我。

在 android SDK 中找到 sdkmanager 文件。

以我为例: ~/Android/Sdk/tools/bin

走那条路:cd ~/Android/Sdk/tools/bin

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

in Windows OS 在cmd中进入你的sdkmanager路径目录

您可以在 C:\Users\USER\AppData\Local\Android\Sdk\tools\bin

中找到您的 sdkmanager

然后执行以下命令:

sdkmanager --licenses

之后它会多次要求接受许可协议,然后只需在 cmd

上输入 y 即可全部接受

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

工具 > SDK 管理器(确保选中下面的显示包)

SDK 平台 > 显示包 > Android - 28

SDK 工具 > 显示包 > 28.0.3

如果您使用的是 flutter,请执行以下步骤

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

在 Windows 上:

  1. 添加用户环境变量:

注意:应附加路径

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

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

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

(如下所示,或另一个对您失败的命令):

cd \myapp\
react-native run-android

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

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

如果您在使用 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)

然后请执行以下步骤

  1. 打开android工作室
  2. 转到 SDK 管理器
  3. 单击 SDK 工具选项卡
  4. 安装AndroidSDK命令行工具
  5. 运行 flutter doctor --android-licenses 再一次

这对我在 Windows 10:

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

之后,全部同意

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

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

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

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

问题:未接受 SDK 许可

第 1 步:打开 SDK 管理器

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

第 2 步:勾选选项 Show Package Details

会列出SDK工具的所有版本

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

从列表中检查出现问题的 SDK 工具的具体版本(对我来说,是 29.0.3,如上图第一个屏幕截图所示),在接下来打开的对话框中接受协议,您就完成了.

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

然后运行你的sdk路径下的SDK管理器bat文件: PS C:\Users[[=​​21=]]\AppData\Local\Android\Sdk\tools\bin> .\sdkmanager.bat --licenses

接受所有许可(Y)。

我是怎么解决这个问题的(AndroidStudio 4.2)

  • 单击 Build 选项卡
  • Select Failed to install the following Android SDK packages ...(警告)
  • 单击安装缺少的 SDK 包

降级到 java 8:

的单线解决方案
sudo apt-get install openjdk-8-jdk -y && export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 && flutter doctor --android-licenses

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

  1. 转到首选项
  2. 展开Appearance & Behavior
  3. 然后展开System Settings
  4. Select Android SDK 并转到 SDK Tools 选项卡
  5. 安装Google Play 许可库

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

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

对我无效Caches/Restart解决问题

文件->无效Caches/Restart

只需访问 Build.gradle(模块 Appname.app) 在这里,找到“buildToolsVersion”并将版本更改为“32.0.0”