我遇到了System.getenv()为环境变量返回null的问题。我的密码存储在RELEASE_PASSWORD环境变量中。当我这样做:Android gradle build System.getEnv(“RELEASE_PASSWORD”)返回null
$ echo $RELEASE_PASSWORD
它打印出正确的值,所以我知道该变量设置。
我最初设置signingConfig signingConfigs.release
在版本 buildType和一切工作正常,但我需要不同的签署配置为不同的产品口味。如果我对密码进行了硬编码,它的工作原理就像是假设的那样。当我尝试从环境变量中读取密码时,情况只会变得不可思议。
它是一种范围问题?
这是我目前在我的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
}
}
}
谢谢!现在我想到了,我没有在Android Studio中进行googleRelease构建,所以之前我从未碰到过这个问题。实际构建释放apks的人是从命令行执行的。感谢您及时的回复。 – HMCFletch
@Scott,你知道为什么Android Studio不会将环境变量传递给Gradle吗?或为此的解决方法? –
我认为这改变了。对我来说(使用Windows)只需重新启动Android Studio就足够了。 –