自动接受所有 SDK 许可证

Automatically accept all SDK licences

提问人:nsvir 提问时间:6/29/2016 最后编辑:Vegansvir 更新时间:10/2/2023 访问量:619188

问:

从 gradle android 插件 2.2-alpha4 开始:

Gradle 将尝试下载项目中缺少的 SDK 包 取决于

这真是太酷了,众所周知,这是杰克沃顿商学院的一个项目

但是,要下载 SDK 库,您需要: 接受许可协议或 gradle 告诉您:

您尚未接受以下 SDK 的许可协议 components: [Android SDK Build-Tools 24, Android SDK Platform 24]。 在构建项目之前,您需要接受许可证 协议并完成缺失组件的安装 使用 Android Studio SDK 管理器。或者,学习如何 将许可协议从一个工作站转移到另一个工作站,转到 http://d.android.com/r/studio-ui/export-licenses.html

这是一个问题,因为我很想在做 .gradle build

我正在寻找一种自动接受所有许可证的解决方案。也许是gradle脚本? 你有什么想法吗?

android gradle android-gradle-plugin android-sdk-tools

评论

15赞 Dori 7/15/2016
您也可以在该命令前面弹出一个以自动接受许可证。在无头 CI 盒上运行时很有用:)echo y |
4赞 Jacksonkr 3/14/2017
我必须这样做,因为该工具已本地化到我的家中~/.android/tools/android update sdk --no-ui --filter build-tools-25.0.0,android-25,extra-android-m2repositoryandroid
8赞 jcsubmit 11/15/2017
sdkmanager --licenses 不再有效。我使用了--upgrade,忽略了错误,这解决了许可证问题。
7赞 adi9090 4/16/2018
我已将此命令用于 CI 环境构建脚本,并进行了小幅调整。我添加了 --sdk_root=$ANDROID_SDK_PATH。问题是许可证被接受并且没有保存到 Android SDK 根文件夹。最后命令:是 |sdkmanager --licenses --sdk_root=$ANDROID_SDK_PATH(不带 sudo)
6赞 gmc 11/8/2018
请务必设置为安装 SDK 的实际根路径(即:),或者直接放置路径(即:$ANDROID_SDK_PATH/opt/android-sdkyes | sdkmanager --licenses --sdk_root=/opt/android-sdk)

答:

185赞 Dori 7/15/2016 #1

我在预览版中遇到了这个问题。alpha5

杰克·沃顿(Jake Wharton)向我指出,您目前可以使用

mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"

在计算机上重新创建当前文件夹。这将具有与错误消息 (http://tools.android.com/tech-docs/new-build-system/license) 链接中概述的过程相同的结果。$ANDROID_HOME/license

哈希值是许可证文本的 sha1,我想它会定期更新,所以这段代码只能在这么长时间内工作:)

并手动安装它,但这是 gradle 的新功能目的。

起初我很惊讶,即使我通过该工具接受了命名组件的许可证,这也不是开箱即用的,但有人向我指出,这是 AS 内部的 SDK 管理器创建了文件夹。android/licenses

我猜官方工具出于法律原因不想跳过这一步。

重读它指出的发行说明

SDK 自动下载:Gradle 会尝试下载项目所依赖的缺失的 SDK 软件包。

这并不意味着如果您尚未安装 android 工具并且已经接受了最新的许可证,它就可以工作。

编辑:话虽如此,在我将 SDK 链接到 AS 之前,它仍然无法在我的测试 gubuntu 盒子上运行。CI 工作正常 - 不确定有什么区别......

评论

0赞 Joe Bowbeer 10/17/2016
sdkDownload 功能中存在一些小故障,例如 support-v4。它将更新组件,但 gradle 在下次调用之前不会看到更新。一种解决方法,执行 gradle 两次,一次扔掉:gradle 依赖项 || true -- code.google.com/p/android/issues/detail?id=212309
6赞 oldergod 10/17/2016
您可以使用 代替 .mkdir -p|| true
0赞 tryp 2/21/2017
它有效,谢谢你的这个故障,很高兴知道。要检查您的 SDK 路径是否按预期定义:echo $ANDROID_SDK
0赞 Dimitri L. 4/18/2017
在我的环境中,ANDROID_SDK没有定义,但它适用于ANDROID_HOME
5赞 Paul 10/17/2017
@stack_ved:我刚刚又加了一句:。但我认为你的问题隐藏在别的地方。echoecho -e "\nd56f5187479451eabf01fb78af6dfcb131a6481e" >> "${ANDROID_HOME}/licenses/android-sdk-license"
32赞 not2qubit 11/2/2016 #2

不幸的是,OP最初解决的方式并不总是有效。 如果您从错误消息中找到您的构建当前构建工具版本。可能是缺少更高版本的构建工具。在这种情况下,您需要手动启动 SDK 管理器并添加构建工具并接受许可证。

根据 OP 说明,它如下所示。

$ ./gradlew build

 
To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: https://docs.gradle.org/2.14.1/userguide/gradle_daemon.html.

FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
> You have not accepted the license agreements of the following SDK components:
  [Android SDK Build-Tools 24.0.2].

...
BUILD FAILED

注意: 2017-04-16

该工具现已弃用,取而代之的是新的 .请参阅 Joe Lawson 的回答和 2017 年 3 月及以后的后续帖子。androidsdkmanager

然后调整您的命令,如下所示:

android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Refresh Sources:
  Fetching https://dl.google.com/android/repository/addons_list-2.xml
  Validate XML
  Parse XML
  Fetched Add-ons List successfully
  Refresh Sources
  Fetching URL: https://dl.google.com/android/repository/repository-11.xml
  Validate XML: https://dl.google.com/android/repository/repository-11.xml
  Parse XML:    https://dl.google.com/android/repository/repository-11.xml
...
Error: Ignoring unknown package filter 'build-tools-24.0.2'
-------------------------------
License id: android-sdk-license-xxxxxxxx
Used by: 
 - SDK Platform Android 7.0, API 24, revision 2
  - Android Support Repository, revision 39
-------------------------------

...

November 20, 2015
Do you accept the license 'android-sdk-license-xxxxxxxx' [y/n]: y

Installing Archives:
  Preparing to install archives
  Downloading SDK Platform Android 7.0, API 24, revision 2
  Installing SDK Platform Android 7.0, API 24, revision 2
    Installed SDK Platform Android 7.0, API 24, revision 296%)
  Downloading Android Support Repository, revision 39
  Installing Android Support Repository, revision 39
    Installed Android Support Repository, revision 3999%)
  Done. 2 packages installed.

再次运行它,仍然不会让 Gradle 高兴。因此,在有人想出更好的东西之前,手动接受是唯一的解决方案。(请做!

评论

1赞 Ravimallya 1/7/2017
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository使用管理员权限通过命令提示符运行此错误修复了该错误。我无法安装phonegap插件管理器
7赞 IgorGanapolsky 11/16/2016 #3

我通过使用接受的许可证文件创建一个公共 git 存储库解决了这个问题。然后,在运行 ./gradlew 构建我的项目之前,我使用将我需要的任何机器上的这些许可证获取到 [sdk-dir]/licenses 目录中。wget

评论

0赞 Frederick Nord 11/14/2021
不幸的是,您的解决方案没有告诉我如何解决问题。您能分享一下您是如何获得“许可证文件”的吗?
0赞 IgorGanapolsky 11/15/2021
@FrederickNord许可证是从计算机上的 $ANDROID_HOME/sdk/licenses 获取的。
17赞 JosephH 11/22/2016 #4

请注意,对于目前遇到这个问题的任何人,build-tools-24.0.2(我认为)现在被认为是过时的,所以你会得到:

 Error: Ignoring unknown package filter 'build-tools-24.0.2'

在运行建议安装它们的各种命令时。

解决方案是添加:--all

android update sdk --no-ui --all --filter "build-tools-24.0.2"

此外,如果您使用的是 32 位 linux, 则构建工具 23.0.1 之后的所有内容都只有 64 位,因此不会运行。32 位用户卡在 23.0.1 上,获得更高版本构建工具的唯一方法是切换到 64 位。

评论

1赞 not2qubit 11/24/2016
是的,build-tools 刚刚被撞到了.25.0.1
1赞 spartygw 2/28/2018
您的解决方案是我唯一能找到的在用于 build-tools-16 和 gradle 25 的无头 ubuntu 4 机器上工作的东西
46赞 raven 12/29/2016 #5

如果您使用的是 Jenkins,则可以使用以下 bash 脚本作为构建过程的第一步:

(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u

这当然会安装所有可用的更新,但如果你能腾出磁盘空间,它会为你节省一些时间。休眠是为了避免安装程序中的读线断开,因为在这种情况下,“yes”无法正常工作。

编辑:如果您使用的是内置的 SDK 管理器,您还需要在构建步骤中添加“安装 Android 项目先决条件”插件以获取正确的 $ANDROID_HOME。

评论

0赞 Ashish Karpe 12/12/2017
我在 Ubuntu 上运行的 jenkins 构建中的“cordova platform add android”之前添加了您的代码行,但仍然出现以下错误:BUILD FAILED in 7s 错误:/var/lib/jenkins/workspace/qa_global_php/platforms/android/gradlew:命令失败,退出代码为 1 错误输出:FAILURE:构建失败并出现异常。* 出了什么问题:配置根项目“android”时出现问题。> 您尚未接受以下 SDK 组件的许可协议:
0赞 Ashish Karpe 12/12/2017
[Android SDK 构建工具 26.0.2]。在构建项目之前,您需要接受许可协议,并使用 Android Studio SDK 管理器完成缺失组件的安装。
0赞 Khoa Vo 1/4/2022
“睡眠是为了避免安装程序中的读线断开” <- 这是什么意思?
0赞 Nick Turner 2/4/2022
该 android 工具已弃用
11赞 ofir_aghai 2/1/2017 #6

有关 SDK API 编号 25 的错误消息:

android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository

24赞 Joe Lawson 2/3/2017 #7

该工具已弃用,您应改用。 还会在首次接受许可证文件时写入该文件。许可证会根据您使用的 SDK 而变化,因此即使命令androidsdkmanagersdkmanager

echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

适用于某些系统。它不会对所有人起作用。某些 SDK 安装希望许可文件结束时文件中没有换行符,因此请尝试在 echo 命令中添加 a。-n

echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"

如果这不起作用,您可以尝试改用 base64 编码。

因此,要发现我的许可证:

$> rm ${ANDROID_HOME}/
$> unzip tools_r25.2.3-linux.zip -d ${ANDROID_HOME}
$> ${ANDROID_HOME}/tools/bin/sdkmanager "system-images;android-23;default;x86_64"

它会提示您接受许可证。接受后,它会将其复制到 .为确保您始终准确无误地获得书面内容,请使用 .${ANDROID_HOME}/licenses/android-sdk-licensebase64

$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=

然后,您可以完全使用重新创建文件。base64 -d

$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license

您可以通过在其上运行 sha1sum 来验证写入的文件是否符合预期。

$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
61赞 A. Rager 2/9/2017 #8

对于新实用程序:sdkmanager

yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"

yes 之间有一点延迟,因此命令可能会在许可证显示一段时间的情况下挂起,但不需要人工干预。

评论

0赞 user3313834 10/20/2017
在我的安装 debian9 中,我只有一个 sdkmanager.jar:android-sdk-linux/tools/lib/sdkmanager.jar 和 # java -jar /android-sdk-linux/tools/lib/sdkmanager.jar 错误:未设置工具目录属性,请确保您正在执行android
1赞 A. Rager 11/10/2017
这是基于以下假设:您从 Google 下载了 SDK 工具作为存档,并将其解压缩到 $ANDROID_HOME 中
0赞 Marinos An 6/5/2018
这似乎是最有答案的。它似乎不再存在了。注意:要查看可以提供的可能版本列表,请执行以下操作:up-to-date--licenses$ANDROID_HOME/tools/bin/sdkmanager --list
2赞 iSWORD 7/18/2018
谢谢你的提示。我最终在我的 CI 中使用了。yes | android-sdk-linux/tools/bin/sdkmanager --licenses || true
0赞 Redmen Ishab 2/19/2019
ES |$ANDROID_HOME/tools/bin/sdkmanager “构建工具;28.0.3“ ->更改版本对我有用.谢谢!
36赞 Roc Boronat 3/20/2017 #9

我们在 Jenkins 上构建项目时发现了同样的问题。使用 ,我们必须在构建之前接受许可证。在我们的例子中,我们需要运行:buildToolsVersion '25.0.2'

yes | sdkmanager --update接受 SDKMors 本身的许可证,然后

yes | sdkmanager --licenses接受以前未接受的新许可证

请记住:使用相同的用户运行这些逗号。在我们的 Debian 中,Jenkins 用户只是 .换言之:这样做将创建接受的许可证,因此 Jenkins 将无法读取它们。jenkinsjenkinsrootroot

顺便说一句,我们发现在.如果你的不在那里,请用sdkmanager/var/lib/jenkins/tools/android-sdk/tools/binfind / -name "sdkmanager"

评论

2赞 Giordano 11/3/2017
这个也解决了我的情况(构建工具 26.0.x)中的问题,使用 Docker 中的 Jenkins。谢谢!
2赞 m0skit0 2/12/2019
不幸的是,这不包括问题的“自动”部分。
0赞 Roc Boronat 2/14/2019
@m0skit0感谢您的评论!我更新了问题以与最新版本功能相匹配,以自动接受所有许可证,而无需人工干预。
0赞 Roc Boronat 7/12/2021
@Maruf安装 Android SDK 并将其添加到路径中 :·)
3赞 surya 3/22/2017 #10

复制整个 licenses/ 目录,并将其粘贴到要构建项目的计算机上的 Android SDK 主目录中。

https://developer.android.com/studio/intro/update.html#download-with-gradle

这为我解决了问题

147赞 bgies 3/27/2017 #11

对于最新的 Android Studio (2.3),更新/接受所有许可证的最佳方式是运行:

cd $ANDROID_HOME
tools/bin/sdkmanager --licenses

您可能仍需要根据您的设置将许可证文件复制到其他位置。

评论

0赞 jnv 4/25/2017
这看起来是最好的方法,它也适用于所有平台,只需运行即可tools/bin/sdkmanager --licenses
0赞 Mirek Michalak 10/9/2017
如果你有旧的 sdk 管理器 --licenses 将不起作用。有必要将工具文件夹复制到另一个位置,然后使用 --sdk_root= 并将其指向您的 sdk 文件夹,然后您就可以将工具更新到更新的版本。
0赞 void.pointer 10/13/2017
我们可以以某种方式为自动化构建系统输入此命令吗?您并不总是可以交互式控制台访问这些计算机,因此物理上按下键盘是行不通的。yesy
1赞 stack_ved 10/17/2017
任何人都可以指导我如何实施此解决方案吗?必须在 build.sh 中添加此行吗?
1赞 Inus Saha 12/6/2017
它对我有用,但在执行此命令之前我必须这样做cd $ANDROID_HOME
15赞 Thibaut Mottet 4/28/2017 #12

如果你使用,你仍然需要有一个人际互动。我在使用我的 gitlab CI 时遇到了问题。这是我的解决方案:tools/bin/sdkmanager --licenses

wget --quiet --output-document=tools.zip https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip -qq tools.zip
echo y | tools/bin/sdkmanager "platforms;android-25"
echo y | tools/bin/sdkmanager "platform-tools"
echo y | tools/bin/sdkmanager "build-tools;25.0.2"
echo y | tools/bin/sdkmanager "extras;android;m2repository"
echo y | tools/bin/sdkmanager "extras;google;m2repository"

echo y如果有任何问题,会说是,但您需要为每个安装包制作一行

评论

0赞 Prasanna Ramaswamy 1/21/2019
几个月后仍然相当相关。谢谢。你救了我的一天:)
0赞 sebasira 1/30/2019
这对我也很有帮助,也使用 GitLab
5赞 Mark Johnson 6/3/2017 #13

在 Windows PowerShell 中,您可以执行以下操作

for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses

这更加灵活,不需要人工干预。30 个数字是任意的,应该足以覆盖许可证接受的数量,但如果需要,可以增加

评论

0赞 Chris 5/26/2023
很好的答案,这在 2023 年仍然对我有用。运行上面的命令允许我接受所有许可证,然后我能够使用 sdkmanager 安装我需要的所有软件包,而不会出现问题。
36赞 Cristian Agudelo 8/14/2017 #14

这解决了我的错误

echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"

评论

2赞 Jonathan Hall 5/28/2018
要保存几个字符,请执行相同的操作。yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
544赞 6 revs, 5 users 26%nsvir #15

2021 年更新 这应该是公认的答案,因为它简单且最新


AndroidSDK 终于可以接受许可证了。

转到Android\sdk\tools\bin

yes | sdkmanager --licenses

编辑:

正如 @MoOx 的评论中指出的那样,在 macOS 上,您可以做到

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

正如 @pho、@mikebridge 和 @ Noitidart 在 Windows 上的评论中指出的那样,您可以做到

cmd.exe /C"%ANDROID_HOME%\tools\bin\sdkmanager.bat --licenses"

请务必先安装 java

评论

8赞 Noitidart 12/26/2017
在 Widows 上,我不得不转到“运行”,然后它弹出一个 GUI,然后安装丢失,然后在弹出的新对话框中单击“接受 Liscenses”。C:\Users\x1\AppData\Local\Android\sdk\tools\android
18赞 Mehmed Mert 1/23/2018
这不适用于 linux。tools/bin 目录下或其他地方没有 sdkmanager 文件。你能帮忙吗?
46赞 MoOx 1/30/2018
在 macOS 上,您可以做到yes | sudo ~/Library/Android/sdk/tools/bin/sdkmanager --licenses
6赞 Howard Swope 3/8/2018
如何自动接受来自 gradle 包装器的许可证?
9赞 coder 10/1/2018
对路径的@Noitidart投票,但它不起作用,我不得不从命令提示符运行 C:\Users\x1\AppData\Local\Android\sdk\tools\bin\sdkmanager --licenses 并按“y”+ Enter 进入提示符
19赞 jk2K 10/11/2017 #16

如果运行,则我们打印的内容,yes | sdkmanager --licenses$ANDROID_HOME/licenses/android-sdk-license

我们会得到这个

# cat $ANDROID_HOME/licenses/android-sdk-license

8933bad161af4178b1185d1a37fbf41ea5269c55

d56f5187479451eabf01fb78af6dfcb131a6481e

对于 GitLab CI,要接受 Android SDK Build-Tools 26.0.2 许可证,您需要运行此许可证

before_script:
  - mkdir -p $ANDROID_HOME/licenses
  - echo "8933bad161af4178b1185d1a37fbf41ea5269c55" > $ANDROID_HOME/licenses/android-sdk-license
  - echo "d56f5187479451eabf01fb78af6dfcb131a6481e" >> $ANDROID_HOME/licenses/android-sdk-license

评论

0赞 Ryan R 10/12/2017
你的第二个回声也是一样的,这是故意的吗?即。附加$ANDROID_HOME/licenses/android-sdk-license
1赞 jk2K 10/12/2017
@RyanR,是的,第二个回显正在追加,添加了一个新的许可证 SHA1 字符串Android SDK Build-Tools 26.02
0赞 Ridcully 10/12/2017
我正在使用 bitbucket 管道,但概念似乎与 GitLab CI 相同。您的回答帮助我更好地理解了整个过程。谢谢!
0赞 Ryan R 10/13/2017
@Ridcully我也在使用 Bitbucket Pipelines,当我们升级到并且我们的构建坏了时,我发现自己在这里。我的最终解决方案是简单地做.不需要,这是未来的证明。Build-Tools 26.0.2yes | sdkmanager --licensesecho
0赞 Ridcully 10/13/2017
@Ryan 你的意思是我可以加上'是 |sdkmanager --licenses' 添加到pipeline.yml?那太好了!
6赞 Jimmy KD 11/7/2017 #17

cd $ANDROID_HOME/tools/bin yes | ./sdkmanager --update

yes | $ANDROID_HOME/tools/bin/sdkmanager --update

评论

0赞 m0skit0 2/12/2019
“自动”
3赞 A.L 11/16/2017 #18

我在使用 Cordova 时遇到了同样的错误。

问题是由于我通过 Android Studio 和 .Cordova 调用的是安装的文件,而不是我的主目录中的文件。aptapt install android-sdk adbapt

一旦我在 bash 中更改了 SDK 的路径,它就起作用了:

# Change path
export ANDROID_HOME="$HOME/Android/Sdk/"
echo "Android home = $ANDROID_HOME"
# Accept licenses
eval "${ANDROID_HOME}/tools/bin/sdkmanager --licenses"
# Run Cordova
cordova build android

然后我删除了不再使用的系统文件:.apt remove android-sdk adb

5赞 moobyfr 1/31/2018 #19

我终于在 Windows 上找到了一个解决方案,可以进行真正的静默和自动安装:

在 Windows 上,以下语法不起作用:

echo y | sdkmanager --licenses

似乎“y”没有正确发送到批处理中调用的 java 程序。

解决方法是创建一个带有多个“y”的文件文件-y.txt逐行,然后使用

call sdkmanager --licenses < file-y.txt

这将在许可证目录中创建所需的文件。该问题可能与在 Java 中使用 BufferedReader 有关

14赞 user2967081 2/20/2018 #20

对于截至 2018 年有此问题的任何人来说,都很好。上面的答案对我根本不起作用。DID的工作是打开Android SDK - 单击工具栏上的“下载”按钮并选择适当的软件包。完成下载后,它将允许您接受许可协议。

enter image description here

15赞 r1si 3/27/2018 #21

您也可以只执行:

$ANDROID_HOME/tools/bin/sdkmanager --licenses

在 Windows 中,执行:

%ANDROID_HOME%/tools/bin/sdkmanager --licenses
7赞 sksamuel 3/31/2018 #22

对于那些对命令行 SDK 有问题的人来说,它找不到你接受的许可证的原因是它们已被写入与它们需要的位置不同的位置。$ANDROID_HOME/licenses

我发现最简单的解决方案是接受这样的许可证:

$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME

注意:这假定您已将指向 SDK 的安装位置。ANDROID_HOME

4赞 Aymen Boumaiza 6/1/2018 #23

我在 Windows 10 机器上尝试了上述所有命令 但解决方案是使用 SDKMANAGER 来检查和接受许可证购买安装缺少的版本

enter image description here

评论

0赞 deanwilliammills 11/8/2019
没有一个CMD命令对我有用,只有这个解决方案。谢谢
4赞 Youngjae 1/21/2019 #24

这是我的Docker设置。
您可以从普通的 Linux 环境中进行操作。

请注意 and 子句。
它似乎恢复了协议,所以出现了两次。
yes |--licenses --sdk_root=${ANDROID_HOME}sdkmanager --updateyes |

FROM openjdk:8
# Install dev-essential(gnumake)
RUN apt update
RUN apt install -y build-essential
# Set ENV
ENV SDK_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip" \
    ANDROID_HOME="/usr/local/android-sdk" \
    ANDROID_VERSION=28 \
    ANDROID_BUILD_TOOLS_VERSION=28.0.3 \
    GRADLE_VERSION=4.10.3 \
    NDK_VERSION=r16b
# Download Android SDK
RUN mkdir "$ANDROID_HOME" .android \
    && cd "$ANDROID_HOME" \
    && curl -o sdk.zip $SDK_URL \
    && unzip sdk.zip \
    && rm sdk.zip \
    && yes | $ANDROID_HOME/tools/bin/sdkmanager --licenses --sdk_root=${ANDROID_HOME}
# Install Android Build Tool and Libraries
RUN $ANDROID_HOME/tools/bin/sdkmanager --update
RUN yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS_VERSION}" \
    "platforms;android-${ANDROID_VERSION}" \
    "platform-tools" --sdk_root=${ANDROID_HOME}
# Install Gradle
RUN wget https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
RUN mkdir /opt/gradle
RUN unzip gradle-${GRADLE_VERSION}-all.zip -d /opt/gradle
ENV PATH=${PATH}:/opt/gradle/gradle-${GRADLE_VERSION}/bin
# Install NDK
RUN wget https://dl.google.com/android/repository/android-ndk-${NDK_VERSION}-linux-x86_64.zip
RUN mkdir /opt/ndk-bundle
RUN unzip android-ndk-${NDK_VERSION}-linux-x86_64.zip -d /opt/ndk-bundle
ENV PATH=${PATH}:/opt/ndk-bundle

RUN mkdir /application
WORKDIR /application

评论

0赞 cephus 1/23/2019
“似乎 sdkmanager --update 恢复了协议,所以是的 |出现了两次。哇,你是对的。这是非常令人沮丧的,但很好发现。
6赞 Deepak Kumrawat 6/9/2019 #25

对于 Windows,打开 Cmd 并通过运行命令进入目录:bin

cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin

然后运行命令,它要求接受许可证。sdkmanager --licenses

评论

1赞 mynameisjohnj 6/9/2019
谢谢,这就是我所做的
0赞 deanwilliammills 11/8/2019
我明白了Error: Unknown argument --licenses
9赞 Jayprakash Dubey 4/26/2020 #26

注意:这仅适用于 Mac 用户

我遇到了同样的问题,但发布的答案都没有帮助,因为没有文件夹(我在 Mac OS 3.6.3 上使用 Android 10.14.4)toolsLibrary/Android/sdk.

error screenshot

以下步骤帮助我克服了许可问题错误:

  1. 打开Android Studio
  2. 压。这将打开弹出窗口。cmd + shift + AActions
  3. 搜索并按回车键打开。SDK Manager
  4. 这将打开弹出窗口。除了已安装的 Android 版本之外,选择其他版本的 Android。(就我而言,已经安装了Android 10.0,所以我选择了Android 9.0)Android SDK
  5. 然后选择按钮。这将安装相应的 SDK。Apply

Solution

  1. 现在运行您的应用程序,它应该可以毫无例外地工作。

success screenshot

4赞 AVISHEK GARAIN 8/30/2020 #27

从此链接下载 SDK 管理器。然后解压缩并在终端中使用以下命令。

!tools/bin/sdkmanager --sdk_root=/usr/lib/android-sdk --licenses <<< $'y\ny\ny\ny\ny\ny\ny\n'

评论

0赞 asozcan 2/21/2023
这部分在我这边起到了作用。谢谢伙计!<<< $'y\ny\ny\ny\ny\ny\ny\n'
300赞 Utshaw 12/20/2020 #28

我收到此错误:

License for package Android SDK Build-Tools 30.0.2 not accepted.

所以,我去了工具->SDK管理器->SDK工具。然后我安装了 Google Play 许可库。它解决了这个问题。

enter image description here

评论

1赞 Michael 2/1/2021
恐怕我不得不不同意@AminPinjari和塞德里克的观点,这对我来说并没有太大的区别。
0赞 Honza 2/21/2021
您不必重新安装所有内容 - 运行就足够了android-sdk/tools/bin/sdkmanager --licenses
1赞 Kane Cheshire 8/3/2021
我不明白为什么全新安装AS需要这样做,但我很高兴这个答案存在!我刚刚安装了这个,然后做了一个 gradle 同步,一切都很棒。
1赞 Kenneth Murerwa 8/15/2021
我在使用 Windows PC 时发现并使用了这个解决方案来解决我的问题。我转移到Mac,发现了同样的问题,相同的解决方案再次解决了我的问题。这是截至 2021 年的最佳答案。
1赞 Torsten Bronger 2/13/2022
命令行上的等效项是什么?
7赞 dsolutions creations 10/11/2021 #29

我去了 Tools -> SDK Manager -> SDK Tools。然后我安装了 Google Play 许可库。它解决了这个问题。

评论

1赞 Deepak Ghadi 12/17/2021
对于 MacOS,这有效
0赞 Markers 1/20/2022
对于蒙特雷来说,公认的答案似乎行不通,所以这个是必需的!
12赞 shaikh nifa 11/9/2021 #30

在 Android Studio for Windows 中,解决方案如下:

转到 -> -> -> -> -> -> 选中 -> 单击 ,然后FileSettingsAppearance & BehaviourSystem SettingsAndroid SDKSDK ToolsGoogle Play Licensing LibraryApplyOk

安装后,生成应用程序。它会起作用的。

评论

0赞 David Corral 11/12/2021
成功了!欢迎来到社区:-)