SDK位置未找到 Android Studio + Gradle

48

我看到很多次发布了同样的问题,但每当我尝试在新的工作笔记本电脑中导入我的项目时,我都收到此错误。

我已经从git拉取了项目(在我的旧笔记本上运行良好)。

然后我去了sdk管理器,下载了所有工具和可用的SDK。 在欢迎屏幕中,我进入配置->项目默认值->项目结构。 Android SDK选项卡显示没有local.properties文件的项目路径为/Applications/Android Studio.app/sdk,这是正确的。 在SDKs下,我有所有可用的SDK都可见。 项目SDK设置为API 18。

然而,当我尝试构建我的项目时仍然出现此错误。 有人能告诉我我还没找到哪里吗?

我在尝试构建时使用的gradle版本为1.7,该版本是从services.gradle.org下载的。


我没有更改路径的问题,我知道如何做,就像我上面说的那样。一切都设置正确了。 - Mathijs Segers
1
@MathijsSegers 请检查settings.gradle文件是否包含在项目的根目录中。 - JJD
这个问题已经存在很长时间了,但最终被某些随机因素修复了。 - Mathijs Segers
当时我通过建立一个新的开发环境来解决了这个问题。现在你应该手动下载SDK文件,并且在打开项目之前应该能够链接它们。检查答案以获取可能的解决方案。 - Mathijs Segers
我相信这就是让新手无法为开源项目做出贡献的原因。天哪,我多么讨厌Gradle啊。 - frankelot
显示剩余2条评论
13个回答

51

我曾经遇到过非常类似的情况(在另一台机器上有一个项目,将其克隆到我的笔记本电脑上,并看到了相同的问题),然后我查看了它。

错误消息来自于 Android gradle 插件的 Sdk.groovyhttps://android.googlesource.com/platform/tools/build/+/master/gradle/src/main/groovy/com/android/build/gradle/internal/Sdk.groovy

通过查看代码,他的 findLocation 需要设置 androidSdkDir 变量,并且只有三种方法可以实现:

  • 创建 local.properties 文件并有 sdk.dir 或者 android.dir 行。
  • 定义 ANDROID_HOME 环境变量。
  • System.getProperty("android.home") - 我不确定它是如何工作的,但它似乎是 Java 的东西。

虽然你的 Android Studio 知道 SDK 在那个位置,但我怀疑 Android Studio 没有将这些信息传递给 Gradle,因此我们会看到这个错误。

我在项目根目录下创建了 local.properties 文件,并添加了以下行,然后它成功编译了代码。

sdk.dir = /Applications/Android Studio.app/sdk/


哦,它仍然开着,显然我们通过从旧机器复制所有文件而不是使用git来解决了它...........所以仍然不知道为什么,但问题已经解决了。 - Mathijs Segers
1
有时候Android Studio无法读取ANDROID_HOME环境变量,如果出现这种情况,你只需要使用local.properties文件即可。该文件通常由Android Studio构建,但并非总是如此... - kenyee
1
请注意,在Windows上,完整路径似乎无法正常工作(即c:\ whatever \ sdk)。它似乎需要在同一驱动器上,并且是从根目录的绝对路径(即/whatever/sdk)。 - Timothy Lee Russell
我会接受这个答案,因为它有最多的赞。我们的项目最初来自Eclipse,我可能能够找出当时出了什么问题,但这看起来像是可能的问题,并且应该是最常见的问题。 - Mathijs Segers
请重新启动整个Android Studio,确保修改生效。 - k4dima
注意,SDK的位置似乎不再在答案中提到的路径上。我通过进入“配置”按钮下的“SDK管理器”找到了我需要的路径。然后,在“Android SDK”部分中,有一个顶部标记为“Android SDK位置”的字段,其中包含有效的值。 - Fralcon

12

在根目录下创建local.properties文件解决了我的问题,我从GitHub上拉取后不知怎么就丢了这个文件。

现在我的local.properties文件是这样的:

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must *NOT* be checked into Version Control Systems,
# as it contains information specific to your local configuration.
#
# Location of the SDK. This is only used by Gradle.
# For customization when using a Version Control System, please read the
# header note.
#Sat Feb 06 11:53:03 EST 2016

sdk.dir=/Users/****/Library/Android/sdk

4

2
为了解决这个问题,我需要在Windows操作系统中定义ANDROID_HOME环境变量。
为此,我打开了系统控制面板。在左侧栏中选择“高级系统设置”。在“高级”选项卡上,我在底部选择了“环境变量”。
在这里,我没有定义ANDROID_HOME变量。对于这种情况,我选择“新建...”,并且:
1)对于“变量名称”,我键入了ANDROID_HOME
2)对于“变量值”,我键入了我的SDK文件夹的路径,例如"C:\...\AppData\Local\Android\sdk"
然后,我关闭并重新打开了Android Studio,一切都正常工作了。
感谢Dibish(https://stackoverflow.com/users/2244411/dibish)的一篇帖子给了我这个想法。

2

如果这些解决方案都不适用于你(就像在我的MacBook Pro上的某个项目中一样),你总可以尝试使用别名命令运行Android Studio,并且每次运行时传递sdk.dir

alias studio='launchctl setenv ANDROID_HOME '\''/Users/username/Library/Android/sdk'\'' && open -a '\''Android Studio'\'''

一个关于如何传递别名的示例可以帮助,请。 - Richard Miller

1

我在IntelliJ 12中也遇到了同样的问题,即使我设置了ANDROID_HOME环境变量,它仍然会出现相同的错误。最终我在项目根目录下创建了local.properties文件(我的项目有一个主项目和一些子模块在自己的目录中)。这解决了错误。


1
在根目录的local.properties中指定sdk.dir=<SDK_PATH>解决了我的问题。

0
在我的具体情况下,我尝试使用react-native init安装过程创建React Native应用程序时遇到了讨论的问题。
FAILURE: Build failed with an exception.

* What went wrong:

A problem occurred configuring project ':app'.
> SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting the sdk.dir path in your project's local properties file at 'C:\Users\***\android\local.properties'.

我加入这段内容是因为在使用React Native开发Android应用时,许多答案提到的“根目录”实际上是指Android文件夹的根目录(而不是项目根目录,即App.js所在的位置)。这也可以从错误信息中标记的目录中清楚地看出。
要解决这个问题,只需在android文件夹中添加一个local.properties文件,并键入以下内容:
sdk.dir=C:/Users/{user name}/AppData/Local/Android/Sdk

请务必添加本地磁盘的引用('C:/ '),因为在我的情况下否则无法正常工作。

0

我克隆了 libgdx 的演示,但无法导入项目。它也会提醒如下。

Env:

Eclipse(Android-ADT)

window 7

所以我在项目根目录下创建了local.properties文件,如下所示

sdk.dir = D:/adt-bundle-windows-x86/sdk

希望这能帮助到其他人!


0
如果你从GitHub上克隆了一个项目,然后按照这里提到的方法尝试了一些但没有成功,包括:
- 编辑local.properties中的sdk.dir - 尝试设置ANDROID_HOME环境变量 - 或者像kasiara所提到的那样添加一个别名
那么你应该检查一下是否在尝试构建一个作为更大项目的一部分的目录项目,这可能会导致问题。 因此加载整个项目,然后运行你想要的项目目录。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接