Sae*_*eed 193 android android-ndk android-gradle-plugin
我想使用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
Run Code Online (Sandbox Code Playgroud)
我打破了,但没有找到帮助的东西.这是主要的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
}
Run Code Online (Sandbox Code Playgroud)
这里是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.+'
}
Run Code Online (Sandbox Code Playgroud)
我正在使用gradle-2.9-all和android-ndk-r10e.我不知道是否应该提及其他任何内容,如果您需要任何信息,请发表评论.
laz*_*bug 354
两年过去了,现在如果你遇到这里,你可能会遇到如下错误信息:
在带有前缀mips64el-linux-android的ABI的NDK工具链文件夹中找不到工具链
要么
在带有前缀mipsel-linux-android的ABI的NDK工具链文件夹中找不到工具链
最新的NDK删除了对mipsabi的支持,而android gradle插件的earler版本仍然检查mips工具链的存在.请看这里了解更多信息.
解决方案:将android gradle插件升级到3.1或更高版本.
例如,在项目级别gradle [28-Sept-2018]中添加以下内容
classpath "com.android.tools.build:gradle:3.2.0"
Run Code Online (Sandbox Code Playgroud)
解决方法:创建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
Run Code Online (Sandbox Code Playgroud)
检查这个线程的三个选项来解决这类问题
Nik*_*dva 64
升级您的Gradle插件
classpath 'com.android.tools.build:gradle:3.2.1'
Run Code Online (Sandbox Code Playgroud)
并看到魔术错误消失了.
快乐编码 - :)
Nit*_*ith 34
我在Windows 8机器中将Android Studio从2.0升级到2.1时遇到了同样的问题.
我找到了解决方案.请使用以下步骤.
发生这种情况是因为Android studio不会在稳定通道中获得完整的NDK更新.如果您没有在项目开发中使用NDK,只需从SDK目录中删除NDK文件夹即可.
小智 32
错误消息:"没有工具链在NDK工具链文件夹中找到ABI,前缀为:llvm".
在使用NDK进行Android Studio新安装后,我导入了一个Android代码示例,该示例使用了GitHub中的NDK并尝试编译它.
结果有一个错误:
在带有前缀:llvm的ABI的NDK工具链文件夹中找不到工具链
解决方案: 由于某些原因,macOS上的标准安装过程无法安装完整集:
~/Library/Android/sdk/ndk-bundletoolchains用所有工具错过了文件夹,
(应该是这样的:~/Library/Android/sdk/ndk-bundle/toolchains)
解决方案是单独下载NDK,打开它,复制文件夹toolchain并将其粘贴到文件夹:
~/Library/Android/sdk/ndk-bundle
Run Code Online (Sandbox Code Playgroud)
之后,它对我很有用.
V.M*_*rch 22
一步步:
1)使用旧的NDK版本打开页面:
https://developer.android.com/ndk/downloads/older_releases
2)同意条款:
3)下载旧版本NDK(例如16b):
4)打开你的toolchains目录.
5)将您需要的toolchains文件从下载的zip文件夹中传输到您的toolchains文件夹:
6)重建项目:
UPD 30 2018年9月:
我使用Android NDK Revision r16b修复了我自己的错误.所以我用这个版本展示了这个例子.
但最好使用Android NDK,版本r17c(2018年6月).这是最后一个,支持mips(从Weekend的评论中得到合理的推荐).
fri*_*mle 16
在没有下载,复制或符号链接的情况下,我能够通过简单地创建一个空目录来"修复"错误,其中旧版本的Android Gradle插件期望删除mips工具链:
mkdir -p $ANDROID_HOME/ndk-bundle/toolchains/mips64el-linux-android/prebuilt/linux-x86_64
Run Code Online (Sandbox Code Playgroud)
显然,这里$ANDROID_HOME指的是Android SDK安装的根源.如果您使用的MacOS,替换linux-x86_64与darwin-x86_64上面的命令.在Windows上使用windows-x86_64.
小智 10
我卸载了NDK,因为我不需要它.转到Android工作室的SDK管理器(工具 - > Android - > SDK管理器).如果安装了NDK.只需取消选中该框,然后单击"确定".已删除的组件将被删除.
在我的情况下,创建一个新的Android Studio(Android工作室3.2.1) Java项目时出现此错误
Run Code Online (Sandbox Code Playgroud)classpath 'com.android.tools.build:gradle:2.0.0-beta6'
所以我降级为
dependencies {
classpath 'com.android.tools.build:gradle:3.2.1'
}
Run Code Online (Sandbox Code Playgroud)
不是最好的解决方案留在旧版本,但可能只是测试中的一个临时错误,因为local.properties中的NDK路径仍然相同,但IDE不再抱怨
Android NDK 18.0*似乎有一个问题,即在提取后没有在文件夹中创建所有文件.因此,您的应用程序编译将失败,使用ndk构建.
更好的是使用NDK 17.1*(https://developer.android.com/ndk/downloads/)等版本,你可以提取或使用android studio提取到默认情况下ndk-bundle工作正常.
小智 5
[ https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/android][1]
对于尝试此示例并面临最新 NDK 问题的人们。可以按照这个解决方案。在 build.gradle 改变这个
classpath 'com.android.tools.build:gradle:3.0.1'
Run Code Online (Sandbox Code Playgroud)
到
classpath 'com.android.tools.build:gradle:3.1.2'
Run Code Online (Sandbox Code Playgroud)
原因是在最新的 ndk 版本中不推荐使用 mips,Gradle 版本 3.1.2 不会强制使用 mips。它假定存在这些丢失的文件夹。
简单的解决方案是下载并解压以下包含 mips64el-linux-android-4.9 和 mipsel-linux-android-4.9 文件夹的文件到 sdk 内的工具链文件夹“android-sdk\ndk-bundle\toolchains”。
| 归档时间: |
|
| 查看次数: |
184087 次 |
| 最近记录: |