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

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

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。我不知道我是否应该提到其他东西,所以如果你需要任何信息,请评论。

285719 次浏览

我通过在SDK-Tools中卸载NDK来修复这个错误。 所以,如果你不需要NDK,卸载它

在我的例子中,这个错误发生在创建一个新的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不再抱怨了

我卸载了NDK,因为我不需要它。去Android工作室的SDK管理器(工具-> Android -> SDK管理器)。如果安装了NDK。只需取消复选框并单击OK。已安装的组件将被删除。

错误信息:

在前缀为:llvm的ABI的NDK toolchains文件夹中没有找到工具链。

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

结果有一个错误:

在前缀为:llvm的ABI的NDK toolchains文件夹中没有找到工具链

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

~/Library/Android/sdk/ndk-bundle丢失了包含所有工具的文件夹toolchains

(它应该像这样:~/Library/Android/sdk/ndk-bundle/toolchains)

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

~/Library/Android/sdk/ndk-bundle

我在Windows 8机器上将Android studio从2.0升级到2.1时也遇到过同样的问题。

我找到了一个解决办法。请按以下步骤操作。

  1. https://developer.android.com/ndk/downloads/index.html下载android NDK for windows。
  2. 提取相同的文件并从bundle中复制“toolchain”文件夹。
  3. 将文件夹粘贴在C:\android-sdk-win\ NDK -bundle下的installed NDK文件夹下。[安装路径可能会根据您的安装而有所不同]
  4. 重新启动android studio。

这是因为Android工作室无法通过稳定渠道获得完整的NDK更新。如果你不使用NDK进行项目开发,你可以简单地从SDK目录中删除NDK文件夹。

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

下载android ndk from

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

并放置在ndk-bundle中(安装android SDK的地方)。欲了解更多信息,请检查此屏幕。

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

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

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

在前缀为[toolchain-name]的ABI的NDK toolchains文件夹中没有找到工具链

解决方案是:

  1. 使用sdk管理器安装最新的NDK
  2. 将缺失的工具链[toolchain-name]从新的ndk复制到旧的ndk。在我的例子中,从sdk\ndk-bundle\toolchains\ndk\android-ndk-r9d\toolchains
  3. 重复该过程,直到所有所需的工具链都存在

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

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

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

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

更好的是使用NDK 17.1* (https://developer.android.com/ndk/downloads/)等版本,你可以提取或使用android studio提取到NDK -bundle默认情况下将工作良好。

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

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

可能是更新相关组件导致。解决方案是Android studio (Tools ->Android→SDK管理器)。 选择ndk项并删除它。如果程序需要它,可以重新安装它。这将确保文件夹的位置是正确的,不会有这样的问题

我所遵循的解决问题的步骤如下:

  1. < p > Analyze -> Code Cleanup

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

  3. < p > Build -> Clean Project

  4. < p > Build -> Make Project

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

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

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

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

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

最新的NDK删除了对mips abi的支持,早期版本的android gradle插件仍然会检查mips工具链的存在。更多信息请看这里

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

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

 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

检查三个选项解决这类问题的线程

循序渐进:

使用旧的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

打开你的toolchains目录。

将你需要的文件从下载的zip-file的toolchains文件夹中传输到你的toolchains文件夹:

enter image description here

重建项目:

enter image description here


< p > UPD 2018年9月30日: < br > 在我自己的情况下,我使用Android NDK Revision r16b来修复这个错误。所以我给出这个版本的例子。
但最好使用Android NDK,修订版r17c(2018年6月)。这是最后一个,支持mips(来自Weekend评论的合理建议)

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

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

如果你想在你的项目中添加NDK,那么按照以下步骤进行:

  1. 如果您使用SDK管理器安装NDK,请先卸载。(取消SDK工具并应用)
  2. 从官方网站手动下载NDK。(任何版本)如果项目旧,那么更喜欢版本17。
  3. 提取该文件。
  4. 进入你的项目结构>NDK路径>在这里添加提取的文件路径。
  5. 构建项目。

在项目构建中更新classpath 'com.android.tools.build:gradle:X.X.X'。Gradle并将X替换为您拥有的最新版本。

打开Android Studio,选择Tools,然后选择Android,然后选择SDK,取消勾选NDK。如果你不需要这个,重新启动Android Studio。

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

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

在app label .gradle文件中添加这些检查:

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

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

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

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

我导航到本地。属性,在那里

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

Line需要更新到NDK所在的位置。

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

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

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

像这样改变

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

下载一个旧版本的NDK (14b),然后到Android Studio文件|项目结构并选择它。

升级你的Gradle插件

    <李> < p > com.android.tools.build: gradle: 3.1.4 < br > 升级gradle wraperproperties

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

< p > android / gradle / gradle-wrapper开放。属性并更改这一行: distributionUrl = < / p >
https\://services.gradle.org/distributions/gradle-4.1-all.zip

到这一行:

distributionUrl =

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

android /构建开放。Gradle并更改这一行:

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

:

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

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

enter image description here

有一个文件夹叫“toolchains"在里面。

enter image description here

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

enter image description here

解决方法如下:

点击这里通过浏览器单独下载NDK包。解压后,打开&;toolchains"文件夹,将其与android-sdk- ndk-bundle->toolchains文件夹进行比较,找到丢失的文件夹,复制过去三个。重新编译,问题就解决了。

像我一样解决它

< p > Android工作室 文件>项目结构,转到项目

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

check截图

然后清理项目,如果你得到这个错误“无法找到aapt2- protoo .jar”

去建造。gradle(项目)

尝试移动谷歌()方法(。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截图

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

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

用于尝试此示例并面临最新NDK问题的人。可以遵循这个解决方案。 在build.gradle 改变这个< / p >

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

打开你的包。Gradle文件和升级以下两个类路径的版本:

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

然后同步,在得到一个对话框更新Gradle版本,然后点击该链接,等待下载所有所需的更新。

更新项目gradle版本

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

更新应用程序gradle:实现'com.android.support:appcompat-v7:28.0.0' 实现“com.android.support:设计:28.0.0”< /代码> < / p >

对于Android Studio 3.2.1更新您的

Gradle版本4.6

Android插件版本3.2.1之上

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

如果这还不行,你可以试试下面的方法:

  • < p > 创建文件夹

    进入Sdk\ndk-bundle\toolchains文件夹(在我的情况下是它的 C:\Users\USER\AppData\Local\Android\Sdk\ndk-bundle\工具链;你 你可以在File->project structure->SDK location下找到你的 Android studio),并创建一个名称为的文件夹 如果错误为

    ,则错误为eg:

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

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

  • < p > < >强包括的内容 再次打开Sdk\ndk-bundle\toolchains文件夹,并打开其中已经存在的任何文件夹。 例如:Sdk \ ndk-bundle \工具链\ aarch64 - linux - android - 4.9 (在我的情况下C:\Users\USER\AppData\Local\Android\Sdk\ndk-bundle\toolchains\aarch64-linux-android-4.9) 将其中的预先构建的文件夹复制到我们在上一步

    中创建的文件夹中

这个问题主要出现在你克隆以前的项目特别是从github。你能做的就是

  1. 将类路径更改为

类路径com.android.tools.build: gradle: 3.2.1之上的

在你的项目级别gradle。

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

  2. 而不是现在同步点击使项目(Ctrl + F9)

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

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

(Android Studio IDE会在第4步和第5步中要求/指导你)

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

安装新的Android SDK版本,无论你想要什么版本。

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

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

下载这个文件和附加到toolchains文件夹

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

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

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

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

我尝试用以下方法来解决这个问题:

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

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

升级你的Android Studio到最新版本>>连接到互联网下载内容根据您的项目。

链接文件不适合我。

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

如果使用gradde构建,则将此添加到defaultConfig中

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

如果您使用ndk-build命令,请在Application.mk中添加此命令。

APP_ABI := armeabi-v7a arm64-v8a x86 x86_64

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

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

重新运行android应用程序。

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

注意文件android-ndk-r17-beta2/toolchains/mips64el-linux-android- 4.9 /预构建/ darwin-x86_64 / NOTICE-MIPS64。

.文件内容如下 这个mips64el-linux-android-4.9目录的存在是为了使NDK与Android兼容 SDK的Gradle插件,3.0.1版本及更早版本,它期望使用NDK

. MIPS64工具链目录

所以,我可以说,使用Android SDK的Gradle插件3.0.1以上,或者创建一个标有“mipsel”和“mips64el”的目录,都可以解决这个问题。后一种方法如下所示。

cd“path-to-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

在这里得到解

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

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

在sdk工具中删除所有的NDK。

在我的案例中,一些支持文件在新的NDK版本中丢失了“23.0.7599858”;所以我把这个版本降级为“22.1.7171670”。你也可以在“../Sdk/ NDK”上找到所有下载的NDK版本。

android {
compileSdkVersion 30
buildToolsVersion "29.0.2"


defaultConfig {
...
...
ndkVersion "22.1.7171670"
}

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

  1. 进入SDK管理器。

  2. 下一步选择SDK工具。

  3. 取消选择NDK (side by side)。

  4. 应用并确定。

要解决这个问题,请转到:

Sdk管理器->Android Sdk ->SDK工具在Android Studio和 取消选中NDK版本,只选择20.1.5948944版本并安装它。 enter image description here < / p >

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

卸载ndk为我解决了这个问题。

使用这个选项过滤出希望Abi前缀的使用:

android {
defaultConfig {
ndk {
abiFilters 'arm64-v8a', 'x86_64', ...
}
}
}

local.properties(SDK Location)中添加下面的行

ndk.dir=C\:\\Users\\<username>\\AppData\\Local\\Android\\Sdk\\ndk-bundle