在更新到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?


当前回答

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

我得到了答案

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

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

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

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

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

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中定义当前可用的版本:

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

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

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

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

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

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

也同样有效!

在项目级别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