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 Gradle 插件Gradle 自动化构建 ① ( Gradle 构建工具简介 | Gradle 构建工具用途 )