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

时间:2016-02-01 10:29:48

标签: android android-ndk android-gradle

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

48 个答案:

答案 0 :(得分:323)

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

  

在NBI工具链文件夹中找不到前缀为mips64el-linux-android的ABI的工具链

  

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

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

解决方案:将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

检查此线程three options for solving this kind of issue

答案 1 :(得分:57)

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

快乐编码-:)

答案 2 :(得分:50)

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

答案 3 :(得分:34)

我在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。
  5. 这种情况正在发生,因为Android studio不会在稳定的频道中获得完整的NDK更新。如果您没有在项目开发中使用NDK,只需从SDK目录中删除NDK文件夹即可。

答案 4 :(得分:29)

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

在使用NDK进行Android Studio新安装后,我导入了一个Android代码示例,该示例使用了GitHub中的NDK并尝试编译它。

结果出现错误:

  

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

<强>解决方案: 由于某些原因,macOS上的标准安装过程无法安装完整集:

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

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

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

~/Library/Android/sdk/ndk-bundle

之后,它对我有用。

答案 5 :(得分:22)

分步操作:

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

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

enter image description here

2)同意条款:

enter image description here

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

enter image description here

4)打开您的toolchains目录。

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

enter image description here

6)重建项目:

enter image description here


UPD 2018年9月30日:
我自己使用Android NDK修订版r16b修复了此错误。所以我用这个版本的例子。
但是最好使用Android NDK,修订版r17c(2018年6月)。这是最后一个支持mips(根据Weekend的评论的合理建议)。

答案 6 :(得分:14)

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

    public DbSet<User> UserStore { get; set; }

    public IQueryable<User> Users => UserStore.AsNoTracking().Where(u => !u.Deactivated);

很显然,mkdir -p $ANDROID_HOME/ndk-bundle/toolchains/mips64el-linux-android/prebuilt/linux-x86_64 在此处指向Android SDK安装的根目录。 如果您使用的是MacOS ,请在上面的命令中将$ANDROID_HOME替换为linux-x86_64。在Windows上使用darwin-x86_64

答案 7 :(得分:10)

我卸载了NDK因为我不需要它。转到Android工作室的SDK管理器(工具 - &gt; Android - &gt; SDK管理器)。如果安装了NDK。只需取消选中该框,然后单击“确定”。已删除的组件将被删除。

答案 8 :(得分: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'
      }

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

答案 9 :(得分:7)

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

最好使用NDK 17.1 *(https://developer.android.com/ndk/downloads/)等版本,默认情况下您可以提取或使用android studio提取来ndk-bundle正常工作。

答案 10 :(得分:4)

打开Android Studio,依次转到“工具”,“ Android”和“ SDK”,然后取消选中“ NDK”(如果不需要),然后重新启动android studio。

答案 11 :(得分:4)

[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'

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

答案 12 :(得分:3)

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

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

要像

一样进行更改
dependencies {
        classpath 'com.android.tools.build:gradle:3.2.1'
    }

答案 13 :(得分:3)

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

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

答案 14 :(得分:2)

这是解决方法。

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

  

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

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

答案 15 :(得分:2)

简单的解决方案是下载以下文件,并将包含mips64el-linux-android-4.9和mipsel-linux-android-4.9文件夹的以下文件提取到sdk中的“ android-sdk \ ndk-bundle \ toolchains”工具栏中。

Downlod this file and extraxt to toolchains foolder

答案 16 :(得分:2)

注意:此答案似乎特定于: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或更高版本。

答案 17 :(得分:2)

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

  1. 将类路径更改为

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

在您的项目级别gradle中。

  1. 然后更改所有带有实现的编译实例,除了 compileSdkVersion 以外,将其保留在应用程序级别gradle中。

  2. 而不是立即同步,请单击创建项目(Ctrl + F9)

  3. 根据需要添加google maven存储库。

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

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

它修复了!!享受编码

答案 18 :(得分:2)

对于Android Studio 3.2.1,更新

版本版本 4.6

Android插件版本 3.2.1

答案 19 :(得分:2)

要像我一样修复它

Android Studio 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(),请添加

答案 20 :(得分:2)

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

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

  

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

解决方案是:

  1. 使用sdk manager安装最新的NDK
  2. 将丢失的工具链[toolchain-name]从新的ndk复制到旧的。就我而言,从sdk\ndk-bundle\toolchains\ndk\android-ndk-r9d\toolchains
  3. 重复此过程,直到所有必需的工具链都在那里
  4. 在我看来,复制的工具链没有被使用,但出于某种原因需要它们才能存在。

答案 21 :(得分:1)

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

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

重新运行android应用。

答案 22 :(得分:1)

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

enter image description here

内部有一个名为“工具链”的文件夹。

enter image description here

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

enter image description here

解决方案如下:

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

答案 23 :(得分:1)

对我来说,我认为从android studio安装android NDK可能存在一些问题。我能够以下列方式解决这个问题

下载android ndk

https://developer.android.com/ndk/downloads/index.html

并放在ndk-bundle(安装了你的android sdk的地方)里面。有关详细信息,请查看此屏幕。

https://app.box.com/s/dfi4h9k7v4h0tmbu3z9qnqx3d12fdejn

答案 24 :(得分:1)

面对同样的问题。

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

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

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

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

答案 25 :(得分:1)

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

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

  • 创建文件夹

    转到Sdk \ ndk-bundle \ toolchains文件夹(在本例中为 C:\ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains;您 可以在文件->项目结构-> SDK位置下找到您的文件 android studio),并创建一个名称如下所示的文件夹 错误中缺少例如:如果错误是

      

    等级同步失败:在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) 将其中的 prebuilt 文件夹复制到我们在上一步中创建的文件夹

  • 再次运行项目,它将运行

希望有帮助!

答案 26 :(得分:1)

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

答案 27 :(得分:1)

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

答案 28 :(得分:0)

要继续使用较早的gradle版本,我们可以使用以下解决方案:

注意文件android-ndk-r17-beta2 / toolchains / mips64el-linux-android- 4.9 / prebuilt / darwin-x86_64 / NOTICE-MIPS64。该文件的内容如下。

存在这个mips64el-linux-android-4.9目录,以使NDK与Android兼容 SDK的Gradle插件(版本3.0.1和更早版本)需要NDK 拥有MIPS64工具链目录。

因此,我可以说,使用3.0.1以上版本的Android SDK的Gradle插件,甚至创建一个标有“ mipsel”和“ mips64el”的目录,都可以解决此问题。后一种方法如下。

cd“ ndk路径”

OS_=$(uname -s | tr [A-Z] [a-z])
mkdir -p toolchains/mipsel-linux-android-4.9/prebuilt/${OS_}-x86_64
touch toolchains/mipsel-linux-android-4.9/prebuilt/${OS_}-x86_64/NOTICE-MIPS
mkdir -p toolchains/mips64el-linux-android-4.9/prebuilt/${OS_}-x86_64
touch toolchains/mips64el-linux-android-4.9/prebuilt/${OS_}-x86_64/NOTICE-MIPS64

here那里获得解决方案

答案 29 :(得分:0)

如果您尝试了所有解决方案,但仍然无效。尝试删除 sdk 工具中的所有 NDK。

答案 30 :(得分:0)

链接文件对我不好。

ln -s aarch64-linux-android-4.9 mips64el-linux-android
ln -s arm-linux-androideabi-4.9 mipsel-linux-android

因为还有另一个错误。

* What went wrong:
A problem occurred configuring project ':Test'.
> Expected caller to ensure valid ABI: MIPS

如果使用gralde进行构建,则将其添加到defaultConfig中

ndk {
    abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64'
}

如果使用ndk-build命令,请将其添加到Application.mk中。

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

答案 31 :(得分:0)

只需将您的android studio升级为最新版本>>即可根据您的项目与互联网连接以下载内容。

快乐编码。

答案 32 :(得分:0)

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

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

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

答案 33 :(得分:0)

首先使用以下位置转到 SDK 文件夹 C:\Users\CHALAKMIAN\AppData\Local\Android\Sdk 找到Ndk文件夹并删除它。知道运行你的项目

答案 34 :(得分:0)

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

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

之后,Project和Gradle编译良好,我得以继续进行我的项目工作。

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

答案 35 :(得分:0)

在...之后转到您的 Android 模块。 CLASPATH'com.android.tools.build:gradle:222' 任何版本更改版本 像 4.1.0 这样的最新路径 毕竟进入你的安卓>APP>gradle>wrapper>gradleproperties CHANGE DISTRIBUTIONURL HTTP:services.gradle.org/distributions/gradle-5.6.2-all.zip 链接结束您应该使用最新版本更改您的 GRADLE 版本号 在现在最新版本 6.8.3 中,此执行将关闭 我希望我能帮上忙

答案 36 :(得分:0)

有同样的问题。默认安装最新的 NDK rc 版本。最新的稳定版本修复了这个问题。 enter image description here

答案 37 :(得分:0)

更新项目gradle版本

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

更新应用gradle:implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support:design:28.0.0'

答案 38 :(得分:0)

打开android / gradle / gradle-wrapper.properties并更改此行: distributionUrl =

https\://services.gradle.org/distributions/gradle-4.1-all.zip

此行:

distributionUrl =

https\://services.gradle.org/distributions/gradle-4.4-all.zip

打开android / build.gradle并更改此行:

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

对此:

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

答案 39 :(得分:0)

升级您的Gradle插件

  1. com.android.tools.build:gradle:3.1.4
    升级gradle包装器属性

    distributionUrl = https://services.gradle.org/distributions/gradle-4.4-all.zip

答案 40 :(得分:0)

我导航到local.properties,然后在其中

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

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

我正在使用Crystax NDK,却没有意识到仍在使用原始的Android NDK。

答案 41 :(得分:0)

添加NDK时出现相同的错误。我做了很多尝试,后来发现下面的解决方案非常适合我。

如果要在项目中添加NDK,请执行以下步骤。  1.如果您使用SDK Manager安装了NDK,请先进行卸载。 (从SDK工具中取消选中并应用)  2.从其官方站点手动下载NDK。 (任何版本),如果项目旧,则首选版本17。  3.解压缩该文件。  4.转到项目结构> NDK路径>在此处添加提取的文件路径。  5.建立项目。及其工作。

答案 42 :(得分:0)

我通过重新安装NDK解决了该问题。

答案 43 :(得分:0)

我按照以下步骤解决此问题,

Analyze -> Code Cleanup

File -> Project Structures -> Select project from the list and update the gradle version to latest.

Build -> Clean Project

Build -> Make Project

现在可能会报告与构建相关的问题,例如使用编译而不是实现等。

请修复这些问题,希望它可以解决问题。

答案 44 :(得分:-1)

三天后我想通了:

可以通过下载较旧版本的NDK(14b)并将其转到Android Studio来解决此问题。项目结构并选择它。

答案 45 :(得分:-1)

我遇到了同样的问题,并通过

解决了此问题

将gradle版本的project-label .gradle文件更改为Latest

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

并在应用标签.gradle文件上添加这些检查

packagingOptions{
    doNotStrip '*/mips/*.so'
    doNotStrip '*/mips64/*.so'
}

希望这会有所帮助。

答案 46 :(得分:-1)

只需在Project Build.Gradle中更新classpath 'com.android.tools.build:gradle:X.X.X' 并将 X 替换为您拥有的最新版本

答案 47 :(得分:-2)

从IntellJ IDEA->外观->系统设置-> Android SDK-> SDK平台上卸载旧版本的SDK。

根据需要安装新的Android SDK版本。

在安装新的SDK时,请取消选中SDK工具下的NDK复选框。