【问题标题】:Jenkins giving The SDK Directory doesn't existJenkins 提供的 SDK 目录不存在
【发布时间】:2017-01-26 20:40:58
【问题描述】:

我正在尝试在 android gradle 项目上设置与 Jenkins 的持续集成

当我构建它时,我收到以下错误:

[Android Gradle Jenkins Experiment2] $ "/Users/Shared/Jenkins/Home/workspace/Android Gradle Jenkins Experiment2/gradlew" build
FAILURE: Build failed with an exception.

* What went wrong:
A problem occurred configuring project ':app'.
The SDK directory '/Users/chaz/Library/Android/sdk' does not exist.

以下是我的jenkins配置的一部分:

ANDROID_HOME
/Users/chaz/Library/Android/sdk

JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_31.jdk/Contents/Home/

我的机器是OS X El Capitan Version 10.11.6

我尝试了以下方法:

  1. 认为是权限问题,给 sdk 目录 chmod -R 777
  2. 仔细检查local.properties文件中的sdk.dir(它指向/Users/chaz/Library/Android/sdk)。
  3. 从 jenkins 配置中删除了添加回 ANDROID_HOME env 变量(没有帮助)。

当我用谷歌搜索时,我发现有人面对同样的issue。提供的解决方案如下:

解决方案

这很可能发生,因为您正在覆盖 ANDROID_HOME — 删除这样的环境自定义,然后 SDK 应该 安装好。

致谢

谢谢,是的,它是 env 变量的重叠。我已经删除了除全局之外的所有内容并将其保存在 ${ANDROID_HOME} 中。

我应该如何做除了全局之外的所有内容并将其保存在 ${ANDROID_HOME} 中。 解决方案的一部分?

编辑:我能够在具有相同 jenkins 配置的 Windows 机器上成功使用 Jenkins(我能够成功构建,也在设备中安装 apk)。

提前致谢!

【问题讨论】:

  • 闻起来像是权限问题..
  • 我不是很确定,正如我提到的,我已经为 sdk 目录尝试了 chmod -R 777
  • 是的,但如果詹金斯看不到父目录..
  • 嗯,我会在父目录中添加 chmod
  • 是的! 已修复!权限确实是问题。 第一次我在 /Users/chaz/Library/Android/ 执行了 chmod 777,但它没有用。然后我在 /Users/chaz/Library/ 运行 chmod -R 777,它工作了!您可以将评论移至答案吗?我会将其标记为已回答并投票。谢谢:)

标签: android jenkins android-gradle-plugin


【解决方案1】:

转到 Jenkins > 管理 Jenkins > 配置系统

勾选“环境变量”

添加名称:ANDROID_HOME, value -> android sdk 的完整路径,例如 /Users/{username}/Library/Android/sdk

点击应用然后保存并重试构建

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,找到了下一个解决方案:在 Jenkins 环境变量中删除 ANDROID_HOME。

    【讨论】:

      【解决方案3】:

      我只想说一下我们是如何在项目中解决这个问题的。它可能对某人有所帮助。

      我们Jenkins的工作目录在“/User/shared”下,我们的SDK在“/User/foo”下

      我们尝试向用户 foo 和所有人授予 SDK 文件夹及其父文件夹的权限,但没有成功。

      然后我们通过 Android SDK Manager 在 /user/Shared/Jenkins/Library/Android/SDK 下安装 SDK,并授予用户 foo 和每个人对新 SDK 文件夹及其父文件夹的权限。此外,我们在 Jenkins 项目配置中将 SDK 路径更改为新的。然后就可以了。

      【讨论】:

        【解决方案4】:

        在我的情况下,它发生是因为文件

        local.properties
        

        已添加到 .gitignore

        (我从远程组装)

        【讨论】:

        • 对我来说,Android/ 之后有一个额外的空格,如下所示sdk.dir=/Users/amar/Library/Android/ 。删除空间解决了问题
        【解决方案5】:

        正如@ligi 所说,这是由于权限问题。所以可以通过两种方式修复

        1. 使用终端在 ~/Library/ 路径中运行以下命令

          chmod 777
          

          /Users/username/Library/。执行ls -s命令查看权限

          所以/Users/username/Library/ 现在应该像这样显示权限:

          drwxr-xr-x@
          
        2. 第二种方法,在终端上运行以下命令以取消隐藏文件资源管理器中的库

          chflags nohidden ~/Library/
          

          现在导航并右键单击库文件夹 -> 获取信息 -> 滚动 down -> 在对话框中更改权限

          Setting permission for Library directory

        现在运行jerkin,应该可以访问Library里面的sdk目录了

        【讨论】:

          【解决方案6】:

          这听起来像是权限问题。您可能已授予 sdk-dir 权限,但未授予父目录权限。

          【讨论】:

          • @ligi 即使在给予许可后也有同样的问题。你能帮帮我吗?
          • 我使用的是 Ubuntu 系统。我已将 ANDROID_HOME 设置为位于文档目录中的自定义 android sdk 路径。当 jenkins 运行作业时,显示 sdk 目录不存在。
          • 我也通过启用环境变量。没有运气。
          • 这是我的android sdk /home/bhavdip/Documents/AndroidSdk的位置
          • drwxrwxrwx 12 bhavdip bhavdip 4096 Feb 21 15:51 AndroidSdk
          猜你喜欢
          • 2011-05-14
          • 2015-11-15
          • 2017-10-20
          • 1970-01-01
          • 2020-08-05
          • 2018-01-27
          • 1970-01-01
          • 2021-10-04
          • 1970-01-01
          相关资源
          最近更新 更多