我想使用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
}
这是 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-all
和 android-ndk-r10e
。我不知道我是否应该提及其他任何内容,如果您需要任何信息,请发表评论。
两年过去了,现在如果你遇到这里,你可能会遇到这样的错误信息:
在带有前缀 mips64el-linux-android 的 ABI 的 NDK 工具链文件夹中找不到工具链
或者
在带有前缀 mipsel-linux-android 的 ABI 的 NDK 工具链文件夹中找不到工具链
最新的 NDK 移除了对 mips
abi 的支持,并且早期版本的 android gradle 插件仍然检查 mips 工具链的存在。 see here for more info。
解决方案:将 android gradle 插件升级到 3.1 或更高版本。
例如在项目级别的 gradle 中添加以下内容 [28-Sept-2018]
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的这个线程
我通过卸载 SDK-Tools 中的 NDK 修复了此错误。因此,如果您不需要 NDK,请将其卸载。
适用于 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()
}
在我的 Windows 8 机器上将 Android Studio 从 2.0 更新到 2.1 时,我遇到了同样的问题。
我找到了解决方案。请使用以下步骤。
从 https://developer.android.com/ndk/downloads/index.html 下载适用于 windows 的 android NDK。提取相同内容并从包中复制“工具链”文件夹。将已安装的 NDK 文件夹下的文件夹粘贴到 C:\android-sdk-win\ndk-bundle 下。[安装路径可能因您的安装而异] 重新启动 android studio。
发生这种情况是因为 Android Studio 不会在稳定频道中获得完整的 NDK 更新。如果您不使用 NDK 进行项目开发,您只需从 SDK 目录中删除 NDK 文件夹即可。
Error : Android MIPS ToolChain directory "" does not exist
”。但我需要从这里获取 NDK 的 17c 版本:developer.android.com/ndk/downloads/older_releases(按照:reddit.com/r/gamemaker/comments/9m958a/…)谢谢@nithinjith! ...但是仍然没有构建,需要解决:Android NDK: Please fix the APP_ABI definition in /Users/../Library/Android/sdk/ndk-bundle/build/core/default-application.mk
错误信息:
在带有前缀:llvm 的 ABI 的 NDK 工具链文件夹中找不到工具链。
在使用 NDK 全新 Web 安装 Android Studio 后,我从 GitHub 导入了一个使用 NDK 的 Android 代码示例并尝试编译它。
结果出现了错误:
在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:llvm
解决方案:由于某些原因,macOS 上的标准安装过程未能安装完整集:
~/Library/Android/sdk/ndk-bundle
错过了包含所有工具的文件夹 toolchains
,
(应该是这样的:~/Library/Android/sdk/ndk-bundle/toolchains
)
解决方案是单独下载 NDK,打开它,复制文件夹 toolchain
并将其粘贴到文件夹中:
~/Library/Android/sdk/ndk-bundle
一步步:
1) 使用旧 NDK 版本打开页面:
https://developer.android.com/ndk/downloads/older_releases
https://i.stack.imgur.com/gCmB0.png
2) 同意条款:
https://i.stack.imgur.com/z63Ft.png
3) 下载旧版本的 NDK
(例如 16b):
https://i.stack.imgur.com/Wqj1A.png
4) 打开您的 toolchains
目录。
5) 将您需要的文件从下载的 zip 文件的 toolchains
文件夹传输到您的 toolchains
文件夹:
https://i.stack.imgur.com/rS3aO.png
6)重建项目:
https://i.stack.imgur.com/qCHSD.png
UPD 2018 年 9 月 30 日:我使用 Android NDK Revision r16b 来修复我自己的这个错误。所以我用这个版本来举例说明。但最好使用 Android NDK,Revision r17c(2018 年 6 月)。这是最后一个,支持 mips(来自周末评论的合理推荐)。
(for example 16b)
。通过 release note of Android NDK Revision r17c (June 2018):已删除对 ARMv5 (armeabi)、MIPS 和 MIPS64 的支持。尝试构建这些 ABI 中的任何一个都将导致错误。 正是 16b
。
16b
。 r17c 是第一个删除对 MIPS 支持的版本 :)
无需下载、复制或符号链接任何内容,我就能够通过简单地创建一个空目录来“修复”错误,旧版本的 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,因为我不需要它。转到 Android Studio 上的 SDK 管理器(工具 -> Android -> SDK 管理器)。如果安装了 NDK。只需取消选中该框,然后单击 OK 。已安装的组件将被删除。
这个问题的最佳解决方案是:
转到 SDK 管理器。接下来选择 SDK 工具。取消选择 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'
}
不是最好的解决方案留在旧版本,但也许它只是 beta 中的一个临时错误,因为 local.properties 中的 NDK 路径仍然相同,但 IDE 不再抱怨
Android NDK 18.0* 似乎存在提取后无法在文件夹中创建所有文件的问题。因此,使用 ndk 构建的应用程序编译将失败。
更好的是使用 NDK 17.1* (https://developer.android.com/ndk/downloads/) 等版本,您可以默认提取或使用 android studio 提取到 ndk-bundle 会很好。
打开 Android Studio,转到 Tools 然后 Android 然后 SDK,取消选中 NDK 如果不需要,然后重新启动 android studio。
[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'
原因是 mips 在最新的 ndk 版本中已被弃用,Gradle 版本 3.1.2 不会强制使用 mips。它假定这些丢失的文件夹存在。
简单的解决方案是下载并解压缩以下包含 mips64el-linux-android-4.9 和 mipsel-linux-android-4.9 文件夹的文件到 sdk "android-sdk\ndk-bundle\toolchains" 内的工具链文件夹中。
Downlod this file and extraxt to toolchains foolder
环顾四周后,解决方案是从我的偏好中删除 NDK 名称。
Android Studio → 首选项 → 系统设置 → Android SDK → SDK 工具 → 取消选择 NDK → 应用按钮。
在那之后项目和 Gradle 编译得很好,我能够继续我的项目工作。
至于为什么会这样,我不知道,但有关 NDK 的更多信息,请查看:
https://i.stack.imgur.com/ftk7t.png
在android studio中编译项目时,偶尔会遇到:
错误:在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:arm-linux-androideabi/llvm
这可能是由更新相关组件引起的。解决方案是 Android studio (Tools -> Android -> SDK Manager)。选择 ndk 项目并将其删除。如果程序需要它,您可以重新安装它。这将确保文件夹位置正确,不会出现此类问题。
要解决此问题,请访问:
https://i.stack.imgur.com/loLxy.png
我使用这种技术在 linux(Ubuntu) 机器上解决了同样的问题。
我遇到过类似的问题,但由于项目要求,我想使用 NDK 版本 r9d。
在 local.properties
中,路径设置为 ndk.dir=C\:\\Android\\ndk\\android-ndk-r9d
,但这会导致问题:
在 ABI 的 NDK 工具链文件夹中找不到带有前缀的工具链:[工具链名称]
解决方案是:
使用 sdk manager 安装最新的 NDK 将缺少的工具链 [toolchain-name] 从新的 ndk 复制到旧的。在我的情况下,从 sdk\ndk-bundle\toolchains 到 \ndk\android-ndk-r9d\toolchains 重复该过程,直到所有需要的工具链都在那里
在我看来,复制的工具链没有被使用,但由于某种原因,它们需要在那里。
在您的项目级别 Gradle 文件中将依赖项类路径版本从低到高增加,例如
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
改变喜欢
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
通过将 google()
依赖项添加到 build.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()
}
}
我通过未安装的 ndk 解决了这个问题,因为我不需要它
我导航到 local.properties,并在其中
ndk.dir=/yo/path/for/NDK
行需要更新到您的 ndk 所在的位置。
我正在使用 Crystax NDK,并没有意识到原来的 Android NDK 仍在使用中。
像我一样修复它
Android Studio 文件> 项目结构并转到项目
将 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() 添加它
对于 Android Studio 3.2.1 更新您的
梯度版本 4.6
安卓插件版本 3.2.1
注意:此答案似乎特定于:No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
,但它是通过以下方式链接的:
来自 NDK r19b:
more ~/Android/Sdk/ndk-bundle/CHANGELOG.md
此版本的 NDK 与 Android Gradle 插件版本 3.0 或更早版本不兼容。如果您看到类似 No toolchains found in the NDK toolchains folder for ABI 的错误,前缀为:mips64el-linux-android,请将您的项目文件更新为 [使用插件版本 3.1 或更高版本]。您还需要升级到 Android Studio 3.1 或更高版本。
导航到 C:\Users\lalit\AppData\Local\Android\Sdk\ndk-bundle\toolchains
。
现在,找到文件夹名称 aarch64-linux-android-4.9
并将其重命名为 mips64el-linux-android
。
重新运行安卓应用。
找到自己本地的android-SDK,如果下载了ndk的相关SDK,会有一个文件夹叫“ndk-bundle”
https://i.stack.imgur.com/v2uWJ.png
里面有一个名为“toolchains”的文件夹。
https://i.stack.imgur.com/NRfZv.png
我们注意到里面没有 mips64el 相关文件。
https://i.stack.imgur.com/PqKuo.png
解决方法如下:
Click here 通过浏览器单独下载 NDK 包。解压后打开“toolchains”文件夹,对比android-sdk->ndk-bundle->toolchains文件夹,找到丢失的文件夹,复制过去三个。重新编译,问题解决。
删除 sdk 工具中的所有 NDK。
问题主要出现在您专门从 github 克隆以前的项目时。你能做的是
将类路径更改为
类路径'com.android.tools.build:gradle:3.2.1'
在您的项目级别gradle中。
然后更改除 compileSdkVersion 之外的所有 compile 实例,使其保持在您的应用程序级别 gradle 中。现在不要同步,而是单击 make project(Ctrl+F9) 如果需要,添加 google maven 存储库。如果需要,升级 gradle 包装器。
(Android Studio IDE 会在第 4 步和第 5 步中询问/指导您)
不定期副业成功案例分享
build.gradle
文件中升级 Android Gradle 插件,类似于com.android.tools.build:gradle:3.2.0-rc02
,而不是 Gradle 版本# 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
mklink /d mips64el-linux-android aarch64-linux-android-4.9
和mklink /d mipsel-linux-android arm-linux-androideabi-4.9
也适用于我。