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


当前回答

如果不使用NDK,则取消设置环境变量ANDROID_NDK_HOME。

其他回答

错误信息:

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

链接文件不适合我。

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

打开你的包。Gradle文件和升级以下两个类路径的版本:

classpath 'com.android.tools.build:gradle:3.2.1'
classpath 'com.google.gms:google-services:4.2.0'

然后同步,在得到一个对话框更新Gradle版本,然后点击该链接,等待下载所有所需的更新。

我导航到本地。属性,在那里

ndk.dir=/yo/path/for/NDK

Line需要更新到NDK所在的位置。

我使用的是Crystax NDK,并没有意识到原来的Android NDK仍在使用。

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

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

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