I want to compile an open source android project (Netguard) using gradel (gradlew clean build
) But I encountered this Error:
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
I serached but didn't find enything helping. Here is the main 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
}
And here is the build.gradle
of the app
project:
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.+'
}
And I'm using gradle-2.9-all
and android-ndk-r10e
. I don't know if I should mention anything else, so comment if you need any information.
Two years has passed, now if you come across here, you may possibly encounterd error message like this:
No toolchains found in the NDK toolchains folder for ABI with prefix mips64el-linux-android
or
No toolchains found in the NDK toolchains folder for ABI with prefix mipsel-linux-android
Latest NDK removed support for mips
abi, and earler version of android gradle plugin still check for the existance of mips toolchain. see here for more info.
Solution: Upgrade android gradle plugin to 3.1 or newer.
e.g. Add following in the project level gradle [28-Sept-2018]
classpath "com.android.tools.build:gradle:3.2.0"
Workaround: Create mipsel-linux-android
folder structure to fool the tool. The easiest way would be to symbolic link to 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
Check this thread of three options for solving this kind of issue