在更新到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文件夹的路径。
这不是必要的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
也同样有效!
回答你没有被其他人回答的部分问题,“这个旧版本是在哪里指定的,又是如何指定的?”如何更新它以匹配最新版本21.0.6113669?”:
默认版本是由Android Gradle插件设置的。每个版本都将默认使用我们在测试期间使用的NDK版本,以保证最佳的兼容性。
这个插件和早期插件版本的区别在于,它可以愉快地使用您碰巧安装的任何NDK。这给用户带来了大量“在我的机器上工作”的问题,他们的同事无法构建项目,它不能在CI上工作,但可以在本地运行,等等。情况不太好。
你可以选择一个特定版本的NDK使用在你的项目通过设置android。ndkVersion在build.gradle中。如果你不这样做,它会尝试使用你正在使用的Gradle插件的默认版本。
令人讨厌的是,大多数版本(直到4.1)都不会自动下载默认版本,这会给您带来您所看到的错误。如果您明确地在构建中选择一个版本。Gradle实际上会自动下载,在4.1版本中,它也会自动下载默认版本。
人们经常困惑的一件事是,为什么当他们没有使用NDK时,或者至少认为他们没有使用NDK时,这种情况会发生。在这种情况下,答案是你的一个依赖项包括本机库,这些库在打包到APK之前需要被剥离,以减小大小,而剥离来自NDK。
[我的错误:请求的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版本,那么你的错误就解决了。
注意:一定要同步项目文件,清理项目,重建项目。
希望这能解决你的问题!!编码快乐:)