NDK开发,如何配置 debug环境

刚开始做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 <android/log.h>

//为了方便调用,将输出宏定义
#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 ‘25.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怎么使用,这一章不细说,你可以查阅其它资料。

参考资料:
https://developer.android.google.cn/studio/debug/index.html
https://developer.android.google.cn/index.html (Android 大陆官网)

tips:假设你已经配置好了NDK开发环境,以及 LLDB 插件。

在 debug的时候如下出现如下错误:
Error:FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ‘:app:externalNativeBuildDebug‘.
> Build command failed.
Error while executing process E:\Android\Sdk\ndk-bundle\ndk-build.cmd with arguments {NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=G:\project\Android\Anti-shake-arithmetic\app\src\main\jni\Android.mk NDK_APPLICATION_MK=G:\project\Android\Anti-shake-arithmetic\app\src\main\jni\Application.mk APP_ABI=armeabi NDK_ALL_ABIS=armeabi NDK_DEBUG=1 APP_PLATFORM=android-15 NDK_OUT=G:/project/Android/Anti-shake-arithmetic/app/build/intermediates/ndkBuild/debug/obj NDK_LIBS_OUT=G:\project\Android\Anti-shake-arithmetic\app\build\intermediates\ndkBuild\debug\lib G:/project/Android/Anti-shake-arithmetic/app/build/intermediates/ndkBuild/debug/obj/local/armeabi/libNDKUtils.so}
[armeabi] StaticLibrary : libclapack1.a
process_begin: CreateProcess(NULL, E:/Android/Sdk/ndk-bundle/build//../toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin/arm-linux-androideabi-ar crsD ....

很有可能是你 defaultConfig节点中,ndk 节点的配置信息与 Application.mk 不匹配,需要你 在ndk 节点添加上去

时间: 2024-10-10 14:27:25

NDK开发,如何配置 debug环境的相关文章

使用AndroidStudio进行NDK开发简单配置

1. 准备工作 在实际写代码之前,首先我们还是需要做一些准备工作: 下载NDK开发包:Android官方下载页面 配置系统环境变量 下载好NDK开发包之后,直接解压到任意目录,然后需要配置一下系统环境变量,之所以要配置环境变量,是为了方便使用命令ndk-build脚本进行NDK编译.配置参考如下: Windows系统配置 环境变量 PATH 下追加 :D:\ProgramFile\android-ndk-r11c-windows-x86_64; MacOS系统配置 在mac系统下打开终端,输入:

【NDK开发】android-ndk r10环境搭建

1)打开Android开发者的官网http://developer.android.com/找到Develop点击.如果页面打不开,通过代理来访问. 2)进入后再点击Tools 3)进入后在左侧找到NDK点击,可以见到各种平台的NDK r10. 选择需要的下载 5)解压下载的android-ndk32-r10-windows-x86_64.zip,将其放到你想要的目录下. 注:R7之前的版本,必须要安装Cygwin才能使用NDK.从R7开始,Windows版本的NDK提供了一个ndk-build

Android NDK开发(一)环境搭建及运行示例

/***************************************************  * TODO: description .  * @author: gao_chun  * @since:  2015-3-30  * @version: 1.0.0  * @remark: 转载请注明出处  **************************************************/ 下载Android开发工具,这里使用Eclipse,若无法下载,可查看 And

【NDK开发】eclipse集成环境使用NDK开发android

今天学习了一下android NDK,所以记录下来.据说NDK从r7开始自带编译器,在windows上无需配置cygwin的环境.现在我使用NDK r10来开发. 上午搭建的NDK并写了一个实例,不过并没有很好的使用eclipse的功能,如果开发的话可能比较慢. 1)首先,在eclips中配置NDK路径 在eclipse中点击菜单栏window-Perferences,配置NDK的路径.图一为NDK所在的路径.                                           

使用MyEclipse开发需要配置的环境

1.下载Jquery_EasyUI文档,将里面的spket-1.6.18.jar复制放到适合的位置(随意,不要有中文路径).使用命令行将其安装: 进入到文件目录下:  弹出安装界面: 选择第二个:

使用Android Studio 1.3 版本进行NDK开发

众所周知Android Studio 1.3 版本新增了NDK支持,能够很方便的在上面开发C++或者C代码了,可是预览版功能不是非常完善,需要很多步骤,还有一些奇怪的BUG,整了半天终于可以使用Android Studio完美进行NDK开发了.先看下效果图: 方法: 一.首先将Android Studio更新到1.3版本: 1.检查Android Studio更新. 有些人可能会遇到问题:自己版本低于1.3检查更新却提示已经是最新版本? 那是因为更新渠道不是Beta渠道,需要先将渠道设置为Bet

Eclipse下Android的NDK开发环境配置

摸索了一周,走了很多弯路,磕磕绊绊,总算是弄好了NDK的开发环境,在这里总结一下吧. 一.Android NDK开发环境 首先下载安装JRE.JDK,不必多说.然后下载NDK包,建议下载r10版本后的,自带C/C++的编译器,不需要使用外部编译器的麻烦了.下载完NDK包后,解压缩即可,需要之后关联到Eclipse.然后下载ADT Bundle,即安卓开发工具套装,里面集成好的Eclipse的安卓开发环境,但是,里面的版本可能较低而且没有集成NDK功能,可以通过SDK Manager进行更新SDK

windows下用ADT进行android NDK开发的详细教程(从环境搭建、配置到编译全过程)

郑重申明:如需转载本博客,请注明出处,谢谢! 这几天在学习android NDK的开发,那么首先让我们来看看android NDK开发的本质是什么. NDK(Native Development Kit),即本地开发工具,简单地说,就是在开发android应用程序的时候,在java类中调用native函数,而native函数的接口也是在java类中定义的,但是native函数最终由本地的C/C++代码实现.简单地说,就是在java中调用C/C++函数.至于为什么要用NDK,我总结了一下,大致有以

AndroidStudio配置NDK开发环境

1.首先在AndroidStudio下面新建一个Android工程,给该工程添加NDK支持,在右上角工具栏中,点击图中标记的位置打开配置工程的页面,并添加本地NDK目录. 点击标记位置 选择本地NDK目录 点击标记位置,同步Gradle文件(之后只要是对工程的修改均需要同步Gradle,AS也会在右上角给出提示) 2.配置NDK需要的环境(修改gradle文件) 修改gradle.properties 文件,添加android.useDeprecatedNdk=true.(同步gradle文件)