Правильный способ использования переменных системной среды в gradle с помощью Android Studio
Я использую Android Studio для создания моего проекта в системе Ubuntu 14.04.
Я написал следующее в моих файлах build.gradle, чтобы избежать hardcoding storeFile, storePassword, keyAlias и keyPassword в моем реестре git:
signingConfigs {
debug {
storeFile file(System.getenv("KEYSTORE"))
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
Но gradle ошибки синхронизации следующие: Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj'
My.bashrc содержит: source ~/.gradlerc
, а my ~/.gradlerc содержит следующее:
export KEYSTORE="/home/myname/keystore/mykey"
export KEYSTORE_PASSWORD='mypass'
export KEY_ALIAS='mykey'
export KEY_PASSWORD='keypass'
Я подтвердил, что эти переменные корректно импортируются оболочкой. Однако я не уверен, почему он не получен в среде сборки в Android Studio.
Каков правильный способ использования переменных среды в gradle?
Ответы
Ответ 1
Мне также нравится иметь свою ключевую информацию о переменных среды, а не иметь ее внутри проекта. Ваш код кажется прекрасным, но у меня была такая же проблема с файловым путем. Я решил это, преобразовывая это значение в строку перед тем, как передать его в file()
:
signingConfigs {
debug {
storeFile file(String.valueOf(System.getenv("KEYSTORE")))
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
Надеюсь, что это поможет.
Ответ 2
Создайте файл gradle.properties
в исходной папке (рядом с build.gradle
), чтобы применить только к текущему проекту или в ~/.gradle/gradle.properties
для общесистемного использования с содержимым:
keystore=/home/myname/keystore/mykey
keystore_password=mypass
key_alias=mykey
key_password=keypass
Теперь обновите файл build.gradle с помощью
debug {
storeFile file("${keystore}")
storePassword "${keystore_password}"
keyAlias "${key_alias}"
keyPassword "${key_password}"
}
При желании вы можете передать параметры из командной строки с опцией -P
. Например, ./gradlew assemble -Pkey_password=keypass
.