我确实有一个多模块项目,其中一个库项目位于不同的根路径中。作为说明,您可以想象这样的事情:
/projects_home/projects/app_root
|--app/
| |--build.gradle
|--build.gradle
|--settings.gradle
/libraries_home/libraries
|--libA
|--build.gradle
在我的 settings.gradle 文件中,我可以使用 projectDir 属性设置库项目的绝对路径。这在控制台以及 Android Studio 中工作得很好。
但如果我尝试使用环境变量,它会停止与 Android Studio 一起工作。上面示例的 settings.gradle 看起来像这样:
include ':app'
include ':libA'
project(':libA').projectDir = new File("$System.env.LIB_ROOT", '/libraries/libA')
如果我从控制台使用 gradle wrapper 构建,它仍然有效。但是 AS 停止工作并出现以下错误消息:
Gradle 'app' project refresh failed:
Configuration with name 'default' not found.
如果我取消设置环境变量,控制台上的构建将失败并显示相同的消息:
* What went wrong:
A problem occurred configuring project ':app'.
> Configuration with name 'default' not found.
因此我猜测 AS 无法访问我的 ~/.bashrc 设置的环境变量
你们中有人知道如何让 AS 了解我的环境吗?
最佳答案
Android Studio 会读取环境变量。您可以通过从这些环境所在的 shell 启动 Android Studio 来证明这一点。指定变量而不是从 X-window 仪表板指定变量。
您没有这些变量的原因是您使用的 X-window 环境没有读取包含这些变量的 $HOME/.bashrc
。这是有道理的,因为 bashrc
适用于 Bash 而不是 X。
假设您使用的是 GNOME 或 Unity,要在指定这些环境变量的情况下启动 Android Studio,只需修改 Android Studio 的 .desktop
文件(例如 ~/.local/share/应用程序/android-studio.desktop
):
找到这一行:
Exec="/home/username/tools/android/android-studio/bin/studio.sh" %f
将其更改为:
Exec=env LIB_ROOT=/libraries_home "/home/username/tools/android/android-studio/bin/studio.sh" %f
注意:
此修改只是将 env LIB_ROOT=/libraries_home
添加到原始命令之前。您必须将 username
替换为您自己的用户名。
更新
如果您有任何问题,请发表评论而不是直接编辑答案。
关于android - settings.gradle 中的环境变量不适用于 Android Studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21173826/