【问题标题】:Building Android Studio project on Jenkins? android.compileSdkVersion is missing在 Jenkins 上构建 Android Studio 项目? android.compileSdkVersion 丢失
【发布时间】:2015-07-14 12:22:22
【问题描述】:

我正在尝试设置我的第一个 Android 项目以在 Jenkins 上构建。

我正在运行带有 1.24 版 Gradle 插件的 Jenkins 1.6.2。在 Windows 7 Professional SP1 上运行。

我已经在我的构建机器上安装了 Android Studio 和 Java7 JDK,并且通过 Android Studio 或从命令行运行 gradlew.bat 时,软件的签出版本构建得很好。但在我的 Jenkins 工作中,我无法让 Invoke Gradle 脚本构建任务工作。

在配置项目页面上有一对单选按钮:

  • 调用 Gradle
  • 使用 Gradle 包装器

如果我选择“Invoke Gradle”,系统会要求我选择一个“Gradle 版本”,这是我在配置系统中设置的。

我创建了一个 GRADLE_HOME 设置为“D:\Program Files\Android Studio\gradle\gradle-2.2.1”的 gradle 安装。这给了我一个警告,“D:\Program Files\Android Studio\gradle\gradle-2.2.1 不是 Jenkins master 上的目录....”

当我运行构建时,我收到一个错误“无法检索 Gradle 可执行文件”。

这可能与抱怨目录的 gradle 插件有关。但是目录是正确的。我试过用'/'代替'\',没有任何区别。

由于这不起作用,我尝试了替代方案,“使用 Gradle Wrapper”。有一个复选框:“从根构建脚本目录”。无论我检查与否,我都会收到“java.lang.IllegalArgumentException: android.compileSdkVersion is missing!”

我已经设置了 JAVA_HOME 和 ANDROID_HOME,所以这不是问题。

有什么想法吗?

作为后续,我删除了 gradle 任务,并添加了一个 Execute Windows 批处理命令任务:

SET ANDROID_HOME=d:\Program Files\Android\sdk
SET JAVA_HOME=d:\Program Files\Java\jdk1.7.0_79

.\gradlew.bat clean

当我运行它时,我仍然得到那个错误。

但是当我从构建机器上的命令行运行这些命令时,它们工作得很好。

从 Jenkins 运行 gradlew.bat 时,与从命令行运行时有什么不同?当我从命令行运行时,Jenkins 服务被配置为使用与我登录时相同的用户。我已经尝试明确设置我在命令行中设置的每个环境变量,在 Jenkins 任务中,我仍然看到错误。

有什么想法吗?

【问题讨论】:

  • 我建议不要使用包装器。警告可能是问题所在。您是否已经尝试过 Jenkins 自动安装 gradle? (作业配置中的 gradle 版本可能只是“默认”。)
  • 我正在尝试使用作为 Android Studio 一部分安装的 gradle。正如我所说,我在作业配置中指定的 gradle 版本是我创建的指向作为 Android Studio 一部分安装的 gradle 的版本。
  • 我尝试过自动安装 Gradle,但在 Gradle Installations 配置中,版本下拉列表为空
  • 您的 build.gradle 中是否设置了 compileSdkVersion?这就是 Gradle 包装器所抱怨的。
  • 是的。当我从命令行运行 gradle 时,它​​可以找到它。但是当我从 Jenkins 运行它时,它不能。

标签: android jenkins gradle android-gradle-plugin


【解决方案1】:

您的 local.properties 文件必须包含: sdk.dir="你的 android sdk 的路径"

【讨论】:

  • 我的 local.properties 文件是相同的,从命令行运行时和从 Jenkins 运行时一样。
【解决方案2】:

我也在使用 jenkins 来构建我的应用程序并且遇到了类似的问题。 我通过 jenkins 执行 gradle wrapper 来修复它,而不使用 jenkins gradle 插件。

cd $WORKSPACE
./gradlew assembleRelease

如果你想使用 lint 添加第二个 shell exec

cd $WORKSPACE
./gradlew lint

请注意,这些命令适用于 linux 系统,但它们可以在 windows 上正常工作(前段时间有一个 windows 构建服务器并做了同样的事情)

【讨论】:

    【解决方案3】:

    我也遇到过这个问题,不知道我的解决方案是否适合你。

    我的情况如下,在我的项目 build.gradle 文件中:

    apply plugin: 'com.android.library'
    apply from: 'maven_push.gradle'
    
    dependencies {
        ......
    }
    
    android {
        compileSdkVersion 19
        buildToolsVersion "21.1.0"
    
        ......
    }
    

    当我运行时:gradle clean build,错误信息显示:

    * Where:
    Script 'C:\xxxxxx\Project\maven_push.gradle' line: 32
    
    * What went wrong:
    A problem occurred evaluating script.
    > android.compileSdkVersion is missing!
    

    我的解决方案是将此脚本apply from: 'maven_push.gradle'的位置更改为build.gradle文件的底部,然后BUILD SUCCESSFUL!:

    apply plugin: 'com.android.library'
    
    dependencies {
        ......
    }
    
    android {
        compileSdkVersion 19
        buildToolsVersion "21.1.0"
    
        ......
    }
    
    apply from: 'maven_push.gradle'
    

    我认为你应该注意错误命令行中的“Where”消息。

    【讨论】:

      【解决方案4】:

      我不能确定它会解决你的问题,但也许你可以考虑使用sdk-manager-plugin 直接从 gradle 下载和安装 android sdk。

      如果它起作用了,它可能不会告诉你为什么你当前的配置不起作用,但至少你不会再被卡住了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-04-16
        • 1970-01-01
        • 1970-01-01
        • 2021-12-07
        • 1970-01-01
        • 1970-01-01
        • 2013-06-03
        相关资源
        最近更新 更多