我正在尝试 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 回答
我也遇到了这个问题,但我不知道我的解决方案是否适合你 .
我的情况如下,在我的项目build.gradle文件中:
当我运行:
gradle clean build
,错误消息显示:My solution 将此脚本
apply from: 'maven_push.gradle'
的位置更改为build.gradle文件的底部,并且BUILD SUCCESSFUL!:我认为你应该注意错误命令行中的“Where”消息 .
您的local.properties文件必须包含:sdk.dir =“android sdk的路径”
我可以't be sure it'来解决你的问题,但也许你可以考虑使用sdk-manager-plugin直接从gradle下载和安装android sdk .
如果它有效,它可能不会告诉你为什么你当前的配置不起作用,但至少你不会再被卡住了 .
我也使用jenkins来构建我的应用程序并遇到了类似的问题 . 我通过jenkins执行gradle包装器而不使用jenkins gradle插件来修复它 .
如果你想要lint添加第二个shell exec
请注意,这些命令适用于Linux系统,但它们可以在Windows上正常工作(前一段时间有一个Windows构建服务器并执行相同的操作)