gpt4 book ai didi

java - 无法启用 JNI 调试器

转载 作者:行者123 更新时间:2023-11-30 17:00:30 24 4
gpt4 key购买 nike

我最近开始使用Java Native Interface (JNI),遇到了一些问题,希望你能帮助我解决。

我使用的是 Android Studio 2.1.1、SDK 工具 25.1.7、NDK 12、API 21。

1.我的主要问题是我无法调试C代码,只能调试java。我将尝试解释我对一个更简单的代码进行调试的尝试,我将包括其中。

1.1 我使用命令 ndk-build NDK_DEBUG=1 将 C 代码编译为 .so。

1.2 我已将 SDK\NDK 路径添加到 Android Studio 项目结构中。

1.3 我已在 build.gradle 中添加了“jnidebuggable=true”。

1.4 我在“运行”->“编辑配置”中创建了一个带有“Hybrid”的新调试 session 设置并将 .so 库加载到其中。

1.5 附加我的 Android.mk、Application.mk、build.gradle、C 代码和文件。

1.6 代码正在运行并工作,它没有到达 C 代码内的断点。

2.我如何监控代码的堆和堆栈使用情况,尤其是JNI?还可以改变吗?

3.与2相同的问题。如何减少堆中的依赖性?将我的变量定义为静态可以解决问题吗?

Android.mk

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := sub
LOCAL_SRC_FILES := subst.c
include $(BUILD_SHARED_LIBRARY)

应用程序.mk

APP_ABI := all
APP_BUILD_SCRIPT := C:\Users\Nir\AndroidStudioProjects\FirstApp\jni\Android.mk

C代码

jdouble Java_nir_firstapp_MainActivity_subst(JNIEnv* env, jobject obj, jdouble A, jdouble B)
{
int x;
x=A-B;
return(x);
}

构建.gradle

apply plugin: 'com.android.application'

android {
compileSdkVersion 23
buildToolsVersion "23.0.2"

defaultConfig {
applicationId "nir.firstapp"
minSdkVersion 19
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
jniDebuggable true
debuggable true
}
}
}

MainActivity相关代码

public native double subst(double A, double B);
static{
System.loadLibrary("sub");
}
double calc = subst(Double.valueOf(num1str),Double.valueOf(num2str));

真诚的感谢您,尼尔

最佳答案

要启用 native 调试,请在 Android Studio 下编译 C++ 代码。

在 2.2 版本中,您可以使用 externalNativeBuild 。对于 2.1,您只有 experimental Gradle 插件。不幸的是,它没有完全集成到 AS 中,例如文件/项目结构(又名Ctrl-;)无法理解这些build.gradle文件。

关于java - 无法启用 JNI 调试器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37575440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com