android: 自动接受 gradle 的 SDK 自动下载许可

Posted

技术标签:

【中文标题】android: 自动接受 gradle 的 SDK 自动下载许可【英文标题】:android: automatically accept licence for gradle's SDK auto-download 【发布时间】:2017-01-29 16:42:25 【问题描述】:

有这个线程 (Automatically accept all SDK licences) 和现已弃用的库 (https://github.com/JakeWharton/sdk-manager-plugin) 解决了更新(CI 服务器)系统的问题,这些系统解决了这个问题,但不再需要它们......


在当前版本的 android-tools(我认为是 v2.2.0 之后)中,gradle 会自动下载所需的 SDK、构建工具等(这会很棒)。

在我的情况下,gradle 似乎为我下载了一个新的 build-tools-version(因为我更改了代码中的依赖项)但它停止了,因为我没有接受许可证。

* 出了什么问题: 配置项目 ':app' 时出现问题。 > 您尚未接受以下 SDK 组件的许可协议: [Android SDK Build-Tools 24.0.2].

在构建项目之前,您需要接受许可协议并使用 Android Studio SDK 管理器完成缺失组件的安装。

或者,要了解如何将许可协议从一个工作站转移到另一个工作站,请访问http://d.android.com/r/studio-ui/export-licenses.html

~ 问题是,我需要做什么才能完成这项工作?


PS:这是我在 CI 服务器上的调用:

./gradlew clean assembleDebug

【问题讨论】:

The instructions 看起来相当简单。你遇到什么问题?您没有 CI 服务器上 licenses/ 目录的写入权限吗? 如果我做对了,许可证可能会在每次更新时更改,因此它会再次停止。我正在寻找“gradlew”的某种参数,例如“自动下载 SDK 时自动接受许可证”。 Google 极不可能提供此恕我直言。 所以当我手动构建时它会下载所需的东西很好,但我不能在我的 CI 服务器上使用它,对吗? 我尝试了echo "y" 的东西,但它不起作用。它给了我一个Unknown response ''。在另一个问题中,有一条评论说会有一个标志--accept-license,但它似乎仍然不可用。因此,如果不手动处理许可证,这里就没有进展(顺便说一句:ubuntu 上的 license-文件夹在哪里)? 【参考方案1】:

$ANDROID_HOME/licenses 是许可证文件夹的位置。

请参阅https://***.com/a/38381577/901597 了解在 CI 机器上配置此文件夹的命令。

【讨论】:

该文件夹不存在。它仅使用 SDK 更新管理器的 UI 版本创建。如果尝试从命令行安装 sdk 组件,则永远不会创建该文件夹。

以上是关于android: 自动接受 gradle 的 SDK 自动下载许可的主要内容,如果未能解决你的问题,请参考以下文章

com.android.tools.build:gradle:1.1.0 怎么升级

如何在 Maven 项目中自动接受 Gradle Build Scan ToS?

自动将视频文件保存到 Android SD 卡

Android Gradle 插件Gradle 自动化构建 ① ( Gradle 构建工具简介 | Gradle 构建工具用途 )

android--jenkins+gradle+android自动化构建apk步骤(转)

Android Studio之Gradle自动化构建打包