【问题标题】:build type isn't jni debuggable error构建类型不是 jni 可调试错误
【发布时间】:2015-11-05 06:19:45
【问题描述】:

我想用 android studio 调试 c++ ndk 但是 当我创建“Android Native”运行配置时,我收到错误“构建类型不是 jni 可调试”。 我的 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'
}

我的配置:

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

我能做什么?

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    对于初学者,我使用的是 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
            }
    
        }
    

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

    ndk {
            debuggable = true
    }
    

    释放,并且

    debug {
             debuggable = true
             jniDebuggable = true
    }
    

    致附上buildTypes

    但是这种语法会根据你的 gradle 版本而有所不同。查看 Herehere 以获取其他 gradle 版本的帮助

    【讨论】:

    • jniDebuggable 在 NDK 构建的 gradle-experimental 中无效。
    猜你喜欢
    • 1970-01-01
    • 2023-02-07
    • 2022-11-02
    • 2018-08-12
    • 2016-06-06
    • 1970-01-01
    • 2022-01-27
    • 2016-11-01
    • 1970-01-01
    相关资源
    最近更新 更多