【问题标题】:Gradle won't pick up Android build tools unless opened in Android Studio除非在 Android Studio 中打开,否则 Gradle 不会选择 Android 构建工具
【发布时间】:2017-11-15 14:24:16
【问题描述】:

我正在 Jenkins 中的 Windows 构建服务器上准备一个 Android 构建管道。 Jenkins 使用了许多工作空间,并且经常会重复使用它们。我注意到,当 Jenkins 重新使用工作区时,没有任何问题,并且构建完美无缺。但是当它第一次签出一个新的工作空间时,gradle 包装器抱怨它无法安装 Android 构建工具。构建工具(确切版本)已安装。

我可以打开另一个旧工作区并在其中运行 gradle 构建,它运行良好,然后使用相同的登录名和完全相同的cmd 会话,转到新工作区并运行相同的命令,它会抱怨它无法安装 Android 构建工具。

关于 Android 配置的说明:我将 Android SDK 存储在 C:\android-sdk\ 中,并已授予每个用户对该目录的访问权限。 ANDROID_HOME 和 ANDROID_SDK 设置为系统范围的变量。这是最方便的解决方案 - 这样,每个登录的用户(无论是域帐户还是其他)都(理论上)能够立即构建解决方案,而无需设置自己的 SDK,而且我们最终不会得到很多重复的 SDK 数据。

我可以通过在 Android Studio 中打开工作区文件夹来手动解决此问题。仅仅这样做似乎可以解决问题。我的假设是项目元数据中有一个缓存值告诉 gradle 在哪里可以找到 Android 构建工具,当我打开 Android Studio 时它会更新这个值。

显然,这种变通方法是不够的,因为构建需要在没有人工干预的情况下每次都始终如一地工作。有什么命令可以用来刷新这个缓存吗?或者可能是一些不应该被检入到 git 中的配置文件?

【问题讨论】:

    标签: android jenkins gradle android-gradle-plugin


    【解决方案1】:

    想通了。 Gradle 按优先级在两个地方查找您的 SDK:首先,它检查 local.properties 文件是否指定了 SDK。然后,它会尝试 ANDROID_HOME(不是 ANDROID_SDK)系统变量。在 Android Studio 中打开一个文件夹会生成 local.properties 文件,这就是该变通办法奏效的原因。

    我没有 local.properties 文件,但我的 ANDROID_HOME 设置为 Android Studio 安装文件夹,而不是 Android SDK。当我将它移到 SDK 并重新启动 Jenkins 代理服务时,它就可以工作了。

    【讨论】:

      猜你喜欢
      • 2013-08-14
      • 1970-01-01
      • 2018-08-05
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2017-10-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多