In my Android Gradle build I need to get access to environment variables I set from .bash.profile
. It works fine when I build from command line - Gradle script can see all the variables.
However, when I try to run my build from Android Studio - I don't have my environment variables anymore.
Here is a rough picture of what I'm facing:
1) Set custom environment variable via ~/.bash.profile
:
export MY_CUSTOM_VAR='Hello World'
2) In build.gradle
create task which prints this environment variable:
task printVar << {
println System.getenv("MY_CUSTOM_VAR")
}
3) execute printVar
from command line. Output is correct - env variable is set:
output: Hello World
4) execute printVar
from Android Studio. Environment variable is not set. Output is empty
Common sense tells me that by doing export MY_CUSTOM_VAR='Hello World'
I just make this variable available to shell process (and its subprocesses). And it would probable work if I launch my Android Studio from command line (so it would inherit my environment). But since I launch Android Studio from dock (i'm on Mac by the way) - it has its own environment which doesn't have any idea about my ~/.bash.profile
.
Is there any way I can populate custom environment variables to Android Studio?
You can set the environment used by launchd (and, by extension, anything started from Spotlight) with launchctl setenv. For example to set the path:
launchctl setenv MY_CUSTOM_VAR /***/***/***
To keep changes after a reboot you can set the environment variables from /etc/launchd.conf, like so:
setenv MY_CUSTOM_VAR /***/***/***
you can see Setting environment variables in OS X?
Found an answer here: Environment variables in Mac OS X
Essentially, you need to also set environment variables used by
launchd
vialaunchctl
- this way environment variable will be available for anything launched from MacOS UISo I modified my
~/.bash_profile
as follows: