31

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'

tools issue

And the same kind of issue for "throw new GradleException("...")"

GradleException issue

Do I need to update something in my build.gradle ? Or the issue is somewhere else ?

Thanks !

Mark O'Connor
  • 76,015
  • 10
  • 139
  • 185
Guimareshh
  • 1,214
  • 2
  • 15
  • 26

5 Answers5

40

You can use any other available exceptions from java like:

throw new FileNotFoundException("Could not read version.properties!")
walkmn
  • 2,322
  • 22
  • 29
20

very simple delete new from build.gradle

6

throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")

delete new

throw GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")

Cem Kurc
  • 61
  • 1
  • 1
0

You can use throw new FileNotFoundException("Flutter SDK not found")

hamza
  • 21
  • 2
  • This answer is exactly the same than https://stackoverflow.com/a/42715666/4862968, please do not post duplicates and upvote the original answer instead. – Antoine Nov 29 '22 at 07:26
-1

For those who come here, I resolved my issue by going back to Android Studio 2.1. Since the release of stable version 2.2, it's working great.

K.Sopheak
  • 22,904
  • 4
  • 33
  • 78
Guimareshh
  • 1,214
  • 2
  • 15
  • 26