我遇到了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就足夠了。 –