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


207

我想使用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
}

这里是build.gradle对的app项目:

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工具。classpath'com.android.tools.build:gradle:3.2.0
Photon Point,

使用developer.android.com/ndk/downloads/older_releases和Android NDK,修订版16b(2017年12月)版本下载所需的文件夹并解决此问题。
Panache

Answers:


376

两年过去了,现在如果您遇到这里,可能会遇到如下错误消息:

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

要么

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

最新的NDK删除了对mipsabi的支持,并且早期版本的android gradle插件仍在检查mips工具链的存在。有关更多信息,请参见此处

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

例如,在项目级别gradle中添加以下内容[2018年9月28日]

 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

选中此线程的三个选项来解决此类问题


6
在gradle 4.1中尝试过,没有用,但是变通方法(创建文件夹mipsel-linux-android-dummy)有效。谢谢@lazybug。

2
@Girish 在顶级文件中升级Android Gradle插件build.gradle,类似com.android.tools.build:gradle:3.2.0-rc02,而不是Gradle版本
lazybug

4
这里提到的解决方法是正确的方法: # 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
Avijeet Dutta

16
在Windows上: mklink /d mips64el-linux-android aarch64-linux-android-4.9mklink /d mipsel-linux-android arm-linux-androideabi-4.9为我工作。
米奇

“在Mac上”解决方法工作正常(适应〜/ Library部分)。但是NDK的下一次更新(2018年10月14日)在mips *树中发现了大量意外文件。不奇怪。因此,我再次删除了符号链接。
Quigi '18

66

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

快乐编码-:)


1
这是真正的解决方案
马丁

1
检查此选项
shizhen


35

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

我找到了解决方案。请按照以下步骤操作。

  1. https://developer.android.com/ndk/downloads/index.html下载适用于Windows的android NDK 。
  2. 提取相同的内容,然后从捆绑包中复制“ toolchain”文件夹。
  3. 将该文件夹粘贴到C:\ android-sdk-win \ ndk-bundle下已安装的NDK文件夹下。[安装路径可能会因您的安装而异]
  4. 重新启动android studio。

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


1
适用于Android Studio 3.2!
maxwellnewage '18 -10-2

1
这也为我修复Error : Android MIPS ToolChain directory "" does not exist了Mac上Game Maker Studio 2中的错误“ ”。但我需要从这里得到的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
kris

33

错误消息:“在ABI的NDK工具链文件夹中找不到前缀为llvm的工具链”。

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

结果出现错误:

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

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

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

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

解决方案是分别下载NDK,打开它,复制文件夹toolchain并将其粘贴到该文件夹​​中:

~/Library/Android/sdk/ndk-bundle

之后,它对我来说效果很好。


就我而言,它在那里但没有前缀aarch64-linux-android的文件。任何建议!
CoDe17年

ndk捆绑包16之后,文件夹“ mips64el-linux-android-4.9”和“ mipsel-linux-android-4.9”不可用,因此我必须在toolchains文件夹内的android sdk捆绑包中下载并添加这两个文件夹,因此问题仍然解决了不明白为什么会出现这个错误?
法扎尔

检查此选项
shizhen

22

一步步:

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

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

在此处输入图片说明

2)同意条款:

在此处输入图片说明

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

在此处输入图片说明

4)打开toolchains目录。

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

在此处输入图片说明

6)重建项目:

在此处输入图片说明


UPD 2018年9月30日:
我个人使用Android NDK修订版r16b修复此错误。因此,我用这个版本展示这个例子。
但最好使用Android NDK版本r17c(2018年6月)。它是最后一个支持mips的工具(根据Weekend的评论合理推荐)。


(for example 16b)最好使用NDK版本是最后一个支持mips的版本,而不是。通过Android NDK修订版r17c的发行说明(2018年6月)删除了对ARMv5(armeabi),MIPS和MIPS64的支持。尝试构建任何这些ABI都会导致错误。这是16b完全一样。
周末'18

@周末感谢您的推荐。我将其添加到我的答案中。
V.March

1
@vmarch抱歉,这是16b完全正确的。r17c是第一个删除了对MIPS的支持的版本:)
周末

1
@哦,我很快就读了你以前的评论。这就是为什么我错过了重点。我的道歉!但是这些文件仍存在于Android NDK修订版r17c(2018年6月)中。在版本18中,它们最终被删除。只需查看档案。developer.android.com/ndk/downloads/...
V.March

@vmarch做得好!我没有检查r17c存档,只是从发行说明中推断出先前的结论。
周末

17

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

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

显然,$ANDROID_HOME此处指向Android SDK安装的根目录。如果您使用的MacOS,替换linux-x86_64darwin-x86_64上面的命令。在Windows上使用windows-x86_64


像魅力一样工作。
阿克巴·沙·易卜拉欣

取决于您的项目指的是什么。不适用于我,但对某些人来说却是一个不错而又简单的技巧。我必须复制真实的工具链才能消除错误。
马丁·扎斯克

11

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


8

就我而言,使用以下命令创建新的Android Studio(Android studio 3.2.1) Java项目时会发生此错误

    classpath '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)
AnoDest

我认为它已升级而不是降级... P
Shylendra Madda

7

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

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




3

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

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

改变像

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

3

通过将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()
    }
}


2

我遇到了类似的问题,但是由于项目要求,我想使用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. 重复该过程,直到所有必需的工具链都在那里

在我看来,没有使用复制的工具链,但是由于某些原因,需要在其中使用它们。


2

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


2

解决方法是这里。

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

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

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


2

像我一样修复它

Android Studio File>项目结构并转到项目

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

检查截图

如果出现此错误“找不到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”中进行更改

检查截图

如果找不到google(),请添加它


2

对于Android Studio 3.2.1更新

Gradle 4.6

Android插件版本3.2.1


2

问题主要是在您特别从github克隆以前的项目时发生的。你能做的是

  1. 将类路径更改为

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

在您的项目级别gradle。

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

  2. 现在不要同步,而是单击make project(Ctrl + F9)

  3. 如果需要,添加google maven存储库。

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

(Android Studio IDE会要求/指导您执行步骤4和5)

它修复了!享受编码


2

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

* /programming/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或更高版本。



1

如果您使用的是Ionic 3,请从android studio SDK工具中删除ndk。


太好了,虽然不是理想的解决方案,但它是满足构建离子化android项目的特定需求的临时解决方案。
MFAL

1

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

在此处输入图片说明

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

在此处输入图片说明

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

在此处输入图片说明

解决方法如下:

单击此处,通过浏览器单独下载NDK软件包。解压缩后,打开“ toolchains”文件夹,将其与android-sdk-> ndk-bundle-> toolchains文件夹进行比较,找到丢失的文件夹,复制过去的3。重新编译,问题就解决了。希望它可以帮助你交配


1

面对同样的问题。

我通过以下方式获得了成功。

打开您的buldle.gradle文件并升级版本以遵循两个类路径

classpath'com.android.tools.build:gradle:3.2.1'classpath'com.google.gms:google-services:4.2.0'

然后进行同步,并获得更新Gradle版本的参考,然后单击该链接并等待下载所有必需的更新(希望有互联网可用)。经过很长时间,您获得了成功。


1

首先,尝试更新ndk版本 https://developer.android.com/ndk/downloads/

如果这不起作用,则可以尝试以下操作:

  • 建立资料夹

    转到Sdk \ ndk-bundle \ toolchains文件夹(在我的情况下为C:\ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains;您可以在File-> project structure-> SDK下找到您的文件夹在Android Studio中的位置)并创建一个名称,该名称在错误中显示为丢失的文件夹,例如:如果错误是

    Gradle同步失败:在ABI的NDK工具链文件夹中找不到前缀为mipsel-linux-android的工具链

    然后创建一个名为mipsel-linux-android的文件夹

  • 包含内容 再次转到Sdk \ ndk-bundle \ toolchains文件夹,然后打开其中已存在的任何文件夹。例如:SDK \ NDK-Bundle \ Toolchains \ aarch64-linux-android-4.9(在Mycase中为C:\ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains \ aarch64-linux-android-4.9)将其中的预构建文件夹复制到我们在上一步中创建的文件夹中

  • 再次运行该项目,它将起作用

希望能帮助到你!!


1

以我对这个问题的有限经验,我尝试使用以下方法解决问题:

1.保持android构建工具版本与gradle版本相同。例如:如果您使用的构建工具版本为3.3.0,则gradle版本必须为4.10.1。您可以通过链接https://developer.android.com/studio/releases/gradle-plugin和chagne 引用AS中的构建工具和Gradle版本(文件->项目结构->项目)

2.如果method1不起作用,您可以自定义ndk工具链版本来解决问题:例如下载ndk18或ndk16,将ndk路径设置为您的AS(文件->项目结构-> SDK位置-> Android NDK位置)


1

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

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

重新运行android应用。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.