我遇到的问题是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) 我正在使用Android Studio在Ubuntu 14.04系统上构建我的项目.
我在build.gradle文件中写了以下内容,以避免在我的git仓库中硬编码storeFile,storePassword,keyAlias和keyPassword:
signingConfigs {
debug {
storeFile file(System.getenv("KEYSTORE"))
storePassword System.getenv("KEYSTORE_PASSWORD")
keyAlias System.getenv("KEY_ALIAS")
keyPassword System.getenv("KEY_PASSWORD")
}
Run Code Online (Sandbox Code Playgroud)
但是使用以下内容来清除同步错误: Error:(49, 0) Neither path nor baseDir may be null or empty string. path='null' basedir='./pathto/TMessagesProj'
我的.bashrc包含:source ~/.gradlerc而我的〜/ .gradlerc包含以下内容:
export KEYSTORE="/home/myname/keystore/mykey"
export KEYSTORE_PASSWORD='mypass'
export KEY_ALIAS='mykey'
export KEY_PASSWORD='keypass'
Run Code Online (Sandbox Code Playgroud)
我已经确认这些变量是由shell正确导入的.但是我不确定它为什么没有被Android Studio中的构建环境接收.
在gradle中使用环境变量的正确方法是什么?
在我的Android Gradle构建中,我需要访问我设置的环境变量.bash.profile.当我从命令行构建时,它工作正常 - Gradle脚本可以看到所有变量.
但是,当我尝试从Android Studio运行构建时 - 我不再拥有环境变量了.
以下是我所面对的大致情况:
1)通过~/.bash.profile以下方式设置自定义环境变
export MY_CUSTOM_VAR='Hello World'
Run Code Online (Sandbox Code Playgroud)
2)在build.gradle创建任务中打印此环境变量:
task printVar << {
println System.getenv("MY_CUSTOM_VAR")
}
Run Code Online (Sandbox Code Playgroud)
3)printVar从命令行执行.输出正确 - 设置了env变量:
输出: Hello World
4)printVar从Android Studio 执行.未设置环境变量.输出为空
常识告诉我,通过执行export MY_CUSTOM_VAR='Hello World'我只是使这个变量可用于shell进程(及其子进程).如果我从命令行启动我的Android Studio(这将继承我的环境),这可能会有效.但是,自从我从Dock启动Android Studio(顺便说一下,我在Mac上) - 它有自己的环境,对我不了解~/.bash.profile.
有什么办法可以将自定义环境变量填充到Android Studio吗?
shell android environment-variables android-studio android-gradle-plugin