Я пытаюсь передать специфические для среды значения для Android studio v 2.2.2 (например, URL-адрес сервера, расположение хранилища ключей и пароль), установив аргументы java vm. Пока я пробовал следующие параметры, но ничего не сработало.
1. Установка аргументов java-vm из studio.vmoptions(как описано здесь)
Я нажал Help -> Edit Custom VM Options...
, чтобы создать новый файл vmoptions, который создается в ~/.AndroidStudio2.2/studio64.vmoptions. Я отредактировал файл, чтобы добавить следующую строку.
-DRELEASE_KEY_STORE_PATH=/home/ubuntu/ks/myapp/app-release.keystore
2. С gradle.properties
файлом
Я создал файл gradle.properties в том же каталоге, где существует файл root build.gradle. Файл имеет следующее содержимое.
RELEASE_KEY_STORE_PATH=/home/ubuntu/ks/myapp/app-release.keystore
3. Отредактировано файл studio.sh
Я также попытался отредактировать файл studio.sh, добавив следующую строку в надежде, что эти свойства будут доступны для Android Studio.
export RELEASE_KEY_STORE_PATH=/home/ubuntu/ks/myapp/app-release.keystore
У моего файла build.gradle есть секция signConfig, в которой используется это значение.
signingConfigs {
release {
storeFile file(System.env.RELEASE_KEY_STORE_PATH)
storePassword System.env.RELEASE_KEYS_STORE_PASSWORD
keyAlias System.env.RELEASE_KEY_ALIAS
keyPassword System.env.RELEASE_KEY_PASSWORD
}
}
Сбой сборки при выполнении gradle проекта sync/build выполняется из Android Studio.
Появится сообщение об ошибке: Neither path nor baseDir may be null or empty string. path='null' basedir='/home/ubuntu/path-to-project'.
Это означает, что script не может разрешить путь к файлу по мере поступления null.
UPDATE Если я запустил конструкцию gradle из командной строки, она отлично работает, сборка завершается успешно, все, что мне нужно сделать, это просто запустить некоторые команды экспорта для желаемых свойств, которые я хочу наследовать в сборке.
Ниже приведена моя среда dev:
Я провел расследование, основанное на комментариях @DeeV и @CommonsWare, и сделал некоторые изменения для успешного запуска сборки в Android Studio, а также в командной строке.
Я разместил файл gradle.properties в домашнем каталоге Gradle. В моей среде (ubuntu) домашний каталог Gradle находится в ~/.gradle
.
Мне нужно удалить System.env.
из использования переменных, поэтому он использует свойства, объявленные в файле gradle.properties.
С этими двумя изменениями я заметил, что проблема с Android Studio решена. Однако это вызвало еще одну проблему: сборка CL сбоя с ошибкой:
Failed to read key relase_key from store "/home/ubuntu/ks/myapp/app-release.keystore": Keystore was tampered with, or password was incorrect.
Это означает, что Gradle при запуске из CL может разрешить путь, но не может прочитать ключ из KS.
Мне нужно сделать следующий шаг, чтобы избавиться от этой ошибки:
RELEASE_KEY_PASSWORD
и RELEASE_KEY_STORE_PASSWORD
в двойные кавычки, я удалил кавычки, а затем сборка была успешно завершена из командной строки.Надеюсь, это поможет любому, кто сталкивается с подобной ситуацией.
System.env.RELEASE_KEY_STORE_PATH
или простоRELEASE_KEY_STORE_PATH
? Это должен быть второй, поскольку это не переменная окружения.