NDK 不包含任何平台

Posted

技术标签:

【中文标题】NDK 不包含任何平台【英文标题】:NDK does not contain any platforms 【发布时间】:2019-10-07 06:56:40 【问题描述】:

我想安装 NDK 以便能够使用 C/C++ 本机库。在尝试安装 NDK 时,我收到一条错误消息,提示我的 C: 驱动器中没有足够的磁盘空间(因为下载位置位于临时文件夹)。

我已尝试更改系统变量中的临时路径,但 ndk 仍会下载到 C:\Users\User\Appdata\Local\Temp\PackageOperation02。

然后我转到项目结构以更改 android NDK 位置,但在尝试选择任何文件夹作为我的 NDK 位置时,我收到一条错误消息,提示“”。

对于这方面的帮助或下载位置为何位于 Temp 文件夹的原因,我们将不胜感激。

【问题讨论】:

您是否尝试将其移动到包含空格的路径?不能从包含空格的路径使用 NDK。 名称中有空格?不,我要下载 ndk 的路径是 E:\Temp 这看起来像一个副本:***.com/questions/46741528/… 这能回答你的问题吗? NDK is missing a "platforms" directory. while trying to build 【参考方案1】:

对于 2021 年看到此内容的人:

自 r19 以来,Android NDK 的 platform 目录已过时。 NDK 团队removed it altogether in r21 2021 年 1 月。虽然已经过时,但仍然可以在 Project Structure 窗口中导致上述错误。当您选择 r21 或更高版本并尝试应用时,Android Studio IDE 的稳定版本(至少在 Mac 上)仍在寻找platform 目录。 IDE 报错“NDK 不包含任何平台。”

在 Android Studio 更新为停止查找 platform 之前,您可以自己编辑 local.properties 文件,如下所示:

ndk.dir=/Users/[username]/Library/Android/sdk/ndk/22.0.7026061
sdk.dir=/Users/[username]/Library/Android/sdk

这是“项目结构”窗口通常在幕后为您做的事情。

【讨论】:

在我的情况下,我无法更改 JDK 位置,直到我从 local.properties 中删除 ndk.dir。删除它后,我可以再次更改 JDK 位置。 ?这不起作用,更改此 local.properties 只是 ndk 的位置,它也会寻找平台。 @flankechen 平台目录不再在 NDK 中,所以没有什么可找的。您可以使用 local.properties 文件指向 NDK,而不是使用 UI 窗口来规避错误。 @jowo 谢谢,是的,ndk 22 没有平台,最新的 android studio 正在寻找它,无论使用 local.properties 还是 ui 窗口,事实上,我什至找不到使用 ndk 22 的正确方法现在。 Android Studio 将继续在“项目结构”窗口中显示该错误,您可以忽略该错误。如果即使在尝试运行您的应用程序时它也给您一个平台错误,那将是一个不同的问题。【参考方案2】:

ndk 的目录现在位于名为 ndk 和 ndk-bundel 的 sdk 文件夹中,但是现在 ndk 的分配发生了变化,我们需要像这样在 Android Gradle Plugin (AGP) 中添加 ndk 版本

android 
   ndkVersion "version" // e.g.,  ndkVersion '21.3.6528147'

您还需要从 sdk 管理器的 SDK 工具中安装 CMake,并且还需要从 Gradle 中进行设置,如下所示

android 
...
externalNativeBuild 
    cmake 
        ...
        version "cmake-version"
    

【讨论】:

【参考方案3】:

当我使用“SOME_DIRECTORY/ndk”之类的东西设置 NDK 目录时,我遇到了同样的问题。

我通过将其设置为“SOME_DIRECTORY/ndk/21.0.6113669”解决了这个问题。

【讨论】:

从 SDK Manager 下载 ndk 包后,我选择目录为 ndk/22.0.7026061。它仍然有同样的问题。我尝试在 local.properties 中设置路径变量或 ndk.dir。就这样【参考方案4】:

您可能需要旧版本的 ndk,例如 android-ndk-r20b。因为我发现解压后的android-ndk-r22文件夹中没有platforms目录。我通过将 Android Studio 配置为 android-ndk-r20b 解决了这个问题。这是下载链接https://developer.android.com/ndk/downloads/older_releases

【讨论】:

【参考方案5】:

正如https://developer.android.com/studio/projects/install-ndk 所建议的那样 如果您使用 3.5.0 以上的 gradle 版本并卸载旧版 NDK,则应从项目的 local.properties 文件中删除现已弃用的 ndk.dir 值。

【讨论】:

【参考方案6】:

这类似于@YuuY 的回答。由于我无法添加屏幕截图以发表评论,因此我发布了一个新答案。

文件 > 项目结构...> 确保目录路径包含版本号(例如 C:\Users...\ndk\21.3.6528147)

【讨论】:

【参考方案7】:

自 r19 以来,Android NDK 的平台目录已过时。 NDK 团队在 2021 年 1 月的 r21 中将其完全删除。虽然已过时,但仍会在 Project Structure 窗口中导致上述错误。当您选择 r21 或更高版本并尝试应用时,Android Studio IDE 的稳定版本(至少在 Mac 上)仍在寻找平台目录。 IDE 报错“NDK 不包含任何平台。”

在 Android Studio 更新停止寻找平台之前,您可以自己编辑 local.properties 文件,如下所示:

sdk.dir=C\:\\Users\\YOUR USER NAME\\AppData\\Local\\Android\\sdk
ndk.dir=C\:\\Users\\YOUR USER NAME\\AppData\\Local\\Android\\sdk\\23.0.7421159
flutter.sdk=C\:\\src\\flutter

【讨论】:

【参考方案8】:

我建议使用ANDROID NDK REVISION HISTORY

下载r18b或任何适合你的版本,手动下载,解压到SDK文件夹中。

然后进入Android Studio中的项目

编辑 local.properties 文件并添加 ndk.dir=path-to-sdk/android-ndk-r18b

【讨论】:

【参考方案9】:

对我来说,解决方案实际上是从 local.properties 中删除 ndk 位置

所以

ndk.dir=/Users/[username]/Library/Android/sdk/ndk/22.0.7026061
sdk.dir=/Users/[username]/Library/Android/sdk

会变成

sdk.dir=/Users/[username]/Library/Android/sdk

【讨论】:

【参考方案10】:

就我而言,我使用的是 Windows 11 和 Android studio Artic Fox 2020.3.1 补丁 2

我尝试了以上所有选项都不起作用,但是当我更新我的 Gradle 版本时,它自动解决了我的问题

dependencies 
        classpath 'com.android.tools.build:gradle:7.0.2'

希望这对某人有所帮助。

【讨论】:

以上是关于NDK 不包含任何平台的主要内容,如果未能解决你的问题,请参考以下文章

译NDK入门

Linux下NDK编译FFMPEG包含neon参数

[lua]安卓ndk如何编译lua库

不更新目标NDK平台有啥好处吗?

错误记录Visual Studio 中配置 NDK 头文件路径

带有ndk平台错误帮助'_IOR'的c ++未在此范围内声明