47

我已经看到同样的事情发布了很多次,但是每当我尝试将我的项目导入我的新工作笔记本电脑时,我都会不断收到这个错误。

我已经从 git 中提取了这个项目(他的 btw 在我的旧笔记本电脑上运行良好)。

然后我去了 sdk manager,下载了所有的工具,以及所有可用的 SDK。在欢迎屏幕中,我转到配置 -> 项目默认值 -> 项目结构。Android SDK 选项卡说没有 local.properties 的项目的路径将是 /Applications/Android Studio.app/sdk 这是正确的。在 SDKs 下,我可以看到所有可用的 SDK。项目 SDK 设置为 API 18

然而,在尝试构建我的项目时,我仍然收到此错误。谁能告诉我我还没有看过哪里?

尝试构建从 services.gradle.org 下载的构建时,我正在运行 gradle 1.7

4

13 回答 13

51

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

错误消息来自Sdk.groovyAndroid gradle 插件: https://android.googlesource.com/platform/tools/build/+/master/gradle/src/main/groovy/com/android/build/gradle/internal/Sdk。时髦的

通过查看代码,它findLocation需要设置androidSdkDir变量,并且只有三种方法可以做到:

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

虽然您的 Android Studio 知道 SDK 位于该位置,但我怀疑 Android Studio 是否正在将该信息传递给 gradle,因此我们看到了该错误。

local.properties在项目根目录创建了文件并放入以下行,它成功编译了代码。

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

于 2013-11-06T11:21:29.880 回答
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
于 2016-02-14T00:08:16.070 回答
4

我在这里找到了解决方案:

http://xinyustudio.wordpress.com/2014/07/02/gradle-sdk-location-not-found-the-problem-and-solution/

只需创建一个文件 local.properties 并添加一行 sdk.dir=SDK_LOCATION

于 2014-08-27T14:45:49.453 回答
2

如果在其中一个项目中的 macbook pro 上发生在我身上的任何答案都不适合您,您可以随时尝试使用别名命令运行 Android Studio,每次运行时传递sdk.dir :

alias studio='launchctl setenv ANDROID_HOME '\''/Users/username/Library/Android/sdk'\'' && open -a '\''Android Studio'\'''
于 2016-08-03T09:41:15.443 回答
2

为了解决这个问题,我必须ANDROID_HOME在 Windows 操作系统中定义环境变量。

为此,我去了系统控制面板。
我在左栏中选择了“高级系统设置”。
在“高级”选项卡上,我选择了底部的“环境变量”。

在这里,我没有ANDROID_HOME定义变量。对于这种情况,我选择了“新建...”,并且:
1) 对于“变量名称”我输入了ANDROID_HOME
2) 对于“变量值”,我输入了我的 SDK 文件夹的路径,例如"C:\...\AppData\Local\Android\sdk"

然后我关闭了 Android Studio 并重新打开,一切正常。

感谢 Dibish ( https://stackoverflow.com/users/2244411/dibish ) 他的一篇文章给了我这个想法。

于 2017-07-06T17:17:13.823 回答
1

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

于 2014-01-23T21:29:01.503 回答
1

sdk.dir=<SDK_PATH>local.properties根文件夹中指定解决了我的问题。

于 2015-02-23T07:23:53.507 回答
0

我克隆libgdx演示,无法导入项目。它也像这样提醒。

Env:

Eclipse(Android-ADT)

window 7

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

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

我希望这可以帮助别人!

于 2014-08-27T07:41:46.403 回答
0

如果您不想(或不知道如何)创建新的 local.properties 文件,则将 local.properties 文件从您在新计算机上创建的项目复制并粘贴到包含旧计算机项目的文件夹中也可以使用.

于 2016-07-14T15:51:00.143 回答
0

我注意到,如果我首先尝试从命令行构建,则在使用新计算机时会出现此错误。但是,如果我从 Android Studio 构建,它会检索 SDK 并自动创建目录。然后,当我从命令行构建时,它可以工作。

于 2017-07-01T13:49:29.443 回答
0

您还必须使用 SDK Manager 确保在您的环境中安装了正确的 SDK 平台版本。

于 2018-08-11T21:06:04.523 回答
0

例如,如果您从 GitHub 克隆了一个项目,并且您尝试了此处提到的方法但没有成功,包括:

  • 在 local.properties 中编辑 sdk.dir
  • 尝试设置 ANDROID_HOME 环境变量
  • 或者添加一个别名作为 kasiara 提到

您应该尝试查看您是否正在尝试构建一个属于更大项目的目录项目,因此它可能会导致问题。所以加载整个项目,然后运行你想要的项目目录。

于 2019-01-14T19:35:10.900 回答
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:/'),因为在我的情况下它不起作用。

于 2019-06-06T12:55:57.287 回答