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

问题描述 投票:179回答:39

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

我没有找到任何帮助。这是主要的qazxsw poi:

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

android android-ndk android-gradle
39个回答
339
投票

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

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

要么

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

最新的NDK删除了对android-ndk-r10e abi的支持,而android gradle插件的earler版本仍然检查mips工具链的存在。 mips

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

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

see here for more info

解决方法:创建 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 的这个主题


7
投票

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

更好的是使用NDK 17.1 *( dependencies { classpath 'com.android.tools.build:gradle:3.2.1' } )等版本,你可以提取或使用android studio提取到默认情况下ndk-bundle工作正常。


4
投票

打开Android Studio,转到工具然后Android然后SDK,取消选中NDK如果你不需要这个,重启android studio。


4
投票

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

对于尝试这个例子并面临最新NDK问题的人。可以遵循此解决方案。在build.gradle中更改此内容

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

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

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


3
投票

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

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

变得像

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

3
投票

通过在dependencies { classpath 'com.android.tools.build:gradle:3.2.1' } (Project:ProjectName)中的两个存储库中添加google()依赖项解决了这个问题。然后同步你的项目

build.gradle

3
投票

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

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。

Downlod this file and extraxt to toolchains foolder,路径设置为local.properties,但这导致了问题:

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

解决方案是:

  1. 使用sdk manager安装最新的NDK
  2. 将缺少的工具链[toolchain-name]从新的ndk复制到旧的。在我的情况下,从ndk.dir=C\:\\Android\\ndk\\android-ndk-r9dsdk\ndk-bundle\toolchains
  3. 重复此过程,直到所有必需的工具链都存在

在我看来,复制的工具链没有被使用,但出于某种原因需要它们才能存在。


2
投票

我通过unInstall ndk解决了这个问题,因为我不需要它


2
投票

这是修复。

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

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

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


2
投票

像我一样解决它

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

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

\ndk\android-ndk-r9d\toolchains

然后清理项目,如果你有这个错误“找不到aapt2-proto.jar”

去build.gradle(项目)

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

例如,改变这个:

check screenshot

对此:

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

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

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

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


62
投票

对于Android studio 3.2.1+

升级您的Gradle插件

three options for solving this kind of issue

如果您现在收到此错误:

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

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

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

快乐编码 - :)


2
投票

对于Android Studio 3.2.1更新您的

Gradle版本4.6

Android插件版本3.2.1


2
投票

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

  1. 将类路径更改为

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

在你的项目级别gradle。

  1. 然后使用实现更改编译的所有实例,但compileSdkVersion将其保持在应用程序级别gradle中。
  2. 现在点击make project(Ctrl + F9)而不是同步
  3. 如果需要,添加谷歌maven存储库。
  4. 如果需要,请升级gradle包装器。

(对于步骤4和5,Android Studio IDE会询问/指导您

它修复!!享受编码


2
投票

注意:这个答案似乎特定于:check screenshot,但它在这里链接:

* No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android

来自NDK r19b:

https://stackoverflow.com/questions/52193274/no-toolchains-found-in-the-ndk-toolchains-folder-for-abi-with-prefix-mips64el-l
  • 此版本的NDK与Android Gradle插件3.0或更早版本不兼容。如果您看到像more ~/Android/Sdk/ndk-bundle/CHANGELOG.md 这样的错误,请将项目文件更新为[使用插件版本3.1或更新版本]。您还需要升级到Android Studio 3.1或更高版本。

1
投票

如果您不使用NDK,请取消设置环境变量No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android


1
投票

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

从...下载的android ndk

ANDROID_NDK_HOME

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

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


1
投票

如果你正在使用Ionic 3从android studio sdk工具中删除ndk。


1
投票

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

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

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

enter image description here

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

enter image description here

解决方案如下:

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


1
投票

面对同样的问题。

我取得了成功。

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

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

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


1
投票

首先,尝试更新ndk版本Click here

如果那不起作用,那么您可以尝试以下方法:

  • 创建一个文件夹 转到Sdk \ ndk-bundle \ toolchains文件夹(在我的例子中是C:\ Users \ USER \ AppData \ Local \ Android \ Sdk \ ndk-bundle \ toolchains;你可以在File-> project structure-> SDK下找到你的文件夹您在android studio中的位置)并创建一个文件夹,其名称在错误中显示为缺失,例如:如果错误是 Gradle sync失败:在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)将其中的预建文件夹复制到我们在上一步中创建的文件夹中
  • 再次运行该项目,它将工作

希望能帮助到你!!


0
投票

我按照以下步骤修复问题,

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

Analyze -> Code Cleanup

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

Build -> Clean Project

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

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


52
投票

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


0
投票

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


34
投票

我在Windows 8机器中将Android Studio从2.0升级到2.1时遇到了同样的问题。

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

  1. repositories { google() jcenter() } 下载Android NDK for Windows。
  2. 解压缩并从包中复制“toolchain”文件夹。
  3. 将文件夹粘贴到C:\ android-sdk-win \ ndk-bundle下安装的NDK文件夹下。[安装路径可能因安装而异]
  4. 重启android studio。

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


31
投票

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

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

结果有一个错误:

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

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

https://developer.android.com/ndk/downloads/index.html用所有工具错过了文件夹~/Library/Android/sdk/ndk-bundle

(它应该是这样的:toolchains

解决方案是单独下载NDK,打开它,复制文件夹~/Library/Android/sdk/ndk-bundle/toolchains并将其粘贴到该文件夹​​:

toolchain

之后,它对我很有用。


22
投票

一步步:

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

~/Library/Android/sdk/ndk-bundle

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

2)同意条款:

enter image description here

3)下载旧版本的enter image description here(例如16b):

NDK

4)打开你的enter image description here目录。

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

toolchains

6)重建项目:

enter image description here


UPD 30 2018年9月: 我使用Android NDK Revision r16b修复了我自己的错误。所以我用这个版本展示了这个例子。 但最好使用Android NDK,版本r17c(2018年6月)。这是最后一个,支持mips(从Weekend的评论中得到合理的推荐)。


15
投票

在没有下载,复制或符号链接的情况下,我能够通过简单地创建一个空目录来“修复”错误,其中旧版本的Android Gradle插件期望删除mips工具链:

enter image description here

显然,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


10
投票

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


8
投票

在我的情况下,创建一个新的Android Studio(Android工作室3.2.1)Java项目时出现此错误

windows-x86_64

所以我降级为

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

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

© www.soinside.com 2019 - 2024. All rights reserved.