首页 文章

在Jenkins上构建Android Studio项目? android.compileSdkVersion丢失了

提问于
浏览
13

我正在尝试 Build 我的第一个Android项目来构建Jenkins .

我正在使用Gradle插件的1.24版本运行Jenkins 1.6.2 . 在Windows 7 Professional SP1上运行 .

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

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

  • 调用Gradle

  • 使用Gradle Wrapper

如果我选择“Invoke Gradle”,我会被要求选择“Gradle Version”,这是我在Configure System中设置的 .

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

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

这可能与抱怨该目录的gradle插件有关 . 但目录是正确的 . 我用'/'而不是''尝试过它,它没有任何区别 .

由于那不起作用,我尝试了另一种选择,“使用Gradle Wrapper” . 有一个复选框:“From Root Build Script Dir” . 无论我是否检查它,我得到“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任务中,我仍然看到错误 .

有任何想法吗?

4 回答

  • 1

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

    我的情况如下,在我的项目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!
    

    My solution 将此脚本 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”消息 .

  • 2

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

  • 1

    我可以't be sure it'来解决你的问题,但也许你可以考虑使用sdk-manager-plugin直接从gradle下载和安装android sdk .

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

  • 3

    我也使用jenkins来构建我的应用程序并遇到了类似的问题 . 我通过jenkins执行gradle包装器而不使用jenkins gradle插件来修复它 .

    cd $WORKSPACE
    ./gradlew assembleRelease
    

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

    cd $WORKSPACE
    ./gradlew lint
    

    请注意,这些命令适用于Linux系统,但它们可以在Windows上正常工作(前一段时间有一个Windows构建服务器并执行相同的操作)

相关问题