从 Android Studio gradle build 访问环境变量

Access to environment variables from Android Studio gradle build

在我的 Android Gradle 构建中,我需要访问我在 .bash.profile 中设置的环境变量。当我从命令行构建时它工作正常 - Gradle 脚本可以看到所有变量。

但是,当我尝试从 Android Studio 运行 我的构建时 - 我不再有我的环境变量了。

这是我所面临的粗略描述:

1) 通过 ~/.bash.profile:

设置自定义环境变量
export MY_CUSTOM_VAR='Hello World'

2) 在 build.gradle 中创建打印此环境变量的任务:

task printVar << {
    println System.getenv("MY_CUSTOM_VAR")
}

3) 从命令行执行 printVar。输出正确 - 环境变量已设置:

输出:Hello World

4) 从 Android Studio 执行 printVar。环境变量 未设置 。输出为空

常识告诉我,通过执行 export MY_CUSTOM_VAR='Hello World',我只是让这个变量可用于 shell 进程(及其子进程)。如果我从命令行启动 Android Studio,它可能会起作用(因此它会继承我的环境)。但是自从我从 dock 启动 Android Studio(顺便说一句,我在 Mac 上)- 它有自己的环境,对我的 ~/.bash.profile.[=22 没有任何想法=]

有什么方法可以将自定义环境变量填充到 Android Studio?

在这里找到答案: Environment variables in Mac OS X

本质上,您还需要通过 launchctl 设置 launchd 使用的环境变量 - 这样环境变量将可用于从 MacOS UI

启动的任何内容

所以我修改了我的 ~/.bash_profile 如下:

export MY_CUSTOM_VAR='Hello World'
launchctl setenv MY_CUSTOM_VAR $MY_CUSTOM_VAR

您可以使用 launchctl setenv 设置 launchd 使用的环境(以及,通过扩展,任何从 Spotlight 启动的环境)。例如设置路径:

launchctl setenv MY_CUSTOM_VAR /***/***/***

要在重启后保留更改,您可以从 /etc/launchd.conf 设置环境变量,如下所示:

setenv MY_CUSTOM_VAR /***/***/***

可以看到Setting environment variables in OS X?