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

Дженкинс, предоставляющий каталог SDK, не существует

Я пытаюсь настроить непрерывную интеграцию с 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

Я пробовал следующее:

  • Думая, что это проблема разрешений, дал chmod -R 777 для каталога sdk
  • Двойной проверил файл sdk.dir в local.properties (он указывает на /Users/chaz/Library/Android/sdk).
  • Удалено добавлено обратно ANDROID_HOME переменная env из конфигурации jenkins (не помогло).

Когда я googled, я обнаружил, что кто-то сталкивался с тем же вопросом. И предоставленное решение было следующим:

Решение

Это, скорее всего, происходит потому, что вы переопределяете ANDROID_HOME - удалите настройки окружения, подобные этому, и тогда SDK должен установить прекрасный.

Квитирование

Спасибо, да, это было перекрытие переменных env. Я удалил все, кроме глобального, и сохранил его в ${ANDROID_HOME}.

Как мне сделать все, кроме глобального, и сохранить его в ${ANDROID_HOME}. часть решения?

Изменить: Я успешно использовал Jenkins на компьютере с той же конфигурацией jenkins (мне удалось успешно построить, установить apk в устройство тоже).

Спасибо заранее!

4b9b3361

Ответ 1

Это пахнет проблемой разрешения. Возможно, вы дали разрешение на sdk-dir, но не родительский каталог.

Ответ 2

В моей ситуации это произошло потому, что файл

local.properties

был добавлен в .gitignore

(я собираюсь с удаленного)

Ответ 3

Я просто хочу сказать, как мы исправили эту проблему в нашем проекте. Это может помочь кому-то.

Рабочий каталог нашего Jenkins находится в "/User/shared", а наш SDK - в "/User/foo"

Мы пытались дать пользователю foo и всем права доступа к папке SDK и ее родительским папкам, но это не сработало.

Затем мы установили SDK в /user/Shared/Jenkins/Library/Android/SDK через Android SDK Manager и дали пользователю foo и всем разрешение на новую папку SDK и ее родительские папки. Также мы изменили путь SDK на новый в конфигурации проекта Jenkins. Тогда это работает.

Ответ 4

Как сказал @ligi из-за проблемы с разрешением. Таким образом, это можно устранить двумя способами.

  • Запустите команды в ~/Library/path с помощью терминала

    chmod 777
    

    при /Users/username/Library/. Проверить разрешение командой ls -s

    Итак, /Users/username/Library/ должно теперь показать разрешение следующим образом:

    [email protected]
    
  • Второй способ: выполнить команду ниже в терминале, чтобы отобразить библиотеку внутри File Explorer

    chflags nohidden ~/Library/
    

    Итак, перейдите и щелкните правой кнопкой мыши по папке Library → Get info → Scroll down → изменить разрешение на разрешение в диалоговом окне

    Установка разрешения для каталога библиотеки

Теперь запустите jerkin, он должен иметь доступ к каталогу sdk внутри Библиотеки

Ответ 5

У меня была такая же проблема, я нашел следующее решение: удалите ANDROID_HOME в переменных среды Jenkins.

Ответ 6

Перейдите в Jenkins> Управление Jenkins> Настройка системы

Проверьте "Переменные среды"

добавьте имя: ANDROID_HOME, значение → полный путь к вашему Android SDK, например,/Users/{имя пользователя}/Library/Android/SDK

нажмите применить, затем сохраните и повторите попытку