recommended - android studio environment variables
Forma correcta de usar las variables de entorno del sistema en gradle usando Android Studio (2)
Estoy usando Android Studio para construir mi proyecto en un sistema Ubuntu 14.04.
Escribí lo siguiente en mis archivos build.gradle para evitar la codificación de archivos de almacenamiento, StorePassword, keyAlias y keyPassword en mi repositorio de git:
signingConfigs {
debug {
storeFile file(System.getenv("KEYSTORE"))
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
Sin embargo, Gradle Sync produce un error con lo siguiente: Error:(49, 0) Neither path nor baseDir may be null or empty string. path=''null'' basedir=''./pathto/TMessagesProj''
Error:(49, 0) Neither path nor baseDir may be null or empty string. path=''null'' basedir=''./pathto/TMessagesProj''
My .bashrc contiene: source ~/.gradlerc
y my ~ / .gradlerc contiene lo siguiente:
export KEYSTORE="/home/myname/keystore/mykey"
export KEYSTORE_PASSWORD=''mypass''
export KEY_ALIAS=''mykey''
export KEY_PASSWORD=''keypass''
He confirmado que estas variables son importadas correctamente por el shell. Sin embargo, no estoy seguro de por qué no es recibido por el entorno de compilación en Android Studio.
¿Cuál es la forma correcta de usar las variables de entorno en gradle?
Cree un archivo gradle.properties
en su carpeta de origen (junto con build.gradle
) para aplicar solo al proyecto actual o en ~/.gradle/gradle.properties
para aplicar en todo el sistema con el contenido:
keystore=/home/myname/keystore/mykey
keystore_password=mypass
key_alias=mykey
key_password=keypass
Ahora actualice su archivo build.gradle con:
debug {
storeFile file("${keystore}")
storePassword "${keystore_password}"
keyAlias "${key_alias}"
keyPassword "${key_password}"
}
Opcionalmente, puede pasar los parámetros desde la línea de comandos con la opción -P
. Por ejemplo, ./gradlew assemble -Pkey_password=keypass
.
También me gusta tener mi información del almacén de claves en mis variables de entorno, en lugar de tenerla dentro del proyecto. Tu código parece estar bien, pero estaba teniendo el mismo problema con la ruta del archivo. Lo resolví convirtiendo ese valor en cadena antes de pasarlo a 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")
}
Espero que esto ayude.