构建类型不是jni可调试错误

ali*_*ani 9 android android-ndk

我想用android studio调试c ++ ndk但是当我创建一个"Android Native"运行配置时,我得到错误"Build type is not jni debuggable".我的build.gradle:

import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "org.amk.test"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"


        ndk {
            moduleName "HelloJNI"
        }
        sourceSets.main {
            jniLibs.srcDir 'src/main/libs'
            jni.srcDirs = [] //disable automatic ndk-build call
        }
        task ndkBuild(type: Exec) {
            if (Os.isFamily(Os.FAMILY_WINDOWS)) {
                commandLine 'ndk-build.cmd', '-C', 'main','NDK_DEBUG=1'
            } else {
                commandLine 'ndk-build', '-C', file('src/main/jni').absolutePath
            }
        }

        tasks.withType(JavaCompile) {
            compileTask -> compileTask.dependsOn ndkBuild
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
        release {
            ndk {
                debuggable = true
            }
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:23.0.1'
    compile 'com.android.support:support-v4:23.0.1'
    compile 'com.android.support:palette-v7:23.0.1'
    compile 'com.android.support:cardview-v7:23.0.1'
    compile 'com.android.support:recyclerview-v7:23.0.1'
    compile 'com.jakewharton:butterknife:6.1.0'
}
Run Code Online (Sandbox Code Playgroud)

我的配置:

在此输入图像描述

我可以运行c ++ ndk但无法调试

我可以做什么?

wiz*_*urd 13

对于初学者,我使用的是Android Studio 1.5/gradle 2.8

我通过改变我build.gradle来解决这个问题

 buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            ndk {
                debuggable = true
            }

        }
        debug {
            debuggable = true
            jniDebuggable = true
        }

    }
Run Code Online (Sandbox Code Playgroud)

所以,基本上,我只是添加了这些行

ndk {
        debuggable = true
}
Run Code Online (Sandbox Code Playgroud)

要发布,和

debug {
         debuggable = true
         jniDebuggable = true
}
Run Code Online (Sandbox Code Playgroud)

到封闭的 buildTypes

但是这种语法因您的gradle版本而异.看看这里,并在这里与其他版本的Gradle帮助