android - settings.gradle 中的环境变量不适用于 Android Studio

标签 android android-studio

我确实有一个多模块项目,其中一个库项目位于不同的根路径中。作为说明,您可以想象这样的事情:

/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/

相关文章:

android-studio - 无法使用 Gradle 插件 0.14.0 和 Android Studio 0.9.0 获取只写属性 'runProguard' 的值

android - Android studio 中模拟器运行的WebView 无法上网,而Chrome 可以?

java - AlarmManager 在两个特定时间

android - 一个 WorkSpace 用于多个应用程序

java - Android Studio 无法从网站获取数据

android - 改造:子列表的 GSON 自定义反序列化

android - 将图像导入 Android Studio,显示为深灰色

java - 使用 java 显示的 Admob 广告未使用 xml 显示

android - ViewPager 内的 LinearLayout 禁用滑动

android - OnSingleTapUp 事件触发两次