我试图在简单的 C++ 代码中达到断点:
这里是.cpp
#include <jni.h>
#include <string>
extern "C"
{
jstring Java_com_comscore_android_app_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++ lalalaaaaaa";
return env->NewStringUTF(hello.c_str());
}
}
这里是 gradle 文件:
android {
compileSdkVersion 23
buildToolsVersion "24.0.1"
defaultConfig {
applicationId "com.comscore"
minSdkVersion 10
targetSdkVersion 23
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
ndkBuild {
arguments "NDK_APPLICATION_MK:=src/main/jni/Application.mk"
}
}
}
externalNativeBuild{
ndkBuild{
path "src/main/jni/Android.mk"
}
}
...
}
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := native-lib.cpp
LOCAL_MODULE := native-lib
LOCAL_LDLIBS := -llog
LOCAL_CPPFLAGS += -fsigned-char -fexceptions -frtti -g -O0 -std=c++0x -std=gnu++0x
LOCAL_CFLAGS += -fsigned-char -fexceptions -frtti -g -O0 -std=c++0x -std=gnu++0x
include $(BUILD_SHARED_LIBRARY)
和Application.mk
APP_ABI := all
APP_STL := gnustl_static
应用程序编译并运行,但在运行调试器时我无法在 C++ 代码中的任何断点处停止。我可以看到它如何加载本机库,但它不会在任何地方停止,并且 Android studio 告诉我断点已附加。
我正在使用 Android Studio 2.2 预览版 6
有谁能够帮助我?
就我而言,我有两个模块,一个包含 C++ 代码(库),另一个包含使用该库模块的应用程序。
问题是我尝试使用应用程序模块调试库模块,所以我只需要指定调试符号所在的文件夹:
运行->编辑配置...->调试器并在符号目录选项卡中添加正确的路径。例如:
/path_to_my_project/lib_module/build/intermediates/ndkBuild/flavor/debug/obj/local/x86
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)