“未能安装以下 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-28
和build-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/Home
、cd ~/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.batC:\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 & 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 软件包,因为某些许可证尚未被接受”错误的主要内容,如果未能解决你的问题,请参考以下文章