因为gradle android插件2.2-alpha4:

Gradle会尝试下载项目中缺失的SDK包 取决于

这非常酷,是杰克·沃顿的一个项目。

但是,要下载SDK库,你需要:接受许可协议,否则gradle会告诉你:

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

这是一个问题,因为我想在做gradle构建时安装所有的sdk依赖。

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


当前回答

这是个权宜之计; 1. 去C:\Users(你的用户名)\AppData\Local\Android\sdk\build-tools 2. 删除无license版本的已有文件夹。 3.转到ANDROID STUDIO并再次手动安装工具(这将给你一个接受许可的机会) …… (解决问题)

其他回答

windows操作系统:打开CMD,进入bin目录:

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

然后执行sdkmanager——licenses命令,请求接受license。

请注意,对于任何现在来问这个问题的人来说,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位。

我去了工具-> SDK管理器-> SDK工具。然后我安装了谷歌播放授权库。这就解决了问题。

如果你输入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

截至2019年7月,最简单的方法是在命令提示符中使用:flutter doctor -android-licenses。

它继续逐个显示sdk的未接受的T&C,并给你选择“y/n”的选项。全部选择y。

或者,当您运行flutter doctor时,它将运行Android工具链诊断,显示有多少许可证尚未被接受,并建议您使用——Android -licenses标志运行它。