【问题标题】:Error: No toolchains found in the NDK toolchains folder for ABI with prefix: llvm错误:在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:llvm
【发布时间】:2016-05-09 18:26:16
【问题描述】:

我想使用gradel(gradlew clean build)编译一个开源的android项目(Netguard)但是我遇到了这个错误:

A problem occurred configuring project ':app'.
> Exception thrown while executing model rule: NdkComponentModelPlugin.Rules#cre
ateToolchains
   > No toolchains found in the NDK toolchains folder for ABI with prefix: llvm

我搜索了但没有发现任何帮助。这里主要是build.gradle

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle-experimental:0.6.0-alpha1'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}

这是app项目的build.gradle

apply plugin: 'com.android.model.application'

model {
    android {
        compileSdkVersion = 23
        buildToolsVersion = "23.0.2"

        defaultConfig.with {
            applicationId = "eu.faircode.netguard"
            minSdkVersion.apiLevel = 21
            targetSdkVersion.apiLevel = 23
            versionCode = 2016011801
            versionName = "0.76"
            archivesBaseName = "NetGuard-v$versionName-$versionCode"
        }
    }
    android.ndk {
        moduleName = "netguard"
        toolchain = "clang"
        ldLibs.add("log")
    }
    android.sources {
        main {
            jni {
                source {
                    srcDir "src/main/jni/netguard"
                }
                exportedHeaders {
                }
            }
        }
    }
    android.buildTypes {
        release {
            minifyEnabled = true
            proguardFiles.add(file('proguard-rules.pro'))
            ndk.with {
                debuggable = true
            }
        }
    }
    android.buildTypes {
        debug {
            ndk.with {
                debuggable = true
            }
        }
    }
    android.productFlavors {
        create("all") {
        }
    }
}

dependencies {


compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.1.+'
    compile 'com.android.support:recyclerview-v7:23.1.+'
    compile 'com.squareup.picasso:picasso:2.5.+'
}

我正在使用gradle-2.9-allandroid-ndk-r10e。我不知道我是否应该提及其他任何内容,如果您需要任何信息,请发表评论。

【问题讨论】:

标签: android android-ndk android-gradle-plugin


【解决方案1】:

两年过去了,现在如果你遇到这里,你可能会遇到这样的错误信息:

在带有前缀 mips64el-linux-android 的 ABI 的 NDK 工具链文件夹中找不到工具链

在带有前缀 mipsel-linux-android 的 ABI 的 NDK 工具链文件夹中找不到工具链

最新的 NDK 移除了对 mips abi 的支持,并且早期版本的 android gradle 插件仍然检查 mips 工具链的存在。 see here for more info.

解决方案:将 android gradle 插件升级到 3.1 或更高版本。

例如在项目级别的 gradle 中添加以下内容 [28-Sept-2018]

 classpath "com.android.tools.build:gradle:3.2.0"

解决方法:创建mipsel-linux-android 文件夹结构来欺骗工具。最简单的方法是符号链接到aarch64-linux-android-4.9

# on Mac
cd  ~/Library/Android/sdk/ndk-bundle/toolchains
ln -s aarch64-linux-android-4.9 mips64el-linux-android
ln -s arm-linux-androideabi-4.9 mipsel-linux-android

查看three options for solving this kind of issue的这个帖子

【讨论】:

  • 用 gradle 4.1 试过,没用,但解决方法(创建文件夹 mipsel-linux-android-dummy)有效。谢谢@lazybug。
  • @Girish 在顶级 build.gradle 文件中升级 Android Gradle 插件,类似于 com.android.tools.build:gradle:3.2.0-rc02,而不是 Gradle 版本
  • 这里提到的解决方法是正确的:# on Mac cd ~/Library/Android/sdk/ndk-bundle/toolchains ln -s aarch64-linux-android-4.9 mips64el-linux-android ln -s arm-linux-androideabi-4.9 mipsel-linux-android
  • 在 Windows 上:mklink /d mips64el-linux-android aarch64-linux-android-4.9mklink /d mipsel-linux-android arm-linux-androideabi-4.9 也为我工作。
  • 您可以检查您的本机依赖项的 SO 文件(如果有)。它可能包含不再支持的 MIPS 的 SO,从而导致 NDK 失败。为 MIPS 删除这些 SO 文件是安全的,它会使错误消失。
【解决方案2】:

我通过卸载 SDK-Tools 中的 NDK 修复了此错误。 因此,如果您不需要 NDK,请将其卸载。

【讨论】:

【解决方案3】:

适用于 Android Studio 3.2.1+

升级你的 Gradle 插件

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

如果您现在收到此错误:

Could not find com.android.tools.build:gradle:3.2.1.

只需将google() 添加到您的存储库中,如下所示:

repositories {
    google()
    jcenter()
}

【讨论】:

【解决方案4】:

在我的 Windows 8 机器上将 Android Studio 从 2.0 更新到 2.1 时,我遇到了同样的问题。

我找到了解决方案。请使用以下步骤。

  1. https://developer.android.com/ndk/downloads/index.html下载适用于windows的android NDK。
  2. 解压并从包中复制“工具链”文件夹。
  3. 将已安装的NDK文件夹下的文件夹粘贴到C:\android-sdk-win\ndk-bundle下。[安装路径可能因您的安装而异]
  4. 重启安卓工作室。

发生这种情况是因为 Android Studio 不会在稳定频道中获得完整的 NDK 更新。如果您不使用 NDK 进行项目开发,您只需从 SDK 目录中删除 NDK 文件夹即可。

【讨论】:

  • 适用于 Android Studio 3.2!
  • 这也适用于我在 Mac 上修复 Game Maker Studio 2 中的错误“Error : Android MIPS ToolChain directory "" does not exist”。但我需要从这里获取 NDK 的 17c 版本:developer.android.com/ndk/downloads/older_releases(按照:reddit.com/r/gamemaker/comments/9m958a/…)谢谢@nithinjith! ...但是仍然没有构建,需要解决:Android NDK: Please fix the APP_ABI definition in /Users/../Library/Android/sdk/ndk-bundle/build/core/default-application.mk
【解决方案5】:

错误信息:

在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:llvm。

在使用 NDK 全新 Web 安装 Android Studio 后,我从 GitHub 导入了一个使用 NDK 的 Android 代码示例并尝试对其进行编译。

结果出现了错误:

在 ABI 的 NDK 工具链文件夹中找不到带有前缀:llvm 的工具链

解决方案: 由于某些原因,macOS 上的标准安装过程未能安装完整集:

~/Library/Android/sdk/ndk-bundle 使用所有工具错过了文件夹 toolchains

(应该是这样的:~/Library/Android/sdk/ndk-bundle/toolchains

解决方法是单独下载NDK,打开,复制文件夹toolchain粘贴到文件夹中:

~/Library/Android/sdk/ndk-bundle

【讨论】:

  • 在我的情况下它在那里但没有前缀为 aarch64-linux-android 的文件。任何建议!
  • 文件夹 'mips64el-linux-android-4.9' & 'mipsel-linux-android-4.9' 在 ndk bundle 16 之后不可用,所以我必须下载这两个文件夹并将其添加到 android sdk bundle在 toolchains 文件夹中,因此问题解决了,仍然不明白为什么会出现这个错误?
【解决方案6】:

一步一步:

1)用旧的NDK版本打开页面:

https://developer.android.com/ndk/downloads/older_releases

2) 同意条款:

3) 下载旧版本的NDK(例如16b):

4) 打开您的toolchains 目录。

5) 将您需要的文件从下载的 zip 文件的 toolchains 文件夹传输到您的 toolchains 文件夹:

6) 重建项目:


2018 年 9 月 30 日更新:
在我自己的情况下,我使用 Android NDK Revision r16b 来修复此错误。所以我用这个版本来展示这个例子。
但最好使用 Android NDK,Revision r17c(2018 年 6 月)。这是最后一个,支持mips(来自周末评论的合理推荐)。

【讨论】:

  • 而不是(for example 16b),最好明确哪个NDK版本是最后一个支持mips的版本。 via release note of Android NDK Revision r17c (June 2018)已删除对 ARMv5 (armeabi)、MIPS 和 MIPS64 的支持。尝试构建这些 ABI 中的任何一个都将导致错误。 确切地说是 16b
  • @Weekend 感谢您的推荐。我将其添加到我的答案中。
  • @vmarch 很抱歉,但是 确切地说是 16b r17c 是第一个删除对 MIPS 支持的版本 :)
  • @哦,我很快就读到了你之前的评论。这就是为什么我错过了重点。我的道歉!但这些文件仍然存在于 Android NDK,修订版 r17c(2018 年 6 月)中。在第 18 版中,它们终于被删除了。只需查看存档。 developer.android.com/ndk/downloads/…
  • @vmarch 干得好!我没有查看 r17c 存档,只是从发行说明中推断出之前的结论。
【解决方案7】:

无需下载、复制或符号链接任何东西,我就能够通过简单地创建一个空目录来“修复”错误,旧版本的 Android Gradle 插件需要删除 mips 工具链:

mkdir -p $ANDROID_HOME/ndk-bundle/toolchains/mips64el-linux-android/prebuilt/linux-x86_64

很明显,$ANDROID_HOME 在这里指向 Android SDK 安装的根目录。 如果您使用的是 MacOS,请将上述命令中的 linux-x86_64 替换为 darwin-x86_64。在 Windows 上使用 windows-x86_64

【讨论】:

  • 像魅力一样工作。
  • 取决于您的项目所指的内容。对我没有用,但对某些人来说是一个不错的简单技巧。我不得不复制真正的工具链来消除错误。
【解决方案8】:

我卸载了 NDK,因为我不需要它。转到 Android Studio 上的 SDK 管理器(工具 -> Android -> SDK 管理器)。如果安装了 NDK。只需取消选中该框,然后单击 OK 。已安装的组件将被删除。

【讨论】:

    【解决方案9】:

    在我的例子中,这个错误发生在创建一个新的 Android Studio (Android studio 3.2.1) Java Project with

        classpath 'com.android.tools.build:gradle:2.0.0-beta6'
    

    所以我降级到

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

    保留旧版本不是最好的解决方案,但也许它只是测试版中的一个临时错误,因为 local.properties 中的 NDK 路径仍然相同,但 IDE 没有别再抱怨了

    【讨论】:

    • 我认为这是一个过时的 gradle 插件的错误。只需更新到最新的。它对我有帮助(就我而言,从 3.0 到 3.2.0-beta05)
    • 我认为它是升级而不是降级... P
    【解决方案10】:

    Android NDK 18.0* 似乎存在提取后无法在文件夹中创建所有文件的问题。因此,使用 ndk 构建的应用编译将失败。

    最好使用 NDK 17.1* (https://developer.android.com/ndk/downloads/) 等版本,你可以默认提取或使用 android studio 提取到 ndk-bundle 会很好。

    【讨论】:

      【解决方案11】:

      打开Android Studio,进入Tools,Android,SDK,如果不需要,取消NDK,重启android studio。

      【讨论】:

        【解决方案12】:

        [https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android][1]

        适用于尝试此示例并面临最新 NDK 问题的人。可以按照这个解决方案。 在 build.gradle 改变这个

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

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

        原因是 mips 在最新的 ndk 版本中已被弃用,Gradle 版本 3.1.2 不会强制使用 mips。它假定这些丢失的文件夹存在。

        【讨论】:

          【解决方案13】:

          简单的解决方案是下载并解压以下包含 mips64el-linux-android-4.9 和 mipsel-linux-android-4.9 文件夹的文件到 sdk "android-sdk\ndk-bundle\toolchains" 内的工具链文件夹中。

          Downlod this file and extraxt to toolchains foolder

          【讨论】:

          • 解压然后在 Mac 上执行 # cd ~/Library/Android/sdk/ndk-bundle/toolchains ln -s aarch64-linux-android-4.9 mips64el-linux-android ln -s arm-linux -androideabi-4.9 mipsel-linux-android
          【解决方案14】:

          有同样的问题。默认安装最新的 NDK rc 版本。最新的稳定版本修复了该问题。

          【讨论】:

            【解决方案15】:

            在android studio中编译项目时,偶尔会遇到:

            错误:在 ABI 的 NDK 工具链文件夹中找不到工具链 前缀:arm-linux-androideabi/llvm

            这可能是更新相关组件造成的。解决方案是 Android studio (Tools -> Android -> SDK Manager)。 选择 ndk 项目并将其删除。如果程序需要它,您可以重新安装它。这样可以保证文件夹位置正确,不会出现这样的问题。

            【讨论】:

            • 我删除了它。但是当我编译我的应用程序时,再次下载了 ndk。对我不起作用。
            【解决方案16】:

            我也遇到过类似的问题,但由于项目需要,我想使用 NDK 版本 r9d。

            local.properties 中,路径设置为ndk.dir=C\:\\Android\\ndk\\android-ndk-r9d,但这会导致问题:

            在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:[toolchain-name]

            解决办法是:

            1. 使用 sdk manager 安装最新的 NDK
            2. 将缺少的工具链 [toolchain-name] 从新的 ndk 复制到旧的。在我的情况下,从 sdk\ndk-bundle\toolchains\ndk\android-ndk-r9d\toolchains
            3. 重复该过程,直到所有需要的工具链都在那里

            在我看来,复制的工具链没有被使用,但由于某种原因,它们需要在那里。

            【讨论】:

              【解决方案17】:

              在你的项目级 Gradle 文件中增加依赖 类路径版本从低到高喜欢

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

              像改变一样

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

              【讨论】:

                【解决方案18】:

                通过将 google() 依赖项添加到 build.gradle(Project: ProjectName) 中的两个存储库中来解决此问题。然后同步你的项目

                buildscript {
                    repositories {
                        google()
                        jcenter()
                    }
                    dependencies {
                        classpath 'com.android.tools.build:gradle:2.3.2'
                
                        // NOTE: Do not place your application dependencies here; they belong
                        // in the individual module build.gradle files
                    }
                }
                
                allprojects {
                    repositories {
                        google()
                        jcenter()
                    }
                }
                

                【讨论】:

                  【解决方案19】:

                  环顾四周后,解决方案是从我的偏好中删除 NDK 名称。

                  Android Studio → 首选项 → 系统设置 → Android SDK → SDK 工具 → 取消选择 NDK → 应用按钮。

                  Project 和 Gradle 在那之后编译良好,我能够继续我的项目工作。

                  至于为什么会发生这种情况,我不知道,但有关 NDK 的更多信息,请查看:

                  【讨论】:

                    【解决方案20】:

                    这个问题的最佳解决方案是:

                    1. 转到 SDK 管理器。

                    2. 接下来选择 SDK 工具。

                    3. 取消选择 NDK(并排)。

                    4. 应用并确定。

                    【讨论】:

                      【解决方案21】:

                      我通过未安装的ndk解决了这个问题,因为我不需要它

                      【讨论】:

                        【解决方案22】:

                        我导航到 local.properties,在里面

                        ndk.dir=/yo/path/for/NDK
                        

                        需要将行更新到您的 ndk 所在的位置。

                        我使用的是 Crystax NDK,但没有意识到原来的 Android NDK 仍在使用中。

                        【讨论】:

                          【解决方案23】:

                          像我一样修复它

                          Android 工作室 File>项目结构并进入项目

                          将 Gradle 版本更改为 4.6 & Android 插件版本到 3.2.1

                          check screenshot

                          如果您收到此错误“找不到 aapt2-proto.jar”,请清理项目

                          转到 build.gradle(项目)

                          尝试将 google() 方法(.gradle 文件)移动到其执行块的顶部 它搜索导致问题的存储库的顺序。

                          例如,改变这个:

                          repositories {
                            maven { url 'https://maven.fabric.io/public' }
                            google()      <===  from here
                            mavenCentral()
                          }
                          

                          到这里:

                          repositories {
                            google()     <===  to here
                            maven { url 'https://maven.fabric.io/public' }
                            mavenCentral()
                          }
                          

                          在“buildscript”和“allprojects”中进行这些更改

                          check screenshot

                          如果你没有找到 google() 添加它

                          【讨论】:

                            【解决方案24】:

                            对于 Android Studio 3.2.1 更新您的

                            Gradle 版本 4.6

                            Android插件版本3.2.1

                            【讨论】:

                              【解决方案25】:

                              注意:这个答案似乎特定于:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android,但它是通过以下方式链接到这里的:

                              * https://stackoverflow.com/questions/52193274/no-toolchains-found-in-the-ndk-toolchains-folder-for-abi-with-prefix-mips64el-l

                              来自 NDK r19b:

                              more ~/Android/Sdk/ndk-bundle/CHANGELOG.md
                              
                              • 此版本的 NDK 与 Android Gradle 插件不兼容 版本 3.0 或更早版本。如果您看到类似的错误 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android, 将您的项目文件更新为 [使用插件版本 3.1 或更高版本]。你也会 需要升级到 Android Studio 3.1 或更高版本。

                              【讨论】:

                                【解决方案26】:

                                导航到C:\Users\lalit\AppData\Local\Android\Sdk\ndk-bundle\toolchains

                                现在,找到文件夹名称 aarch64-linux-android-4.9 并将其重命名为 mips64el-linux-android

                                重新运行安卓应用。

                                【讨论】:

                                  【解决方案27】:

                                  找到自己本地的android-SDK,如果你下载了ndk的相关SDK,会有一个名为“ndk-bundle”的文件夹

                                  里面有一个叫“toolchains”的文件夹。

                                  我们注意到里面没有 mips64el 相关文件。

                                  解决方法如下:

                                  Click here通过浏览器单独下载NDK包。解压后打开“toolchains”文件夹,对比android-sdk->ndk-bundle->toolchains文件夹,找到丢失的文件夹,复制过去三个。重新编译,问题解决。

                                  【讨论】:

                                    【解决方案28】:

                                    在 sdk 工具中删除所有 NDK。

                                    【讨论】:

                                      【解决方案29】:

                                      当您专门从 github 克隆以前的项目时,通常会出现此问题。你能做的是

                                      1. 将类路径更改为

                                      类路径'com.android.tools.build:gradle:3.2.1'

                                      在您的项目级 gradle 中。

                                      1. 然后更改所有 compile 实例,除了 compileSdkVersion 保持它在您的应用级别 gradle 中。

                                      2. 点击ma​​ke project(Ctrl+F9)

                                        ,而不是sync now
                                      3. 如果需要,添加 google maven 存储库。

                                      4. 如果需要,升级 gradle 包装器。

                                      (Android Studio IDE 将在第 4 步和第 5 步中询问/指导您)

                                      【讨论】:

                                        【解决方案30】:

                                        如果不使用 NDK,请取消设置环境变量 ANDROID_NDK_HOME

                                        【讨论】:

                                          猜你喜欢
                                          • 2016-09-30
                                          • 2019-05-14
                                          • 2023-03-02
                                          • 2019-06-06
                                          • 2019-02-11
                                          • 2019-04-28
                                          • 2021-10-30
                                          • 2017-10-20
                                          • 2019-04-15
                                          相关资源
                                          最近更新 更多