当前位置: 首页 > 知识库问答 >
问题:

设置中的环境变量。gradle不使用Android Studio

田马鲁
2023-03-14

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

/projects_home/projects/app_root
   |--app/
   |   |--build.gradle
   |--build.gradle
   |--settings.gradle

/libraries_home/libraries
   |--libA
       |--build.gradle

在我的settings.gradle文件中,我可以使用project ectDir属性设置库项目的绝对路径。这在控制台以及Android Studio中运行良好。

但是,如果我尝试使用环境变量,它将停止与Android Studio一起工作。设置。上面示例中的gradle如下所示:

include ':app'
include ':libA'

project(':libA').projectDir = new File("$System.env.LIB_ROOT", '/libraries/libA')

如果我从控制台使用graddle包装器进行构建,它仍然可以工作。但AS停止工作,出现以下错误消息:

Gradle 'app' project refresh failed:
Configuration with name 'default' not found.

如果我取消设置环境变量,则在控制台上构建以相同的msg失败:

* What went wrong:
A problem occurred configuring project ':app'.
> Configuration with name 'default' not found.

因此,我猜AS不知何故无法访问我的~/. bashrc设置的环境变量

你们中有人知道如何让我意识到我的环境吗?

共有3个答案

萧韬
2023-03-14

Android Studio不读取环境变量,因此这种方法不起作用。此外,在设置中使用projectDir方案。gradle可能会引起问题。Android Studio有一个限制,即其所有模块都需要位于项目根目录下。如果您有多个项目中使用的库,并且它们不能放在单个项目根目录下,那么最好的建议是让它们将JAR或AAR发布到本地Maven存储库中,单个项目可以获取这些存储库。

尉迟兴修
2023-03-14

在Mac上,Android Studio显然不读取Gradle中使用的环境变量。我相信这是造成这里答案混乱的原因——也许在Windows上确实如此。

为了让Android Studio读取环境变量,我从命令行运行应用程序:

> /Applications/Android\ Studio.app/Contents/MacOS/studio 

这里的其他答案提供了使用环境变量以外的解决方案。对于我的情况,我使用的是一个我没有编写的需要使用环境变量的库,我宁愿不编辑它们的代码,这样以后更新更容易。

编辑:我有一个dock图标,可以这样启动Android Studio:

  • OSX:为专用终端添加Dock图标命令解释了如何操作
爱唯
2023-03-14

Android Studio确实读取了环境变量。您可以通过从指定这些env.变量的shell而不是从X窗口仪表板启动Android Studio来证明这一点。

没有这些变量的原因是您使用的X-window环境没有读取$HOME/。包含这些变量的bashrc。这是有意义的,因为bashrc是用于Bash而不是X的。

假设您使用的是GNOME或Unity,要在指定了这些环境变量的情况下启动Android Studio,只需修改。Android Studio的桌面文件(例如,本地/共享/应用程序/Android Studio。桌面):

查找此行:

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

注:

此修改只是在原始命令前面加上envLIB_ROOT=/libraries_home。您必须将username替换为您自己的用户名。

使现代化

有问题请留言评论,不要直接编辑答案。

 类似资料:
  • 我的问题是关于环境变量的。我正在使用SpringBootGradle插件,并在Windows上用Intellij14进行开发。 我正在尝试获取一些用于GoogleAPI工作的发布/订阅示例代码,但我不认为这是我问题的要点(此处指出,因为我可能是错的!)如果不在AppEngine上运行,那么示例代码有许多方法可以通过提供具有身份验证凭据的文件来满足它。我目前没有使用AppEngine的计划。 我被要

  • 问题内容: 在中,我有以下脚本正在工作: Bash中的功能等效于什么? 有直接的模拟吗?环境变量用于查找可执行文件。 问题答案: 将VAR设置为value。如果需要空格,请用单引号将其引起来。如果要对变量进行插值,请使用双引号,例如。

  • ENV 设置环境变量 格式有两种: ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>... 这个指令很简单,就是设置环境变量而已,无论是后面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。 ENV VERSION=1.0 DEBUG=on \ NAME="Happy Feet" 这个例子中演示了如何换行,以

  • 问题内容: 需要基于构建环境配置来设置标签的href值。 例如: 分期应有 产品应具有 当前设置: 生成命令: .env.staging.js: index.html: 在index.html中,这似乎不起作用。虽然类似的设置适用于JS文件 (可能是因为将JS文件解析并捆绑到一个文件中,并且捆绑程序在该时间点读取值) 尝试过的事情: index.html: (类似于PUBLIC_URL变量) 与浏

  • 问题内容: 有没有一种方法可以在Linux中使用C设置环境变量? 我尝试了和,但是它们似乎并没有为我工作。 问题答案: 我将在这里做出一个疯狂的猜测,但是这些功能似乎不起作用的正常原因不是因为它们不起作用,而是因为用户并不真正了解环境变量的工作原理。例如,如果我有此程序: 然后我从外壳程序运行它,它不会修改外壳程序的环境- 子进程无法做到这一点。这就是为什么内置可修改环境的shell命令的原因,以

  • 我尝试为将在Windows子系统Linux中运行的Visual Studio Code任务设置环境变量。然而,它似乎不起作用。这是我的tasks.json: 输出为: 请注意,默认情况下,shell已被手动修改为WSL的,正如这里和这里推荐的那样。