OSX And​​roid studio的gradle无法读取.bash_profile环境变量

Mah*_*ran 6 android-studio android-gradle-plugin osx-yosemite

我在mac OSX和Windows中使用KEY_STRING作为系统变量.哪个有我的密钥库的绝对路径.

〜/ .bash_profile条目将是

export KEY_STRING =~/config/release-signing.keystore
Run Code Online (Sandbox Code Playgroud)

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

我的Gradle脚本将访问此变量

def keystorePath = System.getenv("KEY_STRING");
println keystorePath;
Run Code Online (Sandbox Code Playgroud)

这个脚本在Windows和控制台和android工作室都可以正常工作.

我的问题特定于mac android studio.

如果我在终端运行正常工作并读取env变量.

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

我也向Google 报告过此问题.

这里是快速摘要:

  • 在〜/ .bash_profile中设置环境变量
  • 在build.gradle中的任何位置读取它

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

  • 在配置中添加gradle任务. 向android studio添加自定义gradle任务

  • 它不是在阅读环境变量.

Mah*_*ran 5

OSX的应用程序可以读取环境变量.

根据这个答案 /sf/answers/999973481/

我的问题的解决方案是

launchctl setenv KEY_STRING ~/config/release-signing.keystore
Run Code Online (Sandbox Code Playgroud)

这应该在启动Android studio之前设置.

  • 为了添加这个答案,我实际上能够在OSX登录时自动设置环境变量,方法是使用AppleScript保存为应用程序,在用户和组中的登录项目上启动,并使用以下语法:`do shell script"launchctl setenv ANDROID_HOME/users/$(whoami)/ Library/Android/sdk"`.这将在用户登录时运行launchctl setenv,然后应用程序和终端可以查看环境变量 (2认同)