编辑:(2016 年 8 月)
这个问题来自 2013 年 11 月(当时 Android Studio 仍处于开发者预览模式),
目前(AS v2.2,2016 年 8 月)在安装期间,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 文件,它可以工作。但这使得代码更难跨系统 n 构建服务器移植,所以问题仍然存在。
任何人都知道为什么 ANDROID_HOME 不工作以及如何使其工作?
settings.gradle
文件添加到项目文件夹中。
我已经解决了这个问题。这对我有用:
在
/my_current_project/
我创建了一个名为 local.properties 的文件并将其放入
sdk.dir=/my_current_path_to/sdk
在控制台中我需要做
设置 ANDROID_HOME=/my_current_path_to/sdk
希望这可以帮助。
在 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/
launchctl setenv ANDROID_HOME ~/Library/Android/sdk
launchctl setenv ANDROID_HOME $ANDROID_HOME
和 launchctl setenv JAVA_HOME $JAVA_HOME
在我的情况下,settings.gradle
丢失了。
保存文件并将其放在项目的顶层文件夹中,即使您也可以从另一个项目中复制。
截图参考:
https://i.stack.imgur.com/h4C2a.png
希望这会节省您的时间。
这对我有用:
$ export ANDROID_HOME=/path_to_sdk/
$ ./gradlew
Android Gradle 插件仍处于测试阶段,这可能只是一个错误。对我来说,设置 ANDROID_HOME 有效,但我们可能使用不同的版本(请使用最新版本再试一次,让我知道它是否有效)。
设置环境变量 ANDROID_SDK 和 ANDROID_HOME 也是值得的。
我已经在某些机器上看到了这个问题,所以我们确实在这些情况下创建了 local.properties - 我还注意到最新版本的 Android Studio 将为您创建这个文件并填写 sdk.dir 属性。
请注意,您不应该将 local.properties 检查到版本控制中,我们已将其添加到我们的 gitignore 中,这样它就不会干扰跨系统移植您正确识别为潜在问题的代码。
sdk.dir=/path/to/android/sdk
对我有用。我正在运行 gradle 作为使用 IntelliJ 13.0.2 创建的项目的一部分
无论出于何种原因,gradle 脚本都没有从环境中获取 ANDROID_HOME 的值。尝试在命令行上明确指定它
$ ANDROID_HOME=<sdk location> ./gradlew
我遇到了同样的问题,尽管我的主模块中有 local.properties 文件,并且在系统级别设置了 ANDROID_HOME 环境变量。
解决此问题的方法是,我将主项目模块中的 local.properties 文件复制到整个项目的根目录(即主模块的父目录)
尝试在模块和根目录中复制 local.properties 文件。应该管用。
打开克隆的 git 存储库时遇到了同样的问题。 local.properties 文件会自动添加到 .gitignore 文件中,因为它特定于每台机器的构建环境,因此不是 repo 的一部分。
解决方案是导入项目,而不是在从 git 克隆项目后打开它,这会强制 android studio 创建特定于您机器的 local.properties 文件:
文件 >> 导入项目 >>
MAC OSX:
打开终端并编辑文件:
~/.bash_profile
添加:
export ANDROID_HOME=~/Library/Android/sdk export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platform-tools
运行:source ~/.bash_profile 重启终端和Android Studio
如何在 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 /Users/<YOUR USER NAME>/Library/Android/sdk
所以你很好。
并重新启动安卓工作室!
而且,确保你有 java :)
java -version
和毕业:)
gradle --version
export ANDROID_HOME
ANDROID_HOME
然后执行 source ~/.bash_profile
,这是永久的(如果您不想注销并重新启动,则执行 source
很好)。在您的情况下,使用 export ANDROID_HOME
,在重新启动或登录后,mac 中的环境变量 ANDROID_HOME
将消失。
将 local.properties 复制到根文件夹并再次运行。
这对我有用(Ubuntu):
将 ANDROID_HOME=/path/to/android-sdk
添加到 /etc/environment
。
重启。
在 Windows 中,我设置 ANDROID_HOME=E:\android\adt-bundle-windows-x86_64-20131030\sdk 然后它按预期工作。
在 Linux 中,您需要设置 sdk.dir。
该脚本使用两个不同的变量。
sdk.dir=C:\\Users\\username\\AppData\\Local\\Android\\Sdk
这样的路径
我有同样的问题,似乎示例代码找不到android环境,而是尝试修复我只是从settings.gradle中删除示例代码,然后安装正常。
之后只需在eclipse中导入项目就可以了:)
在 Linux 中,尝试从终端运行 studio.sh 并在此终端中设置 ANDROID_HOME。这对我有用。
如果您使用的是 windows Plantform,请尝试以管理员身份运行 Android Studio
只需删除 local.preoperties 文件中的 sdk.dir 并设置 ANDROID_HOME 环境变量。它对我有用。
在 shell 中导出 ANDROID_HOME=/xxx/xxx/,然后在 gradle 文件中由 System.env.ANDROID_HOME 使用。
PS:不要忘记'export'关键字使ANDROID_HOME全局化。
export
需要注意。我定义了 ANDROID_HOME
,甚至将其添加到 PATH
,但如果您不 export ANDROID_HOME
,gradle 将无法找到它。
您的 local.properties 文件可能丢失。如果是这样,在 /local.properties 中添加一个名为“local.properties”的文件,并提供如下 sdk 位置。
sdk.dir=C:\Users\\AppData\Local\Android\Sdk
我已将 ANDROID_HOME = [PATH_OF_MY_ANDROID_SDK] 设置为我的环境变量。该解决方案对我有用。
我刚刚通过将 ANDROID_HOME 添加为系统范围的变量解决了完全相同的问题。在 Ubuntu 中,它应该在 /etc/profile 或 /etc/profile.d/ 的 shell 脚本文件中
然后注销并再次登录,现在 Gradle 应该可以识别 ANDROID_HOME 变量。
我遇到了类似的问题。不知何故,我的项目中没有构建文件夹。通过将此文件夹从另一个项目复制到我遇到的问题,这解决了这个问题。
安装 Build-Tools 23.0.1 而不是 23.0.2 为我解决了这个问题。
解决方案:
1 添加“sdk.dir=path_of_sdk”
2 使用 evn 变量执行 gradlew,如下所示:
$ANDROID_HOME=path_of_sdk ./gradlw
您说版本控制 local.properties 会给您带来问题。我已经编写了一个脚本,该脚本使用 android 命令行工具在生产中涉及的机器上刷新 local.properties 文件。 android update project 命令,除了 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 studio 可能有一种 GUI 方式来处理这个问题,但我不知道,因为我使用的是不同的编辑器。我也不能声称该解决方案是通用的,但它“对我有用”(tm)。
我在 Ubuntu 上遇到了同样的问题(添加了 local.properties
和 ANDROID_HOME
),但构建失败仍然存在。所以解决方法是添加以下行
export ANDROID_HOME=/home/<user>/Android/Sdk export PATH=$PATH:/home/<user>/Android/Sdk/tools
直接到 studio.sh
脚本(在 /usr/local/android-studio/bin
内)
也许会有所帮助。
我遇到了同样的错误,但在我的情况下,我正在克隆一个项目,克隆的项目是用我当时没有安装的 Android API 22 构建的(我安装了 API 24 和 25)........所以我必须下载 API 22 的 sdk 工具
对于 Windows:
将 ANDROID_HOME 添加到环境变量: ANDROID_HOME = C:/Users/YOUR_USERNAME/AppData/Local/Android/sdk 将 %ANDROID_HOME%\platform-tools 添加到 PATH。
在我的系统上(从 19.04 升级两个版本后的 Ubuntu 20.04),症状就像 gradle
(从 APT 存储库安装的 4.4.1)忽略了 ANDROID_HOME
环境变量,同时从 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