web-dev-qa-db-fra.com

Bonne façon d'utiliser les variables d'environnement système dans gradle en utilisant Android Studio

J'utilise Android Studio pour construire mon projet sur un système Ubuntu 14.04.

J'ai écrit ce qui suit dans mes fichiers build.gradle pour éviter de coder en dur storeFile, storePassword, keyAlias ​​et keyPassword dans mon dépôt git:

signingConfigs {
 debug {

    storeFile file(System.getenv("KEYSTORE"))
    storePassword System.getenv("KEYSTORE_PASSWORD")
    keyAlias System.getenv("KEY_ALIAS")
    keyPassword System.getenv("KEY_PASSWORD")        
 }

Mais les erreurs de synchronisation gradle sont les suivantes: Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj'

Mon .bashrc contient: source ~/.gradlerc Et mon ~/.gradlerc contient les éléments suivants:

export KEYSTORE="/home/myname/keystore/mykey"
export KEYSTORE_PASSWORD='mypass'
export KEY_ALIAS='mykey'
export KEY_PASSWORD='keypass'

J'ai confirmé que ces variables sont importées correctement par le Shell. Cependant, je ne sais pas pourquoi il n'est pas reçu par l'environnement de construction dans Android Studio.

Quelle est la bonne façon d'utiliser les variables d'environnement dans gradle?

26
Joel G Mathew

J'aime aussi avoir mes informations de magasin de clés sur mes variables d'environnement, plutôt que de les avoir à l'intérieur du projet. Votre code semble correct, mais j'avais le même problème avec le chemin du fichier. Je l'ai résolu en convertissant cette valeur en chaîne avant de la passer à 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")        
 }

J'espère que cela t'aides.

21
FMontano

Créer un gradle.properties fichier dans votre dossier source (à côté de build.gradle) à appliquer uniquement au projet en cours ou dans ~/.gradle/gradle.properties pour appliquer à l'échelle du système avec le contenu:

keystore=/home/myname/keystore/mykey
keystore_password=mypass
key_alias=mykey
key_password=keypass

Maintenant, mettez à jour votre fichier build.gradle avec:

debug {
  storeFile file("${keystore}")
  storePassword "${keystore_password}"
  keyAlias "${key_alias}"
  keyPassword "${key_password}"
}

Facultativement, vous pouvez passer les paramètres de la ligne de commande avec le -P option. Par exemple, ./gradlew assemble -Pkey_password=keypass.

7
Kevin Brotcke