如何修复Android Studio 2.3的NDK错误?

57

我认为这是一个bug,因为在新的更新之前我没有遇到过任何问题。所以我无法使用Gradle控制台来调试我的应用程序,因为出现了以下警告 -

"Configuration on demand is an incubating feature. NDK is missing a "platforms" directory. If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to C:\Users\Emily Thacker\AppData\Local\Android\Sdk\ndk-bundle. If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning."

我很确定我没有使用NDK,也不知道该如何解决这个问题,以下是我的local.properties文件内容:

## This file is automatically generated by Android Studio.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file should *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.
sdk.dir=C\:\\Users\\Emily Thacker\\AppData\\Local\\Android\\Sdk

我在目录中找不到ANDROID_NDK_HOME文件。


你正在使用哪个版本的Gradle? - HarshitMadhav
4
我使用的版本是3.3。 - Ryder Thacker
1
这是一个Android Gradle插件的bug,已经在这里报告:https://code.google.com/p/android/issues/detail?id=228424 - xsveda
1
错误报告记录(https://issuetracker.google.com/issues/37127636#comment26)说明该警告将在Gradle插件版本2.4及以上中修复。 - Matt
18个回答

33

我成功地避免了这个讨厌的提示消息,以下是我所采用的方法。

背景:

  1. 我根本没有使用NDK,也从未安装过NDK。

  2. 然而,正如xsveda在另一个答案中提到的那样,这是一个Gradle bug,它在这里有所记录:

    https://code.google.com/p/android/issues/detail?id=228424

    因此,即使是“不知情”的NDK用户也可能成为其受害者。

  3. 问题在于,Gradle仅仅通过将字符串“/ndk-bundle”附加到SDK文件夹位置来计算NDK文件夹的位置,即使您从未安装过NDK。

  4. 在建立了这种错误的NDK文件夹存在于特定位置的期望之后,每次构建时,Gradle都会给出一个警告,指出您“缺少”该文件夹。这只是一个警告,不影响构建完成,但很烦人。

我如何停止这个讨厌的消息:

由于磁盘空间便宜,我的时间对我来说非常宝贵,因此我通过安装NDK来应对这个问题,尽管我不打算使用它。

要做到这一点,您可以转到:

文件->项目结构->SDK位置

并查看Android NDK位置字段。如果您没有安装NDK,则此字段将为空。

在这种情况下,该字段下面会有一个链接,用于安装NDK。单击该链接并安装它。这需要几分钟的时间。

安装完成并关闭安装进度对话框后,NDK的位置将自动写入Android NDK位置字段。这将类似于:

C:\dev\astudiosdk\ndk-bundle

单击“确定”按钮并再次构建。错误消息消失了。

请注意,您可能只需在此字段中键入预期的文件夹名称即可;我没有尝试过。但是我不知道这是否会引起其他问题,特别是如果您最终决定实际使用NDK。

15

通过从SDK根目录中删除一个空的ndk-bundle文件夹来解决此问题(不知道为什么和何时出现):

ndk-bundle folder in android SDK folder

以下是从Android Bug跟踪问题页面的解释,说明它为什么有用:

对于仍在使用插件3.0.0-alpha1或更高版本的人,请提交一个新的错误报告,并尝试回答 #33 中的所有问题。我们需要更多信息来调试问题,并在已关闭的Bug上添加评论很容易使其丢失。

为了简单介绍一下,该插件会检查NDK目录是否有效。您很可能没有使用NDK。我们自动假定它在{sdk} / ndk-bundle中,如果 {sdk}/ndk-bundle不存在,则会忽略它。如果您看到“NDK缺少'平台'目录”,则意味着存在{sdk} / ndk-bundle,但不存在{sdk} / ndk-bundle / platforms目录。这意味着由于某种原因您拥有损坏的NDK。如果您没有使用它,只需删除{sdk}/ndk-bundle即可安全地删除。


4
抱歉,但我从未拥有过 ndk-bundle,也没有 ANDROID_NDK_HOME。那个解决方案不起作用。 - Davideas
1
@Davidea请查看其他响应。对我来说,这是一个问题。我从未创建过这个文件夹。 - Oleksandr
1
对我来说这个方法有效;可能是因为我开始下载了 NDK(在 Project Structure -> SDK Location -> Download Android NDK),然后取消了进程。第一步可能是创建了这个目录,而取消并没有将其删除。 - leizeQ
2
我也试过了,这是最简单的解决方案,如果您在SDK目录中有空的“ndk-bundle”文件夹,那么使用它是最合理的选择。 - Gatsby

14

我遇到了这个问题:

NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory.  It is currently set to /Users/<user_name>/Library/Android/sdk/ndk-bundle.

我通过在ndk-bundle文件夹中创建一个空的platforms文件夹来解决这个问题。像这样:path/to/your/Android/sdk/ndk-bundle/platforms.

如果你没有ndk-bundle文件夹,请按照以下步骤安装 NDK(安装NDK截图):

  • 打开Preferences
  • 从左侧菜单进入Android SDK
  • 选择SDK Tools
  • 勾选 NDK
  • 点击应用并确认

Gradle版本:6.3

Android Studio版本: Android Studio 4.1.1 Build #AI-201.8743.12.41.6953283, built on November 5, 2020

PS:我从https://docs.gradle.org/current/userguide/installation.html手动安装了gradle。


这是针对已安装 NDK 的人的直接指导。 - V-SHY

13

只需安装Android NDK即可。

这样就修复了我的错误和警告!

https://istack.dev59.com/Lsu8E.webp

  1. 进入Tools -> Android -> SDK Manager
  2. 点击SDK Tools
  3. 勾选NDK
  4. 应用并退出。

好的,以下是安装NDK的步骤:
  1. 进入工具。
  2. Android SDK管理器。
  3. SRK工具。
  4. 勾选NDK并点击应用,然后点击确定!
  5. 重新构建。
- RagsB
6
不需要安装不使用的东西。 - JohnyTex

10

看起来从Android Studio IDE更新SDK可能会有所帮助

步骤如下:

  1. 进入 工具 (顶部菜单项) > Android > SDK管理器
  2. 点击SDK工具选项卡
  3. 滚动到 NDK 复选框更新选项

这里有屏幕截图:如何原地更新Android NDK?


2
那并不能解决问题,它只是下载了NDK,而你可能没有任何充分的理由去下载它。 - CorayThan

7
你可以尝试一下:
在Android Studio中已经有一个复选框。
Android Studio -> 首选项 -> 编译器 -> Gradle -> 命令行选项 -> 配置按需
取消选择它,然后再次同步gradle。

enter image description here


这可能是由于快速构建过程引起的。 - HarshitMadhav
2
@RyderThacker 取消勾选它,然后再次同步Gradle。 - HarshitMadhav

2

在安装Android SDK时,不应使用包含空格的目录路径。一个简单的解决方法是手动更改目录路径。

sdk.dir=C:/Users/EMILYT~1/AppData/Local/Android/Sdk

您不需要安装NDK。


我应该把这个东西写在哪里?在gradle.properties文件中吗? - earthdan
2
@earthdan local.properties - Alex Cohn

1
更新Android Studio SDK工具中的NDK解决了我的问题。

0

进入Gradle Scripts,然后进入local.properties并正确设置SDK和NDK位置,在我的情况下设置如下:

ndk.dir=F:\AndroidSDK\ndk-bundle sdk.dir=F:\AndroidSDK


0

这种类型的错误声明是:

  1. NDK缺少“platforms”目录。
  2. 如何设置ANDROID_NDK_HOME,以便Android Studio不要询问ndk位置?

解决方案

打开您的build.gradle文件,您会看到两个gradle路径,如下所示: classpath 'com.android.tools.build:gradle:2.3.0' classpath 'com.android.tools.build:gradle:2.2.0'

您可以删除其中一个classpath并仅保留一个classpath。

清理项目gradlew clean

这对我有用,无需设置ndk路径或ndk设置。

Android Studio NDK 2.3 BUG


1
这似乎是一个问题,您尝试使用两个版本的Gradle,并选择保留2.2.0,这样“修复”了该错误。您建议的是降级到2.2.0,这并不是使用2.3并解决此错误的解决方案。 - user888750
使用任何已安装的Gradle版本,例如classpath 'com.android.tools.build:gradle:2.2.0'。 - Expert Suggestion
对于那些需要插件2.3但由于构建错误无法返回2.2的人来说,这并不是一个完美的解决方案... - andreszs

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