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


当前回答

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

cd ~/Library/Android/sdk
ls

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

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

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

其他回答

我也有同样的问题,过了一段时间我找到了一个临时的解决方案。 将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

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

cd ~/Library/Android/sdk
ls

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

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

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

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

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

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

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

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

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

我也得到了下面的错误

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