我想使用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-all
和android-ndk-r10e
。我不知道是否应该提及其他任何内容,如果您需要任何信息,请发表评论。
答案 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
答案 1 :(得分:57)
升级您的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时遇到了同样的问题。
我找到了解决方法。请使用以下步骤。
这种情况正在发生,因为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
2)同意条款:
3)下载旧版本的NDK
(例如16b):
4)打开您的toolchains
目录。
5)将所需的文件从下载的zip文件的toolchains
文件夹传输到toolchains
文件夹:
6)重建项目:
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中编译项目时,偶尔会遇到:
错误:在ADK的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”工具栏中。
答案 16 :(得分:2)
注意:此答案似乎特定于:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
,但此处的链接是:
从NDK r19b:
more ~/Android/Sdk/ndk-bundle/CHANGELOG.md
No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
,
将您的项目文件更新为[使用插件版本3.1或更高版本]。您还将
需要升级到Android Studio 3.1或更高版本。答案 17 :(得分:2)
问题主要是在您特别从github克隆以前的项目时发生的。你能做的就是
classpath'com.android.tools.build:gradle:3.2.1'
在您的项目级别gradle中。
然后更改所有带有实现的编译实例,除了 compileSdkVersion 以外,将其保留在应用程序级别gradle中。
而不是立即同步,请单击创建项目(Ctrl + F9)
根据需要添加google maven存储库。
如果需要,升级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
如果出现此错误“找不到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(),请添加
答案 20 :(得分:2)
我遇到了类似的问题,但由于项目要求,我想使用NDK版本r9d。
在local.properties
中,路径设置为ndk.dir=C\:\\Android\\ndk\\android-ndk-r9d
,但这会导致问题:
在ABK的NDK工具链文件夹中找不到工具链,前缀为:[toolchain-name]
解决方案是:
sdk\ndk-bundle\toolchains
到\ndk\android-ndk-r9d\toolchains
在我看来,复制的工具链没有被使用,但出于某种原因需要它们才能存在。
答案 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”的文件夹
内部有一个名为“工具链”的文件夹。
我们注意到里面没有mips64el相关文件。
解决方案如下:
Click here,以通过浏览器分别下载NDK软件包。 解压缩后,打开“ toolchains”文件夹,将其与android-sdk-> ndk-bundle-> toolchains文件夹进行比较,找到丢失的文件夹,复制过去 3.重新编译,问题解决了。 希望它可以帮助您交配
答案 23 :(得分:1)
对我来说,我认为从android studio安装android NDK可能存在一些问题。我能够以下列方式解决这个问题
从
下载android ndkhttps://developer.android.com/ndk/downloads/index.html
并放在ndk-bundle(安装了你的android sdk的地方)里面。有关详细信息,请查看此屏幕。
答案 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)
答案 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插件
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复选框。