小编eri*_*nys的帖子

没有遇到Android Studio本机断点

我有一个大型Android项目,其中包含许多本地代码和Java代码。Java代码调试良好。所有断点都被击中。

本机调试器连接,但是断点永远不会命中。我正在使用ndk-build。

在我的gradle文件中,我声明了以下内容:

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
        debuggable false
        jniDebuggable false
    }
    debug {
        debuggable true
        jniDebuggable true
        minifyEnabled false
        packagingOptions{
            doNotStrip "*/armeabi-v7a/*.so"
            doNotStrip "*/arm64-v8a/*.so"
            doNotStrip "*/x86/*.so"
            doNotStrip "*/x86_64/*.so"
        }
    }
}
externalNativeBuild {
    ndkBuild {
        path 'src/main/jni/Android.mk'
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Java中声明了本机函数的地方,它们显示为红色,并显示错误“无法解析相应的JNI函数”

我已经按照本文的每个步骤进行操作: “无法解析相应的JNI函数” Android Studio

该项目可以正常构建和运行,但是Java无法识别本机功能。

我注意到的一件事是,其中没有armeabi-v7a文件夹 obj\local\

但是其中有armeabi-v7a文件夹

build\intermediates\transforms\stripDebugSymbol\release\0\lib
build\intermediates\transforms\mergeJniLibs\release\0\lib
build\intermediates\ndkBuild\release\obj\local
build\intermediates\ndkBuild\debug\obj\local
.externalNativeBuild\ndkBuild\release
.externalNativeBuild\ndkBuild\debug
Run Code Online (Sandbox Code Playgroud)

还有其他一些晦涩的设置可能会禁用本机调试吗?

编辑:

这就是我在Java(BaseActivity.java)中声明本机函数的方式:

native boolean SetupProject ();
Run Code Online (Sandbox Code Playgroud)

这就是我在C ++中声明它们的方式:

JNIEXPORT jboolean JNICALL Java_com_mycompany_myapp_BaseActivity_SetupProject(JNIEnv * env, jobject obj) {
    //some code …
Run Code Online (Sandbox Code Playgroud)

debugging android android-ndk android-studio

5
推荐指数
0
解决办法
912
查看次数

标签 统计

android ×1

android-ndk ×1

android-studio ×1

debugging ×1