I have started to work on an existing project including Android NDK. I have two issues in build.gradle, which is impossible for me to build the app. For your information, my co-worker (who was working on it) was able to build the app.
I have already imported the NDK, from the project structures I can see the correct Android NDK path.
Here is how build.gradle looks like :
import org.apache.tools.ant.taskdefs.condition.Os buildscript { repositories { maven { url 'https://maven.fabric.io/public' } } dependencies { // The Fabric Gradle plugin uses an open ended version to react // quickly to Android tooling updates classpath 'io.fabric.tools:gradle:1.21.5' } } allprojects { repositories { maven { url "https://jitpack.io" } } } apply plugin: 'com.android.application' apply plugin: 'io.fabric' apply plugin: 'realm-android' repositories { maven { url 'https://maven.fabric.io/public' } } android { compileSdkVersion 24 buildToolsVersion "24.0.2" dataBinding{ enabled = true; } defaultConfig { applicationId "com.lucien.myapp" minSdkVersion 16 targetSdkVersion 24 versionCode 1 versionName "1.0.0" ndk { moduleName "DSPLib-jni" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } sourceSets.main.jni.srcDirs = [] // disable automatic ndk-build call, which ignore our Android.mk sourceSets.main.jniLibs.srcDir 'src/main/libs' // call regular ndk-build(.cmd) script from app directory task ndkBuild(type: Exec) { workingDir file('src/main') commandLine getNdkBuildCmd() } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn ndkBuild } task cleanNative(type: Exec) { workingDir file('src/main') commandLine getNdkBuildCmd(), 'clean' } clean.dependsOn cleanNative } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.2.0' compile 'com.android.support:design:24.2.0' compile 'com.android.support:support-v4:24.2.0' compile 'com.github.PhilJay:MPAndroidChart:v2.2.5' compile 'com.orhanobut:dialogplus:1.11@aar' compile('com.crashlytics.sdk.android:crashlytics:2.6.2@aar') { transitive = true; } compile 'com.squareup.retrofit2:retrofit:2.1.0' compile 'com.squareup.retrofit2:converter-gson:2.0.2' compile 'com.google.code.gson:gson:2.7' } def getNdkDir() { if (System.env.ANDROID_NDK_ROOT != null) return System.env.ANDROID_NDK_ROOT Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) def ndkdir = properties.getProperty('ndk.dir', null) if (ndkdir == null) throw new GradleException("NDK location not found. Define location with ndk.dir in the local.properties file or with an ANDROID_NDK_ROOT environment variable.") return ndkdir } def getNdkBuildCmd() { def ndkbuild = getNdkDir() + "/ndk-build" if (Os.isFamily(Os.FAMILY_WINDOWS)) ndkbuild += ".cmd" return ndkbuild }
I have an issue with the first line, trying to import "org.apache.tools.ant.taskdefs.condition.Os" : Cannot resolve symbol 'tools'
And the same kind of issue for "throw new GradleException("...")"
Do I need to update something in my build.gradle ? Or the issue is somewhere else ?
Thanks !
Most often “R cannot be resolved” error appears if there is an issue with some of your resource files. Due to this error, you are unable to build your application. That's why we need to solve this error as it not getting away by just doing a simple restart or hitting Alt+Enter.
GradleException is the base class of all exceptions thrown by Gradle. See Also: Serialized Form.
You can use any other available exceptions from java like:
throw new FileNotFoundException("Could not read version.properties!")
To fix this, just change GradleException()
to FileNotFoundException()
throw new FileNotFoundException("NDK location not found...")
instead of
throw new GradleException("NDK location not found...")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With