web-dev-qa-db-fra.com

Gradile Android build System.getEnv ("RELEASE_PASSWORD") renvoie la valeur null

J'ai des problèmes lorsque System.getenv () renvoie null pour la variable d'environnement. Mon mot de passe est stocké dans la variable RELEASE_PASSWORD environment. Quand je fais:

$ echo $RELEASE_PASSWORD

il affiche la valeur correcte, donc je sais que la variable est définie.

À l'origine, je mettais le signingConfig signingConfigs.release dans release buildType et tout fonctionnait bien, mais j'ai besoin de différentes configurations de signature pour différents goûts de produit. Si je code le mot de passe en dur, cela fonctionne exactement comme il se doit. Les choses ne deviennent vaines que lorsque j'essaie de lire le mot de passe à partir d'une variable d'environnement.

Est-ce une question de portée?

C'est ce que j'ai actuellement dans mon build.gradle.

Android {

  ...

  signingConfigs {
    release {
      storeFile ...;
      keyAlias ...;
      storePassword System.getenv("RELEASE_PASSWORD");
      keyPassword System.getenv("RELEASE_PASSWORD");
    }

    unsigned {
      keyAlias "";
      storePassword "";
      keyPassword "";
    }
  }

  buildTypes {
    debug {
      versionNameSuffix = "-DEBUG"
    }

    release {
    }
  }

  flavorGroups "storeFront"

  productFlavors {
    def googleVariable = signingConfigs.release
    def amazonVariable = signingConfigs.unsigned

    google {
        flavorGroup "storeFront"
        signingConfig googleVariable
    }

    Amazon {
        flavorGroup "storeFront"
        signingConfig amazonVariable
    }
  }
}
26
HMCFletch

Android Studio ne transmet pas les variables d'environnement à Gradle. Par conséquent, ce que vous essayez de faire ne fonctionnera pas dans l'EDI. Si vous voulez éviter de conserver le mot de passe du fichier de clés dans le fichier de construction, voici une réponse avec le code permettant de l'enregistrer dans un fichier séparé:

Signer APK sans mettre les informations du magasin de clés dans le build.gradle

13
Scott Barta

Pour un utilisateur Windows, si vous créez une nouvelle variable d'environnement, vous devez redémarrer votre PC. Je ne sais pas ce qui ne va pas avec Windows, mais c'est comme ça que ça marche. Ce que j'ai essayé, c’est: Dans mon script Gradle, j’ai écrit une tâche pour imprimer mon chemin de variable Java_HOME comme ceci:

task printJavaHome{
     println System.getenv("Java_HOME") 
}

puis synchronisé avec gradle. 

Ensuite, ouvrez la fenêtre du terminal dans votre studio. 

et type:

gradlew -q printJavaHome

Cela montrera votre chemin d’accueil Java si vous le définissez, sinon il imprimera null.

avant d'exécuter la commande ci-dessus, assurez-vous que le terminal est dirigé vers le répertoire racine du projet. 

Maintenant, essayez de définir une nouvelle variable d’environnement et de la charger, puis essayez de l’imprimer comme indiqué ci-dessus. Vous verrez la valeur null si vous utilisez Windows. Mais quand relancerez-vous PC et exécuterez à nouveau la commande, la valeur réelle de votre variable d’environnement sera alors renvoyée. 

C’est ce que j’ai vécu et pensé partager, pourrait être utile pour quelqu'un. 

15
TheLittleNaruto

Vous pouvez exécuter Android Studio à partir de la ligne de commande pour obtenir les variables d’environnement transmises à l’EDI. Sous Mac OS, vous pouvez l'exécuter depuis un terminal en exécutant /Applications/Android\ Studio.app/Contents/MacOS/studio.

11
Xavi Rigau

Pour moi (avec Windows), il suffisait de redémarrer Android Studio.

1
Tobias

Android studio doit être fermé et redémarré pour reconnaître les variables d'environnement récemment modifiées ou ajoutées.

Pour une raison quelconque, je ne pense pas que l'opération "Invalidate Cache and restart" capte de nouvelles variables d'environnement. Je l'avais fait plusieurs fois, et je ne pense pas avoir obtenu les nouvelles valeurs nécessaires à cette opération. Cela me semble difficile à croire, alors peut-être que j'ai eu une faute de frappe et que je suis confus sur ce que j'ai observé; mais j'ai vérifié l'orthographe à plusieurs reprises, car c'est la cause évidente. Sans apporter de modifications, le problème que j'avais avec les variables d'environnement de lecture disparaissait après la fermeture complète du studio Android, au lieu de créer un cache non valide et de redémarrer l'opération . La raison pour laquelle j'ai effectué une opération de cache et de redémarrage invalide, c’est parce que j’avais plusieurs sessions Android Studio et que cela semble être un moyen simple de les fermer toutes et de toutes les redémarrer.

0
Tom Rutchik