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


当前回答

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

其他回答

链接文件不适合我。

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

像我一样解决它

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”中进行这些更改

检查屏幕截图

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

循序渐进:

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评论的合理建议)。

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

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

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

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

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

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