Подтвердить что ты не робот

Строительство проекта Android Studio на Jenkins? android.compileSdkVersion отсутствует

Я пытаюсь настроить свой первый Android-проект на Jenkins.

Я запускаю Jenkins 1.6.2 с версией 1.24 плагина Gradle. Работает на Windows 7 Professional SP1.

Я установил Android Studio и Java7 JDK на свою машину сборки, а исправленная версия программного обеспечения просто отлично работает через Android Studio или при запуске gradlew.bat из командной строки. Но я не могу заставить задачу сборки Invoke Gradle script работать в моей работе Jenkins.

На странице проекта конфигурации есть пара переключателей:

  • Вызов 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". Там флажок: "От Root Build script Dir". Я проверяю это или нет, я получаю "java.lang.IllegalArgumentException: android.compileSdkVersion отсутствует!"

Я установил 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

Когда я запустил это, я все равно получаю эту ошибку.

Но когда я запускаю эти команды из командной строки на машине сборки, они работают нормально.

Что может быть другим при запуске gradlew.bat от Jenkins, чем при запуске из командной строки? Служба Jenkins настроена на использование того же пользователя, с которым я вошел в систему, когда я запускаюсь из командной строки. Я попытался явно установить каждую переменную среды, которую я установил в командной строке, в задаче Jenkins, и я все еще вижу ошибку.

Любые идеи?

4b9b3361

Ответ 1

Ваш файл local.properties должен содержать: sdk.dir = "путь к вашему Android-sdk"

Ответ 2

Я также использую jenkins для создания своих приложений и имел аналогичную проблему. Я исправил его, выполнив обертку gradle через jenkins без использования плагина jenkins gradle.

cd $WORKSPACE
./gradlew assembleRelease

И если вы хотите, чтобы lint добавлял второй exec оболочки с

cd $WORKSPACE
./gradlew lint

Обратите внимание, что эти команды предназначены для системы linux, но они будут работать отлично на окнах (у них был сервер сборки 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!

Мое решение изменяет положение этого script 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'

Я думаю, вы должны обратить внимание на сообщение "Где" в командной строке ошибки.

Ответ 4

Я не могу быть уверен, что это решит вашу проблему, но, возможно, вы можете рассмотреть возможность использования sdk-manager-plugin, который загружает и устанавливает Android-приложение sdk непосредственно из gradle.

Если это сработает, вероятно, он не скажет вам, почему ваша текущая конфигурация не работает, но по крайней мере вы больше не будете застревать.