Android gradle build System.getEnv(“RELEASE_PASSWORD”) returns null
我遇到一个问题,其中System.getenv()为环境变量返回null。 我的密码存储在RELEASE_PASSWORD环境变量中。 当我做:
它打印出正确的值,所以我知道该变量已设置。
我最初在发布buildType中设置了
这是某种范围问题吗?
这就是我目前在
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | 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 } } } |
对于Windows用户,如果要创建新的环境变量,则需要重新启动PC。我不知道Windows怎么了,但这就是它的工作方式。我尝试的是,在gradle脚本中,我编写了一个任务来打印我的
1 2 3 | task printJavaHome{ println System.getenv("JAVA_HOME") } |
然后与gradle同步。
然后在Studio中打开终端窗口。
并输入:
1 | gradlew -q printJavaHome |
如果您设置了它,它将显示您的Java主目录路径,否则它将显示
在执行上述命令之前,请确保将终端指向项目的根目录。
现在尝试设置一个新的环境变量并加载它,并尝试按照上述步骤打印它。如果您使用Windows,则会看到null。但是,当您重新启动PC并再次执行命令时,它将返回您环境变量的实际值。
这就是我经历并想到的共享,可能对某人有用。
您可以从命令行运行Android Studio,以将环境变量传递到IDE中。在Mac OS中,您可以通过运行
Android Studio不会将环境变量传递给Gradle,因此您要执行的操作无法在IDE中使用。如果您想要避免将密钥库密码保留在生成文件中的方法,以下是将其保存在单独文件中的代码的答案:
在不将密钥库信息放入build.gradle的情况下签署APK
对我而言(使用Windows)仅重启Android Studio就足够了。
需要关闭并重新启动Android Studio,以识别新更改或添加的环境变量。
由于某种原因,我认为" Invalidate Cache and restart"操作不会获取新的环境变量。我已经做过几次了,但我认为执行该操作并没有获得新的价值。这听起来让我难以置信,所以也许我有一些错字,并且我对观察到的结果感到困惑。但我确实检查了多次拼写,因为这是显而易见的原因。没有进行任何更改的问题是,我在完全关闭android studio之后读取了环境变量,而不是执行了Invalidate Cache和restart操作。
我执行Invalidate Cache并重新启动操作的原因是因为我正在进行多个Android Studio会话,这似乎是关闭所有会话并重新启动它们的简单方法。