我想编译一个开源的android项目(Netguard)使用gradel (gradlew清洁构建)但我遇到了这个错误:

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
}

这是构造。应用项目的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-all和android-ndk-r10e。我不知道我是否应该提到其他东西,所以如果你需要任何信息,请评论。


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


在我的例子中,这个错误发生在创建一个新的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'
      }

保留旧版本并不是最好的解决方案,但可能这只是测试版中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丢失了所有工具的文件夹工具链,

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

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

~/Library/Android/sdk/ndk-bundle

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

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

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

在当地。属性:路径设置为ndk。dir=C\:\\Android\\ndk\\ Android -ndk-r9d但这导致了一个问题:

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

解决方案是:

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

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


如果不使用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 with的NDK工具链文件夹中没有找到工具链 前缀:arm-linux-androideabi / llvm

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


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

Analyze ->代码清理 从列表中选择项目,并将gradle版本更新到最新。 Build ->清洁项目 Build ->制作项目

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


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


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

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

or

在前缀为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

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


循序渐进:

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

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

2)同意本条款:

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

4)打开工具链目录。

5)将你需要的文件从toolchains文件夹下载压缩文件到你的toolchains文件夹:

6)重建项目:


UPD 2018年9月30日: 在我自己的情况下,我使用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,那么按照以下步骤进行:

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


更新类路径“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'
}

通过将谷歌()依赖项添加到构建中的两个存储库中解决了这个问题。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()
    }
}

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.

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

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插件

com.android.tools.build: gradle: 3.1.4 升级gradle的wraperproperties - 4.4 - all.zip distributionUrl = https://services.gradle.org/distributions/gradle


android / gradle / gradle-wrapper开放。属性并更改这一行: distributionUrl =

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”的文件夹

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

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

解决方法如下:

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


像我一样解决它

Android工作室 文件>项目结构并转到项目

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

检查屏幕截图

然后清理项目,如果你得到这个错误“无法找到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”中进行这些更改

检查屏幕截图

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


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

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

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

To

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”


对于Android Studio 3.2.1更新您的

Gradle版本4.6

Android插件版本3.2.1


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

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

Create a folder Go to the Sdk\ndk-bundle\toolchains folder (in my case its C:\Users\USER\AppData\Local\Android\Sdk\ndk-bundle\toolchains; you can find yours under File->project structure->SDK location in you android studio) and create a folder with the name that's shown as missing in the error for eg: if the error is Gradle sync failed: No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel-linux-android Then create a folder with name mipsel-linux-android Include content Go to the Sdk\ndk-bundle\toolchains folder again and open any folder that's already in it. For example:Sdk\ndk-bundle\toolchains\aarch64-linux-android-4.9 (in mycase C:\Users\USER\AppData\Local\Android\Sdk\ndk-bundle\toolchains\aarch64-linux-android-4.9) copy the prebuilt folder in it to the folder we created in the last step


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

将类路径更改为

classpath’com。android工具。构建:gradle: 1 3。2。

在你的项目级别gradle。

然后用实现改变所有的compile实例,除了compileSdkVersion,保持它在你的应用级gradle中。 现在点击创建项目(Ctrl+F9) 如果需要,添加谷歌maven存储库。 如果需要,升级gradle包装器。

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


注意:这个答案似乎是特定的:在NDK toolchains文件夹中找不到ABI的工具链,前缀为: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或更老版本。如果你看到一个错误 在前缀为mips64el-linux-android的NDK toolchains文件夹中没有找到工具链, 将项目文件更新到[使用插件3.1或更新版本]。你也会 需要升级到androidstudio3.1或更新版本。


从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文件夹中。

下载此文件和附加到工具链文件夹


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

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

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

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


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

Stay Android build tools version the same with gradle version. For example:if you use the build tools version is 3.3.0,your gradle version must be 4.10.1.You can reference by the link https://developer.android.com/studio/releases/gradle-plugin and chagne your build tools & gradle version in your AS(File->Project Structure->Project) If method1 don't work,you can custom your ndk toolchains version to solve the problem :like download ndk18 or ndk16 , setting the ndk path is your AS(File->Project Structure->SDK Location->Android NDK Location)


只需将您的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版本。最新的稳定版本修复了这个问题。


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


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

android {
compileSdkVersion 30
buildToolsVersion "29.0.2"

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

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

进入SDK管理器。 接下来选择SDK工具。 取消选择NDK(并排)。 Apply和OK。


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

工具->Sdk管理器-> Android Sdk ->Sdk工具在Android Studio和 取消选中NDK版本,只选择20.1.5948944版本并安装它。

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


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


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

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

在local中添加下面的行。属性(SDK的位置)

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