在更新到Android Gradle插件3.6.0(2020年2月24日发布)后,几个独立的项目开始失败:

No version of NDK matched the requested version 20.0.5594570. Versions available locally: 21.0.6113669

通过安装旧的期望的ndk版本来在本地“修复”这个问题非常简单:

sdkmanager 'ndk;20.0.5594570'

然而,我的问题是:在哪里以及如何指定这个旧版本?如何更新它以匹配最新版本21.0.6113669?


以下解决方案假设您正在使用的机器目前已经安装了NDK,并且之前能够构建您的项目,但在更新到Android Gradle插件3.6.0后,开始出现错误“没有NDK匹配请求的版本”。在继续之前,请确保安装了NDK。

选项1:

你可以在项目结构对话框中选择本地安装的NDK

你可以打开项目结构对话框点击文件>项目结构…或按热键CTRL + ALT + SHIFT + S(在windows)

一旦项目结构对话框打开,转到SDK位置,在Android NDK位置下选择您本地安装的NDK版本。通常这是安装在你的用户文件夹的某个地方,然后是\AppData\Local\Android\Sdk\ndk\%ndk version%至少Windows是这样。

-来自Android Studio 3.6 Build #AI-192.7142.36.36.6200805,于2020年2月12日构建

选项2:

执行选项1将编辑您的本地。属性文件,将在大多数情况下工作。但是如果你想在你构建项目的所有机器上使用一致的NDK版本,根据这个官方指南,你可以从你的模块gradle脚本中配置它。简单地在你的模块gradle脚本的android{}块中添加ndkVersion。

android {
    ndkVersion "major.minor.build"
}

用你想要使用的NDK版本替换双引号之间的字符串

选项3:

如果你想要在特定机器上构建的所有项目都使用相同的NDK版本,你也可以设置ANDROID_NDK_HOME环境变量和NDK文件夹的路径。


我也有同样的问题。我通过SDK工具下的SDK管理器解决了这个问题,单击显示包详细信息,然后在NDK下滚动(并排),勾选并应用您需要的版本。见下图:

我的问题是,为什么我们现在需要这个不需要NDK的项目?事实证明,NDK在我工作的项目中是一个已经存在的需求!


这不是必要的Android gradle插件> 4.1.0(也见https://issuetracker.google.com/issues/144111441)

对于< 4.1.0,我也遇到了这种情况

没有与请求版本20.0.5594570匹配的NDK版本。版本 本地可用:21.0.6113669

选项1:

你可以简单地在项目结构对话框中选择你本地安装的NDK !

但只对本地构建有效,我需要一个解决方案的CI

选项2:

只有在每个使用的模块中指定它时,它才有效

android {
    compileSdkVersion 28
    ndkVersion "21.0.6113669"
    ...
}

这里似乎不工作https://github.com/hannesa2/panoramagl/pull/17/checks与这个改变https://github.com/hannesa2/panoramagl/pull/17/files#diff-cff4e8c294a5dc5e76308662ae1ddcacR6-R7

选项3:

export ANDROID_NDK_HOME=/Users/{my-user}/Development/adt/sdk/ndk/21.0.6113669

也同样有效!


在构建中将类路径版本更改为3.5.0。Gradle,项目级别。

dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
}

我也有同样的问题,但已经解决了。


我也有同样的问题,过了一段时间我找到了一个临时的解决方案。 将NDK文件夹重命名为NDK -bundle。 在你的项目中去当地。在sdk.dir之前添加这一行:

ndk.dir=<path to your ndk folder>

我:

ndk.dir=G\:\\SDK\\ndk-bundle
sdk.dir=G\:\\SDK

我希望它能帮助你


升级到gradle:3.6.0(或更高版本)后。尝试重命名或删除位于C:\Users\<user>\AppData\Local\Android\Sdk的ndk和ndk-bundle文件夹

获奖者: https://github.com/gradle/gradle/issues/12440#issuecomment-601214647


为了解决这个问题,你必须在build.gradle中向IDE指示NDK的版本。在本例中,它应该是版本21.0.6113669。例如:

defaultConfig {
    // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
    applicationId "com.example.remed_mobile"
    minSdkVersion 16
    targetSdkVersion 28
    ndkVersion '21.1.6352462'
    versionCode flutterVersionCode.toInteger()
    versionName flutterVersionName
}

如果您没有指明您的版本号,那么IDE将接受一个默认版本。如果你升级了gradle,那么它可能找不到正确的版本。


回答你没有被其他人回答的部分问题,“这个旧版本是在哪里指定的,又是如何指定的?”如何更新它以匹配最新版本21.0.6113669?”:

默认版本是由Android Gradle插件设置的。每个版本都将默认使用我们在测试期间使用的NDK版本,以保证最佳的兼容性。

这个插件和早期插件版本的区别在于,它可以愉快地使用您碰巧安装的任何NDK。这给用户带来了大量“在我的机器上工作”的问题,他们的同事无法构建项目,它不能在CI上工作,但可以在本地运行,等等。情况不太好。

你可以选择一个特定版本的NDK使用在你的项目通过设置android。ndkVersion在build.gradle中。如果你不这样做,它会尝试使用你正在使用的Gradle插件的默认版本。

令人讨厌的是,大多数版本(直到4.1)都不会自动下载默认版本,这会给您带来您所看到的错误。如果您明确地在构建中选择一个版本。Gradle实际上会自动下载,在4.1版本中,它也会自动下载默认版本。

人们经常困惑的一件事是,为什么当他们没有使用NDK时,或者至少认为他们没有使用NDK时,这种情况会发生。在这种情况下,答案是你的一个依赖项包括本机库,这些库在打包到APK之前需要被剥离,以减小大小,而剥离来自NDK。


我也面临同样的问题。然后我在这里找到了开发人员参考资料

所以,问题开始于gradle 3.6版。在3.6之前,没有指定默认的ndk。因此,任何版本的ndk都可以正常工作。但是在添加默认版本后,如果我们没有在build中添加任何ndkVersion。Gradle然后它搜索默认版本的ndk。

在我的情况下,我的gradle版本是3.6.3和ndk安装21.0.6113669,我没有在我的build.gradle中定义ndkVersion。所以,它搜索默认的ndkVersion“20.0.5594570”根据我的gradle版本,给了我同样的错误。所以,我只是在我的构建中添加了ndkVersion“21.0.6113669”。Gradle文件和错误消失。


在上一个版本的Gradle中,不需要在构建中定义NDK versión。成绩:

android {
    ...
    ndkVersion "21.0.6352462"
    ...
}

我们必须安装建议的versión

或者在Android NDK Location中定义当前可用的版本:


我也得到了下面的错误

No version of NDK matched the requested version 20.0.5594570. Versions available locally: 21.3.6113669

我刚刚添加了我的本地NDK版本的应用程序级别构建。Gradle文件已解决。

    android {
        ndkVersion "My Available version here"  (my case it 21.3.6113669)
    }

flutter clean 
flutter pub get

打开模块的构建。Gradle文件和编辑:

android {
        **ndkVersion** "version number of you NDK"
    }

在build.gradle(app)中添加这一行

android {

ndkVersion 21 6113669 0。”

}

这样问题就解决了

https://github.com/gradle/gradle/issues/12440#issuecomment-606188282


没有与请求版本20.0.5594570匹配的NDK版本

我得到了答案

1====>如果没有,请先下载NDK

2====>重命名您的NDK作为您的项目需要(像这里我需要20.0.5594570)

3====>之后,在android文件夹中打开gradle。属性文件

这里你把你的NDK位置像这样

然后做react-native run-android…就是这样

NDK问题已解决

谢谢你!


这对我很管用

编辑本地。属性文件来添加此内容

ndk.dir=/xxxxx/Android/sdk/ndk-bundle

这适用于MacOS,通过终端检查:

cd ~/Library/Android/sdk
ls

如果你看到“ndk”和/或“ndk-bundle”,删除它们:

sudo rm -r ndk/
sudo rm -r ndk-bundle/

删除这些文件夹后,一切都恢复正常了。 这是从GitHub复制的


如果你很难找到一个确切的NDK版本,你可以从这里下载它,这是我的情况下,我的IDE需要版本21.1.6352462,而这个版本不再存在于官方网站(https://developer.android.com/ndk/downloads)

所有Android NDK原生开发工具包的API,版本和操作系统


转到应用程序的构建。gradle文件;

在android{}中添加可用的NDK版本,这显示在您发布的错误信息中。在本例中,您的版本是“21.0.6113669”

No version of NDK matched the requested version 20.0.5594570. Versions available locally: 21.0.6113669

安卓 { ndk版本“21.0.6113669” }


在项目级别build.gradle中替换gradle类路径

   classpath 'com.android.tools.build:gradle:4.1.0'

在gradle-wrapper。属性添加这一行

distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-all.zip

Android Studio -> Preferences -> System settings -> Android SDK -> Got to SDK tools  and remove NDK(Side by Side) and apply.

 ndkVersion "21.0.6113669" ///  <<---Add this in your android -> app -> build.gradle file.

  buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
    ndkVersion "21.0.6113669" 

我在as fox或4 in X中发现了这个问题。 在操作系统根目录下,打开并隐藏Gradle文件夹

add file gradle.properties
add code 
ndk.dir=/Users/your os name/Library/Android/sdk/ndk

做~


我无法安装指定的版本(来自android工作室的一个奇怪的错误,它可能与硅芯片有关),所以我在我的构建中指定了一个更新版本的ndk。Gradle和一切都很好。


首先安装NDk从android studio和工具>sdk管理器>sdk工具,然后下载NDk版本和

比你当地的好。属性设置NDK路径 是这样的:

ndk.dir = /用户/ {yourUserName} /图书馆/ Android / sdk / ndk / 21.4.7075529


[我的错误:请求的ndk版本22.0.7026061与ndk.dir请求的版本20.0.5594570不匹配]

我的解决方案:在不同的地方似乎有不同的ndk版本

请查看以下相同的详细信息:请转至

项目结构=> SDK位置=> NDK位置(确保检查一个正确的NDK版本)

2)项目结构=>模块= NDK版本下的>(检查您在第一步中添加的相同版本) 步骤2的PFA图像

3)Gotoyour Android studio project=> go to local。属性文件=>检查NDK版本号

如果所有3个步骤都是正确的,并且当前有一个正确的NDK版本,那么你的错误就解决了。

注意:一定要同步项目文件,清理项目,重建项目。

希望这能解决你的问题!!编码快乐:)