如何配置NDK的调试环境
在安卓的开发中,NDK具有代码保护和可移植的特点,也可以调用第三方C/C库。在NDK开发之初,Android Studio没有提供在原生C/C中设置断点的调试,我们都是通过输出日志进行调试,费时费力。安卓工作室应该只在2.2版本提供断点调试功能,在这个版本也提供cmake编译。
目前在做NDK开发的时候,还是习惯用NDK-Build(也就是设置Android.mk)进行开发。让我简单谈谈如何使用输出日志进行调试:
1.首先,在Android.mk中设置MODULE添加日志库,代码如下:
包括$(CLEAR_VARS)
LOCAL_MODULE :=ndktest
LOCAL _ SRC _ FILES :=native _ lib . c
LOCAL_LDLIBS=-llog
包含$(BUILD_SHARED_LIBRARY)
2.然后添加:
#包括
//为了方便调用,将输出宏定义。
#定义LOG_TAG 'NATIVE_OUTPUT '
#定义LOGI(.)((无效)_ _ _ ANDROID _ LOG _ print(ANDROID _ LOG _ INFO,LOG_TAG,__VA_ARGS__))
#定义LOGE(.)((void)_ _ _ ANDROID _ LOG _ print(ANDROID _ LOG _ ERROR,LOG_TAG,__VA_ARGS__))
3.最后,日志可以通过在native_lib.c中实现文件的方法输出,例如:
LOGI(《奔跑吧》);
LOGI('run i=%d ',I);
以上是一个繁琐的调试方法,每次写完日志都需要重新编译代码。现在描述如何构建本机C/C断点的调试方法:
1.首先,将您的Android Studio升级到2.2或更高版本,并将build.gradle的buildToolsVersion参数设置为Module:buildToolsVersion ' 25 . 0 . 0 '下的25或更高版本。
2.如果您是一个新创建的项目,您可以在“新建项目”中的“应用程序名称”选项下选择一个复选框(包括C支持),集成开发环境将帮助您在构建项目时配置调试环境。
3.如果你是从一个旧项目移植过来的(也就是之前用Android.mk配置的),你可以在Module下打开build.gradle文件。
在defaultConfig节点中,按如下方式添加ndk:
ndk {
moduleName 'imagetool '
AbiFilters 'armeabi'/编译支持的平台。
//.根据自己对Application.mk的配置,按照梯度规则进行配置。
}
然后,在安卓节点中,添加外部活动构建节点:
外部活动构建{
ndkBuild {
android.mk的相对路径。
路径' src/main/jni/Android.mk '
}
}
然后同步项目同步项目,您会看到项目中还有几个文件夹:
当您单击运行调试按钮右侧的将调试器附加到安卓进程按钮时,如果您有本机和双选项:
当您单击运行调试按钮右侧的将调试器附加到安卓进程按钮时,如果您有本机和双选项:
说明您已经成功配置,并且可以在本机-lib.c实现文件中设置断点进行调试。上面的截图弹出是调试程序配置,默认是自动选项。您可以将其设置为本机以调试您的natvie代码。
调试到本机如下:
可以使用LLDB作为自己的调试辅助工具,如何使用LLDB本章没有详细介绍,但是可以参考其他资料。
版权声明:如何配置NDK的调试环境是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。