Gradle,ANDROID 和 ANDROID_HOME SDK 位置

编辑: (2016年8月)

这个问题是2013年11月提出的(当时 Android Studio 还处于开发人员预览模式) ,

目前(AS v2.2,Aug-2016)在安装 AS 期间要求选择 SDK 文件夹(或默认安装) ,它会自动应用于您正在打开的任何项目。

这意味着任何可能的解决方案或修复都是不相关的,因为问题不再是可重复的了。

第一个问题:

我们有这个项目与几个模块,已经配置和正确执行在另一个开发 PC 使用包装。我将完整的 git 子模块克隆到我的机器中。

下面是我的命令行的直接打印:

$ ./gradlew


FAILURE: Build failed with an exception.


* Where:
Build file '/home/budius/project_name/ActionBar-PullToRefresh/library/build.gradle' line: 1


* What went wrong:
A problem occurred evaluating project ':ActionBar-PullToRefresh:library'.
> SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.


* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.


BUILD FAILED


Total time: 6.378 secs


$ echo $ANDROID_HOME
/home/budius/Applications/android-studio/sdk
$

所以,你可以看到 ANDROID _ HOME 就在那里。他们还想要什么? 这里出了什么问题。

在 Ubuntu 13.04上运行

编辑:

我已经用项目根目录上的 sdk.dir=<path>创建了一个 local.properties 文件,它可以工作。但是,这使得代码更难以跨系统和构建服务器进行移植,因此问题仍然没有解决。

任何人都知道为什么 ANDROID _ HOME 无法工作,以及如何使它工作?

253420 次浏览

Android Gradle 插件仍处于测试阶段,这可能只是一个 bug。对我来说,设置 ANDROID _ HOME 工作,但我们可能在不同的版本(请再次尝试与最新的版本,让我知道它是否工作或不)。

同样值得设置环境变量 ANDROID _ SDK 和 ANDROID _ HOME。

我在一些机器上看到过这个问题,所以我们在这些情况下创建 local.properties ——我还注意到最新版本的 Android Studio 将为您创建这个文件并填写 sdk.dir 属性。

请注意,您不应该将 local.properties 检查到版本控制中,我们已经将其添加到我们的 gitignore 中,以便它不会干扰您正确识别为潜在问题的系统之间的代码移植。

我在打开一个克隆的 git 存储库时遇到了同样的问题。属性文件自动添加到。Gitignore 文件,因为它特定于每台机器的构建环境,因此不是回购的一部分。

解决方案是导入这个项目,而不是在你从 git 克隆它之后打开它,这会迫使 android 工作室创建特定于你的机器的 local.properties 文件:

文件 > > 导入项目 > >

我刚刚通过添加 ANDROID _ HOME 作为系统范围的变量解决了完全相同的问题。 在 Ubuntu 中,它应该在 /etc/profile中,或者在 < i >/etc/profile.d/中的 shell 脚本文件中

然后注销并再次登录,现在 Gradle 应该能够识别 ANDROID _ HOME 变量。

在 windows 中,我设置 ANDROID _ HOME = E: ANDROID adt-bundle-windows-x86 _ 64-20131030 sdk 那就像预期的那样。

在 Linux 中,需要设置 sdk.dir。

该脚本使用两个不同的变量。

我有同样的问题,似乎样本代码不能找到 android 环境,而是尝试修复,我只是删除样本代码,从 setings.gradle,然后安装好。

在那之后,只要在 eclipse 中导入项目,就可以了:)

我已经解决了这个问题,这对我有用:

进去

/my _ current _ project/

我创建了一个名为 本地物业的文件,并将其放入

Dir =/my _ current _ path _ to/sdk

在控制台我需要做的

设置 ANDROID _ HOME =/my _ current _ path _ to/sdk

希望这个能帮上忙。

在 Linux 中,尝试从一个终端运行 studio.sh 并在这个终端中设置 ANDROID _ HOME。

不管出于什么原因,gradle 脚本没有从环境中获取 ANDROID _ HOME 的值。尝试在命令行上显式地指定它

$ ANDROID_HOME=<sdk location> ./gradlew

我也遇到过类似的问题。不知为何,我的项目中没有构建文件夹。通过将这个文件夹从另一个项目复制到我的项目,我有一个问题,这修复了这个问题。

尽管我的主模块中有 local.properties 文件,而且 ANDROID _ HOME 环境变量设置在系统级,但我还是面临同样的问题。

解决这个问题的方法是将主项目模块中的 local.properties 文件复制到整个项目的根目录(即将目录父目录复制到主模块)

尝试在模块和根目录中复制 local.properties 文件。

在 OSX 上,IntelliJ 不会选择您在. bash _ profile 或. bash _ rc 等文件中设置的环境变量。

尝试这样做,替换您自己的 sdk 位置的值:

launchctl setenv ANDROID_HOME /usr/local/opt/android-sdk

然后重新启动 IntelliJ,Bob 就是你的叔叔了。

这里提到了这个问题,更笼统地说: Https://emmanuelbernard.com/blog/2012/05/09/setting-global-variables-intellij/

这对我有用:

$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew

只要删除 local.preproperties 文件中的 Sdk.dir并设置 安卓系统环境变量就可以了。

将 local.properties 复制到根文件夹并再次运行。

安装 Build-Tools 23.0.1而不是23.0.2为我修复了这个问题。

解决方案:

1 add“ sdk.dir = path _ of _ sdk”

2执行具有偶数变量的 gradlew,如下所示:

$ANDROID _ HOME = path _ of _ sdk./gradlw

在我的情况下 settings.gradle丢失。

保存该文件并将其放在项目的顶级文件夹中,即使您也可以从另一个项目进行复制。

截图参考:

enter image description here

希望这能节省你的时间。

在 shell 中导出 ANDROID _ HOME =/xxx/xxx/,然后在 gradle 文件中通过 System.env.ANDROID _ HOME 使用它。

附注: 不要忘记“ export”关键字,这样可以使 ANDROID _ HOME 全局化。

您的 local.properties 文件可能丢失了。如果是这样,在/local.properties 中添加一个名为“ local.properties”的文件,并提供 sdk 位置,如下所示。

Dir = C: 用户 AppData 本地 Android

这对我很有用(Ubuntu) :

ANDROID_HOME=/path/to/android-sdk添加到 /etc/environment

重启。

这个问题是2013年11月提出的(当时 Android Studio 还处于开发人员预览模式) ,

目前(AS v2.2,Aug-2016)在安装 AS 期间要求选择 SDK 文件夹(或默认安装) ,它会自动应用于您正在打开的任何项目。

这意味着任何可能的解决方案或修复都是不相关的,因为问题不再是可重复的了。

您说过对 local.properties 进行版本控制会给您带来问题。我已经编写了一个脚本,它使用 android 命令行工具跨生产所涉及的机器刷新 local.properties 文件。除了 本地物业之外,机器人升级项目命令还会产生许多不需要的垃圾(至少对我来说是这样) ,这就是脚本末尾所有这些 Rm命令的原因。

#!/bin/bash
scname="$0"
echo "${scname}: updating local properties..."
ln -fs src/main/AndroidManifest.xml
android update project -t 24 -p "$(pwd)"
echo "${scname}: ...done"
echo "${scname}: removing android update project junk ..."
rm -v project.properties
rm -v build.xml
rm -v proguard-project.txt
rm -v AndroidManifest.xml
echo "${scname}: ...done"

这个脚本是我们在任何新机器上运行的第一个代码。它必须在根项目目录中运行。当然,android 工作室可能有一个 GUI 方式来处理这个问题,但我不知道,因为我使用的是不同的编辑器。我也不能声称解决方案是通用的,但它是“为我工作”(tm)。

我在 Ubuntu 上也遇到过同样的问题(同时添加了 local.propertiesANDROID_HOME) ,但是构建失败仍然存在。所以解决办法就是 添加以下行

Export ANDROID _ HOME =/home/< user >/ANDROID/Sdk Export PATH = $PATH:/home/< user >/Android/Sdk/tools

直接到 studio.sh脚本(在 /usr/local/android-studio/bin中)

也许会有帮助。

如何在 MAC OSX 上做到这一点:

1)打开终端,并编辑: vi ~/.bash_profile如果没有文件,只是添加它。

2)添加(更改您的用户名并添加以下内容) :

# Java var home: JAVA _ HOME = “/usr/libexec/JAVA _ home” ANDROID _ HOME = “/Users/< YOUR USER NAME >/Library/ANDROID/sdk”

3)运行 source ~/.bash_profile

4)运行 echo $JAVA_HOME; echo $ANDROID_HOME;

5)如果你的输出是:

/usr/libexec/java _ home /用户/< 您的用户名 >/Library/Android/sdk

所以你是好人。

和重启机器人工作室!

还有, 确保你有 java:)

java -version

还有格拉德尔:)

gradle --version

MAC OSX:

  1. 打开终端并编辑文件:

~/.bash_profile

补充:

Export ANDROID _ HOME = ~/Library/ANDROID/sdk Export PATH = ${ PATH } : ${ ANDROID _ Home }/tools Export PATH = ${ PATH } : ${ ANDROID _ HOME }/Platform-tools

  1. 跑步:

    source ~/.bash_profile

  2. 重新启动终端和 Android Studio

如果您使用的是 Windows Plant form,请尝试以管理员身份运行 Android Studio

我遇到了同样的错误,但是在我的案例中,我正在克隆一个项目,克隆的项目是用 Android API 22构建的,当时我没有安装(我已经安装了 API 24和25) ... ... 所以我必须下载 API 22的 sdk 工具

视窗:

  1. 将 ANDROID _ HOME 添加到环境变量: ANDROID _ HOME = C:/Users/YOUR _ USERNAME/AppData/Local/ANDROID/sdk
  2. 将% ANDROID _ HOME% Platform-tools 添加到 PATH。

我已经把 abc 0设置为我的环境变量,这个解决方案对我有效。

在我的系统上(Ubuntu 20.04在两次从19.04版本升级之后) ,症状就像是 gradle(从 APT repos 安装的4.4.1版本)忽略了 ANDROID_HOME环境变量,而如果我创建了一个 sdk.dir值,就会从 local.properties中获得 sdk.dir值。

原因似乎是 java命令引用了 openjdk version "11.0.7"。在安装了 openjdk-8-jdk软件包并执行 update-alternatives --config java以使默认 java为版本8("1.8.0_252")之后,gradle开始按预期工作。

我的问题是那个目录不存在。Env vars 设置正确,但底层目录不存在。在第一次打开 AS 并让它创建目录之后,一切都正常。

echo $ANDROID_HOME
/Users/x/Library/Android/sdk


$ echo $ANDROID_SDK_ROOT
/Users/x/Library/Android/sdk


$ cd $ANDROID_HOME
-bash: cd: /Users/x/Library/Android/sdk: No such file or directory