HMC*_*tch 27 android gradle android-gradle-plugin
我遇到的问题是System.getenv()为环境变量返回null.我的密码存储在RELEASE_PASSWORD环境变量中.当我做:
$ echo $RELEASE_PASSWORD
它打印出正确的值,所以我知道变量已设置.
我最初signingConfig signingConfigs.release在发布版本中设置了类型,一切都运行正常,但我需要不同的签名配置,以适应不同的产品风格.如果我对密码进行硬编码,它的工作原理就像它想象的那样.当我尝试从环境变量中读取密码时,事情就变得很糟糕.
这是某种范围问题吗?
这就是我目前所拥有的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
}
}
}
Run Code Online (Sandbox Code Playgroud)
The*_*uto 15
对于Windows用户,如果创建新的环境变量,则需要重新启动PC.我不知道Windows有什么问题,但这就是它的工作原理.我尝试的是,在我的gradle脚本中,我写了一个任务来打印我的JAVA_HOME变量路径,如下所示:
task printJavaHome{
println System.getenv("JAVA_HOME")
}
Run Code Online (Sandbox Code Playgroud)
然后与gradle同步.
然后在Studio中打开终端窗口.
并输入:
gradlew -q printJavaHome
Run Code Online (Sandbox Code Playgroud)
这将显示您的java主路径,如果您设置它否则它将打印null.
在执行上述命令之前,请确保终端指向项目的根目录.
现在尝试设置一个新的环境变量并加载它,并尝试按照上面提到的步骤打印它.如果您使用的是Windows,则会看到null.但是当你重新启动PC并再次执行命令时,它将返回你的环境变量的实际值.
这就是我所经历和分享的想法,可能对某些人有用.
Xav*_*gau 14
您可以从命令行运行Android Studio以获取传递到IDE的环境变量.在Mac OS中,您可以通过运行从终端运行它/Applications/Android\ Studio.app/Contents/MacOS/studio
Sco*_*rta 13
Android Studio不会将环境变量传递给Gradle,因此您尝试执行的操作将无法在IDE中运行.如果您想要一种避免在构建文件中保留密钥库密码的方法,这里是一个代码的答案,用于将其保存在单独的文件中:
| 归档时间: |
|
| 查看次数: |
17130 次 |
| 最近记录: |