Jenkins提供SDK目录并不存在

时间:2016-09-19 08:19:47

标签: android jenkins android-gradle

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

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

[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. 仔细检查sdk.dir文件中的local.properties(它指向/Users/chaz/Library/Android/sdk)。
  3. 从jenkins配置中删除了添加的ANDROID_HOME env变量(没有帮助)。
  4. 当我用Google搜索时,我发现有人面对同一个issue。提供的解决方案如下:

    解决方案

      

    最有可能发生这种情况,因为你重写了ANDROID_HOME -   删除类似的环境自定义,然后SDK应该   安装好。

    确认

      

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

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

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

    提前致谢!

6 个答案:

答案 0 :(得分:16)

这闻起来像许可问题。您可能已授予sdk-dir但不授予父目录的权限。

答案 1 :(得分:3)

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

local.properties

已被添加到.gitignore

(我从远程组装)

答案 2 :(得分:2)

我只想说一下我们如何在项目中解决此问题。它可能会帮助某人。

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

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

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

答案 3 :(得分:1)

正如@ligi所说,由于许可问题。所以它可以通过2种方式修复

  1. 使用终端

    在〜/ Library / path中运行以下命令
    chmod 777
    

    /Users/username/Library/。通过执行ls -s命令

    检查权限

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

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

    chflags nohidden ~/Library/
    

    所以现在导航&右键单击Library文件夹 - >获取信息 - >滚动 下来 - >更改对话框中的权限权限

    Setting permission for Library directory

  3. 现在运行jerkin,它应该能够访问Library

    中的sdk目录

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

检查“环境变量”

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

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