nsv*_*vir 415 sdk android gradle android-sdk-tools android-gradle-plugin
自从gradle android插件2.2-alpha4:
Gradle将尝试下载项目所依赖的缺失SDK包
这真是太酷了,并且被认为是一个JakeWharton项目.
但是,要下载SDK库,您需要:接受许可协议或gradle告诉您:
您尚未接受以下SDK组件的许可协议:[Android SDK Build-Tools 24,Android SDK Platform 24].在构建项目之前,您需要接受许可协议并使用Android Studio SDK Manager完成缺少的组件的安装.或者,要了解如何将许可协议从一个工作站转移到另一个工作站,请访问 http://d.android.com/r/studio-ui/export-licenses.html
这是一个问题,因为我喜欢在做一个时安装所有sdk依赖项gradle build.
我正在寻找一种自动接受所有许可证的解决方案.也许是一个gradle脚本?你有什么想法 ?
谢谢!
[编辑]
解决方案是执行:
android update sdk --no-ui --filter build-tools-24.0.0,android-24,extra-android-m2repository
Run Code Online (Sandbox Code Playgroud)
并手动安装,但这是gradle的新功能目的.
[编辑2]
更好的解决方案是使用sdkmananger:
yes | sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)
nsv*_*vir 327
AndroidSDK终于可以接受许可了.
yes | sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)
Dor*_*ori 175
我在alpha5预览中遇到过这个问题.
杰克沃顿向我指出,你现在可以使用
mkdir -p "$ANDROID_SDK/licenses"
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
echo -e "\n84831b9409646a918e30573bab4c9c91346d8abd" > "$ANDROID_SDK/licenses/android-sdk-preview-license"
Run Code Online (Sandbox Code Playgroud)
$ANDROID_HOME/license在您的机器上重新创建当前文件夹.这与错误消息链接(http://tools.android.com/tech-docs/new-build-system/license)中列出的过程具有相同的结果.
哈希是许可文本的sha1s,我想这将定期更新,所以这段代码只会工作这么久:)
并手动安装,但这是gradle的新功能目的.
我很惊讶,即使我已经通过该android工具接受了命名组件的许可证,但这并没有开箱即用,但是我指出了AS内部的SDK管理器创建了该/licenses文件夹.
我想官方工具不希望出于法律原因跳过此步骤.
重读它所述的发行说明
SDK自动下载:Gradle将尝试下载项目所依赖的缺失SDK包.
这并不意味着如果您还没有安装Android工具并且已经接受了最新的许可证,它将会起作用.
编辑:说,直到我将SDK链接到AS,它仍然无法在我的测试gubuntu框上工作.CI工作正常 - 不确定区别是什么......
bgi*_*ies 131
对于最新的Android Studio(2.3),更新/接受所有许可证的最佳方法是运行:
cd $ANDROID_HOME
tools/bin/sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)
您可能仍需要根据您的设置将许可证文件复制到其他位置.
Uts*_*haw 117
我收到此错误:
License for package Android SDK Build-Tools 30.0.2 not accepted.
Run Code Online (Sandbox Code Playgroud)
所以,我去了工具 -> SDK 管理器 -> SDK 工具。然后我安装了 Google Play 许可库。它解决了这个问题。
A. *_*ger 56
对于新的sdkmanager实用程序:
yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;24.0.3"
在yes之间有一点延迟,所以命令可能会挂起许可证显示一段时间,但它不需要人为干预.
小智 42
如果您使用的是Jenkins,则可以使用以下bash脚本作为构建过程的第一步:
(while sleep 3; do echo "y"; done) | $ANDROID_HOME/tools/android update sdk -u
Run Code Online (Sandbox Code Playgroud)
这当然会安装所有可用的更新,但如果你可以节省磁盘空间,它将节省你一些时间.睡眠是为了避免安装程序中的读取线损坏,因为在这种情况下"是"不能正常工作.
编辑:如果您使用内置的SDK管理器,还需要在构建步骤中添加"安装Android项目先决条件"插件以获取正确的$ ANDROID_HOME.
Cri*_*elo 31
这解决了我的错误
echo yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;25.0.2"
Run Code Online (Sandbox Code Playgroud)
not*_*bit 30
不幸的是,OP最初解决它的方式并不总是有效.如果从错误消息中找到了构建当前构建工具版本的内容.它可能是缺少更高版本的构建工具.在这种情况下,您需要手动启动SDK Manager并添加构建工具并接受许可.
根据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
该
android工具现已被弃用,有利于新工具sdkmanager.请参阅Joe Lawson的答案和随后的帖子,从2017年3月开始.
然后按如下方式调整命令:
android update sdk --no-ui --filter build-tools-24.0.2,android-24,extra-android-m2repository
Run Code Online (Sandbox Code Playgroud)
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高兴.因此,手动接受是唯一的解决方案,直到有人提出更好的方法.(请做!)
Roc*_*nat 30
我们在Jenkins上发现了同样的问题.有了buildToolsVersion '25.0.2',我们必须在建设之前接受许可.在我们的例子中,我们需要运行:
yes | sdkmanager --update 接受sdkmanager本身的许可证,然后
yes | sdkmanager --licenses 接受以前未接受的新许可证
请记住:使用相同的用户运行这些commans jenkins.在我的Debian中,Jenkins的用户就是jenkins.换句话说:这样做root会创建所接受的许可证root,因此Jenkins不会阅读它们.
顺便说一下,我们发现sdkmanager了/var/lib/jenkins/tools/android-sdk/tools/bin.如果你的不在,请找到它find / -name "sdkmanager"
Joe*_*son 21
该android工具已弃用,您应该使用该工具sdkmanager.sdkmanager当您第一次接受许可证文件时,它也会写入.许可证会根据您使用的SDK进行更改,即使命令也是如此
echo -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
Run Code Online (Sandbox Code Playgroud)
适用于某些系统.它不适用于所有人.某些SDK安装期望许可文件在文件中没有换行符结束,因此请尝试-n在echo命令中添加一个.
echo -n -e "\n8933bad161af4178b1185d1a37fbf41ea5269c55" > "$ANDROID_SDK/licenses/android-sdk-license"
Run Code Online (Sandbox Code Playgroud)
如果这不起作用,您可以尝试使用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"
Run Code Online (Sandbox Code Playgroud)
它会提示您接受许可.接受后,它会复制到${ANDROID_HOME}/licenses/android-sdk-license.确保您始终准确获得所使用的内容base64.
$> base64 ${ANDROID_HOME}/licenses/android-sdk-license
Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU=
Run Code Online (Sandbox Code Playgroud)
然后您可以使用base64 -d完全重新创建文件.
$> echo Cjg5MzNiYWQxNjFhZjQxNzhiMTE4NWQxYTM3ZmJmNDFlYTUyNjljNTU= | base64 -d > ${ANDROID_HOME}/licenses/android-sdk-license
Run Code Online (Sandbox Code Playgroud)
您可以验证写入的文件是否是通过在其上运行sha1sum所期望的文件.
$> sha1sum ${ANDROID_HOME}/licenses/android-sdk-license
da6b80c9c47b41c0bf7032938e7137a58a3dc249
Run Code Online (Sandbox Code Playgroud)
jk2*_*k2K 19
如果你跑yes | sdkmanager --licenses,那么我们打印的内容$ANDROID_HOME/licenses/android-sdk-license,
我们会得到这个
# cat $ANDROID_HOME/licenses/android-sdk-license
8933bad161af4178b1185d1a37fbf41ea5269c55
d56f5187479451eabf01fb78af6dfcb131a6481e
Run Code Online (Sandbox Code Playgroud)
对于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
Run Code Online (Sandbox Code Playgroud)
Jos*_*phH 16
请注意,对于目前来到这个问题的任何人来说,build-tools-24.0.2(我认为)现在已经过时了,所以你会得到:
Error: Ignoring unknown package filter 'build-tools-24.0.2'
Run Code Online (Sandbox Code Playgroud)
运行已建议安装它们的各种命令时.
解决方案是添加--all:
android update sdk --no-ui --all --filter "build-tools-24.0.2"
Run Code Online (Sandbox Code Playgroud)
此外,如果您使用32位Linux,构建工具23.0.1之后的所有内容 仅为64位,因此无法运行.32位用户坚持使用23.0.1,获得更高版本工具的唯一方法是切换到64位.
小智 13
如果你使用tools/bin/sdkmanager --licenses你仍然需要人与人之间的互动.我有使用我的gitlab CI的问题.这是我的解决方案:
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"
Run Code Online (Sandbox Code Playgroud)
echo y 如果有任何问题,我会说是,但你需要为每个安装包制作一行
r1s*_*1si 13
你也可以执行:
$ANDROID_HOME/tools/bin/sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)
在Windows中,执行:
%ANDROID_HOME%/tools/bin/sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)
小智 12
在Android Studio for Windows中,解决方法如下:
转到File-> Settings-> Appearance & Behaviour-> System Settings-> Android SDK-> SDK Tools-> 检查Google Play Licensing Library -> 单击Apply,然后Ok
安装后,构建您的应用程序。它会起作用的。
ofi*_*hai 11
有关SDK api编号25的错误消息:
android update sdk --no-ui --all --filter build-tools-25.0.1,android-25,extra-android-m2repository
对于2018年以前有这个问题的任何人都可以.以上答案对我来说根本不起作用.DID的工作是打开Android SDK - 单击工具栏上的DOWNLOAD按钮并选择相应的包.下载完成后,它将允许您接受许可协议.

我遇到了同样的问题,但发布的答案都没有帮助,因为没有tools文件夹存在Library/Android/sdk.(我在 Mac OS 10.14.4 上使用 Android 3.6.3)
以下步骤帮助我克服了许可问题错误:
Android Studiocmd + shift + A。这将打开Actions弹出窗口。SDK Manager并按回车键打开。Android SDK。除了已安装的 Android 版本之外,还可以选择其他版本的 Android。(就我而言,已经安装了 Android 10.0,所以我选择了 Android 9.0)Apply按钮。这将安装相应的 SDK。我通过使用接受的许可证文件创建公共git仓库来解决此问题.然后我在运行./gradlew构建我的项目之前,使用wget我需要的任何机器上的这些许可证进入[sdk-dir]/licenses目录.
cd $ANDROID_HOME/tools/bin
yes | ./sdkmanager --update
或者
yes | $ANDROID_HOME/tools/bin/sdkmanager --update
对于那些在命令行SDK中遇到问题的人来说,它找不到您接受的许可证的原因是因为它们已被写入$ANDROID_HOME/licenses与其所需位置不同的位置.
我发现最简单的解决方案是接受这样的许可证:
$ANDROID_HOME/bin/sdkmanager --licenses --sdk_root=$ANDROID_HOME
注意:这假设您已设置ANDROID_HOME为指向安装sdk的位置.
小智 5
在 Windows PowerShell 中,您可以执行以下操作
for($i=0;$i -lt 30;$i++) { $response += "y`n"}; $response | sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)
这更加灵活并且不需要人工干预。30 个数字是任意的,应该足以覆盖许可证接受的数量,但如果需要可以增加
小智 5
我终于在 Windows 上找到了一个解决方案,可以进行真正的静默和自动安装:
在 Windows 上,以下语法不起作用:
echo y | sdkmanager --licenses
Run Code Online (Sandbox Code Playgroud)
似乎“y”没有正确发送到批处理中调用的 java 程序。
解决方法是创建一个文件file-y.txt,其中包含多个“y”,逐行使用
call sdkmanager --licenses < file-y.txt
Run Code Online (Sandbox Code Playgroud)
这将在 licenses 目录中创建所需的文件。问题可能与Java中使用BufferedReader有关
小智 5
对于Windows,请打开cmd并bin通过运行以下命令进入目录:
cd C:\Users\username\AppData\Local\Android\sdk\tools\android\Sdk\tools\bin
Run Code Online (Sandbox Code Playgroud)
然后运行sdkmanager --licenses命令,它要求接受许可证。
| 归档时间: |
|
| 查看次数: |
307781 次 |
| 最近记录: |