ChatGPT解决这个技术问题 Extra ChatGPT

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

我想使用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。我不知道我是否应该提及其他任何内容,如果您需要任何信息,请发表评论。

尝试更新 gradle 工具。类路径'com.android.tools.build:gradle:3.2.0-beta05'
使用 developer.android.com/ndk/downloads/older_releases 和 Android NDK,修订版 16b(2017 年 12 月)版本下载所需的文件夹并修复问题。

s
shizhen

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

在带有前缀 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 文件是安全的,它会使错误消失。
R
Robert Columbia

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


如果我需要 NDK 怎么办?
如果我们想要 NDK 也一样,那么解决方案是什么?
如果卸载 NDK,则它已修复,但如果您需要使用 NDK,请检查此stackoverflow.com/a/51589406/6533853
要卸载,请按照此 stackoverflow.com/a/52207450/2768515
尽管这不是问题的完美答案,但它仍然很奇怪,但它仍然被投票。
N
Nimantha

适用于 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()
}

这对我有用。而不是这个类路径 'com.android.tools.build:gradle:3.2.1'
N
Nithinjith

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

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

从 https://developer.android.com/ndk/downloads/index.html 下载适用于 windows 的 android NDK。提取相同内容并从包中复制“工具链”文件夹。将已安装的 NDK 文件夹下的文件夹粘贴到 C:\android-sdk-win\ndk-bundle 下。[安装路径可能因您的安装而异] 重新启动 android studio。

发生这种情况是因为 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
N
Nimantha

错误信息:

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

在使用 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中,因此问题解决了,仍然不明白为什么会出现这个错误?
V
V.March

一步步:

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

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

https://i.stack.imgur.com/gCmB0.png

2) 同意条款:

https://i.stack.imgur.com/z63Ft.png

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

https://i.stack.imgur.com/Wqj1A.png

4) 打开您的 toolchains 目录。

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

https://i.stack.imgur.com/rS3aO.png

6)重建项目:

https://i.stack.imgur.com/qCHSD.png

UPD 2018 年 9 月 30 日:我使用 Android NDK Revision r16b 来修复我自己的这个错误。所以我用这个版本来举例说明。但最好使用 Android NDK,Revision r17c(2018 年 6 月)。这是最后一个,支持 mips(来自周末评论的合理推荐)。


最好澄清最后一个支持 mips 的 NDK 版本,而不是 (for example 16b)。通过 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 存档,只是从发行说明中推断出之前的结论。
f
friederbluemle

无需下载、复制或符号链接任何内容,我就能够通过简单地创建一个空目录来“修复”错误,旧版本的 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


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

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


N
Nimantha

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

转到 SDK 管理器。接下来选择 SDK 工具。取消选择 NDK(并排)。申请并确定。


S
Shomu

在我的情况下,创建一个新的 Android Studio (Android studio 3.2.1) Java 项目时发生了这个错误

类路径'com.android.tools.build:gradle:2.0.0-beta6'

所以我降级为

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

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


我认为这是过时的 gradle 插件的错误。只需更新到最新的。它对我有帮助(就我而言,从 3.0 到 3.2.0-beta05)
我认为它是升级而不是降级... P
a
appapurapu

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

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


M
Muhammad Bilal

打开 Android Studio,转到 Tools 然后 Android 然后 SDK,取消选中 NDK 如果不需要,然后重新启动 android studio。


S
Sujith Royal

[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。它假定这些丢失的文件夹存在。


Y
Yazdan Sharifi

简单的解决方案是下载并解压缩以下包含 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-安卓
R
Raza Baloch

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

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

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

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


a
arturas

https://i.stack.imgur.com/ftk7t.png


N
Nimantha

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

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

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


我删除了它。但是当我编译我的应用程序时,再次下载了 ndk。没有为我工作。
A
Abdul ahad

要解决此问题,请访问:

https://i.stack.imgur.com/loLxy.png

我使用这种技术在 linux(Ubuntu) 机器上解决了同样的问题。


在 Catalina 上删除了 NDK 并且它起作用了。
M
Marcin Kunert

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

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

在 ABI 的 NDK 工具链文件夹中找不到带有前缀的工具链:[工具链名称]

解决方案是:

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

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


K
Karthikeyan D S

在您的项目级别 Gradle 文件中将依赖项类路径版本从低到高增加,例如

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

改变喜欢

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

s
shizhen

通过将 google() 依赖项添加到 build.gradle(项目: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()
    }
}

a
alpha

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


Y
Yipeng Zhang

我导航到 local.properties,并在其中

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

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

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


B
Bachlil

像我一样修复它

Android Studio 文件> 项目结构并转到项目

将 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() 添加它


M
Masum

对于 Android Studio 3.2.1 更新您的

梯度版本 4.6

安卓插件版本 3.2.1


S
Sooth

注意:此答案似乎特定于: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 的错误,前缀为:mips64el-linux-android,请将您的项目文件更新为 [使用插件版本 3.1 或更高版本]。您还需要升级到 Android Studio 3.1 或更高版本。


P
Paul Roub

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

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

重新运行安卓应用。


h
halfer

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

https://i.stack.imgur.com/v2uWJ.png

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

https://i.stack.imgur.com/NRfZv.png

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

https://i.stack.imgur.com/PqKuo.png

解决方法如下:

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


N
Nimantha

删除 sdk 工具中的所有 NDK。


N
Nimantha

问题主要出现在您专门从 github 克隆以前的项目时。你能做的是

将类路径更改为

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

在您的项目级别gradle中。

然后更改除 compileSdkVersion 之外的所有 compile 实例,使其保持在您的应用程序级别 gradle 中。现在不要同步,而是单击 make project(Ctrl+F9) 如果需要,添加 google maven 存储库。如果需要,升级 gradle 包装器。

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