最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
NDK的debug环境怎么配置
时间:2022-06-30 17:40:08 编辑:袖梨 来源:一聚教程网
在安卓的开发中,NDK具有保护代码、便于移植的特点,而且还可以调用第三方C/C++库。刚开始做NDK 开发的时候,Android Studio 还没提供了 native C/C++ 设置断点 调试,我们都是通过输出 日志来调试,这样费时耗力。Android Studio 应该是在 2.2 版本才提供的设置断点 debug 功能,同时在该版本也提供了 cmake 编译。
我目前在做 NDK 开发的时候,还是习惯用 NDK-Build(也就是设置 Android.mk) 来开发,我先简单说一下怎么用输出日志来调试:
1、首先在 Android.mk 设置MODULE 添加日志库,如下代码:
include $(CLEAR_VARS)
LOCAL_MODULE := ndktest
LOCAL_SRC_FILES := native_lib.c
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
2、然后在 native_lib.c 实现文件添加:
#include
//为了方便调用,将输出宏定义
#define LOG_TAG "NATIVE_OUTPUT"
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__))
#define LOGE(...) ((void)__android_log_print(ANDROID_LOG_ERROR, LOG_TAG, __VA_ARGS__))
3、最后就能在 native_lib.c 实现文件的 方法里输出日志了,如:
LOGI("run here");
LOGI("run i=%d", i);
上述是比较繁琐的调试方法,每次写完日志,又要重新编译一下代码。现在叙述一下怎么搭建 native C/C++ 断点调试方法:
1、首先要把你的 Android Studio 升级到 2.2 或更高,且在Module下 build.gradle 的buildToolsVersion 参数 要 设置 25 或以上: buildToolsVersion ཕ.0.0'
2、如果你是新创建项目, 你可以在New Project 时候, 在 Application name 选项下 有个复选框(Include C++ support) 选上,IDE 在构建项目的时候,会帮你配置好了 debug 环境。
3、如果你是从旧项目移植过来的(也就是以前用 Android.mk配置),你可以打开 Module下 build.gradle文件
defaultConfig节点中,添加ndk,如下:
ndk {
moduleName "imagetool"
abiFilters "armeabi"//编译支持的平台
// .. 根据自己的 Application.mk 的配置,按 gradle 规则配置一下
}
然后在Android 的节点中,添加 externalNativeBuild 节点:
externalNativeBuild {
ndkBuild {
// Android.mk 的相对路径
path "src/main/jni/Android.mk"
}
}
接着 sync Project 同步一下项目,你会看见项目多了几个文件夹:
当你点击 Run Debug 按钮 右边 的Attach debugger to Android process 按钮,如果有 Native、Dual 选择:
当你点击 Run Debug 按钮 右边 的Attach debugger to Android process 按钮,如果有 Native、Dual 选择:
说明你配置成功了, 可以在 native-lib.c 实现文件 设置断点来调试了。 上述截图 弹框 是debuger 配置,默认是 auto 选项,你可以设置 成 native 用来debug 你的natvie 代码。
debug 到 native 的时候如下:
你可以使用 LLDB 作为你的Debug 辅助工具, LLDB怎么使用,这一章不细说,你可以查阅其它资料。
相关文章
- 王者荣耀侦探能力大测试攻略 王者荣耀侦探能力大测试怎么过 11-22
- 无期迷途主线前瞻兑换码是什么 11-22
- 原神欧洛伦怎么培养 11-22
- 炉石传说网易云音乐联动怎么玩 11-22
- 永劫无间手游确幸转盘怎么样 11-22
- 无期迷途主线前瞻兑换码是什么 无期迷途主线前瞻直播兑换码介绍 11-22