OSX And​​roid Studio 的 gradle 无法读取 .bash_profile 环境变量 [重复]

Posted

技术标签:

【中文标题】OSX And​​roid Studio 的 gradle 无法读取 .bash_profile 环境变量 [重复]【英文标题】:OSX Android studio's gradle cannot read .bash_profile environment variable [duplicate] 【发布时间】:2015-11-29 08:25:01 【问题描述】:

我在 mac OSX 和 Windows 中有一个 KEY_STRING 作为系统变量。其中有我的密钥库的绝对路径。

~/.bash_profile 条目将是

export KEY_STRING =~/config/release-signing.keystore

在我的每台队友机器[Windows/OSX/Linux] 中设置相同的路径。

我访问这个变量的 Gradle 脚本是

def keystorePath = System.getenv("KEY_STRING");
println keystorePath;

此脚本在 Windows 的控制台和 android studio 中都能正常运行。

ma​​c android studio 特有的我的问题。

如果我在终端运行构建,它工作正常并读取 env 变量。

但是当我进行 gradle sync 或设置运行配置 [Gradle task] 时,它无法解析变量。

我也已将此issue 报告给 Google。

这里是快速总结:

在 ~/.bash_profile 中设置环境变量

在 build.gradle 的任何地方读取它

def keystorePath = System.getenv("KEY_STRING"); println keystorePath;

在配置中添加 gradle 任务。

它没有读取环境变量。

【问题讨论】:

根本没有。它是特定于android studio的gradle的。它无法读取变量。 ... 因为 OSX 应用程序无权访问在 .bash_profile 中设置的环境变量。 是否有任何解决方法来放置这些环境变量?我不想弄乱我的 build.gradle 你看过我链接的答案了吗? 是的.. 我读到它不再在 Yosmite 中工作,评论中有 30 个赞。 【参考方案1】:

没有一个 OSX 应用可以读取环境变量。

根据这个答案 https://***.com/a/14285335/981555

我的问题的解决方案是

launchctl setenv KEY_STRING ~/config/release-signing.keystore

这应该在启动 Android Studio 之前设置。

【讨论】:

要添加到这个答案,我实际上能够通过使用保存为应用程序的 AppleScript 组合在 OSX 登录上自动设置环境变量,在用户和组中的登录项上启动,并使用这个语法:do shell script "launchctl setenv ANDROID_HOME /users/$(whoami)/Library/Android/sdk"。这会在用户登录时运行launchctl setenv,然后应用程序和终端可以看到环境变量

以上是关于OSX And​​roid Studio 的 gradle 无法读取 .bash_profile 环境变量 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

获取 libGDX And​​roid 游戏的目录文件和 ClassLoader

使用 RX And​​roid 进行并行 API 调用

Android Studio:使用 Mac (OSX) 和 Windows 的同一项目的 SDK 位置更改

Android Studio 无法在 Mac OSX (Mavericks) 上加载 JVM

如何从 OSX 的命令行打开 Visual Studio Code?

将 Visual Studio Code 设置为 OSX 上的全局 Git 编辑器