前提条件:已经安装了JDK 6.0、android SDK、NDK r9和eclipsele4.2开发环境.

推荐下载Android开发的综合套件adt-bundle-windows-x86,再下载Android NDK既可以开始Android NDK程序的编程了。

1.     首先在eclipsele4.2上创建一个空的Android工程,无所谓,只要是一个Android工程就OK了。

2.     安装NDK开发的插件com.android.ide.eclipse.ndk_23.0.2.1259578.jar

之前的Eclipse版本是包含有这个插件的,不用自己手动安装这个插件;最新的Eclipse软件不包含有该插件,必须自己下载com.android.ide.eclipse.ndk_23.0.2.1259578.jar插件,然后复制到eclipse\plugins的文件夹下,关闭Eclipse软件然后重启Eclipse,再进行操作就可以出现上图的实例。

3.     配置NDK的路径

Eclipse的主菜单Windows—>preferences打开如下图,配置Android NDK的文件路径:

然后进行如下的操作:

出现如下所示,点击finish即可。

点击完成以后,观察Android工程,会发现多生成3个文件夹,如下图所示:

4.     Andriod NDK代码的编写

Android NDK的开发用C或C++都可以,但是使用C或C++开发NDK时,应该使用C或C++的标准库提供的函数。

5.在 Android.mk 文件和 Application.mk 文件中可以添加NDK编程需要支持的库,具体信息可以参考NDK编程的谷歌文档。

Android NDK编程可以使用的C++的库:

添加C++的库的支持:

6.     Android NDK的动态调试

再次编译Android工程会出现一下的错误提示:

按下图的操作进行该错误的屏蔽,再次编译程序就不会再弹出错误提示框了。

Android NDK的调试使用GDB程序,并且Android NDK的调试原理是使用socket进行通信的,因此必须要有客户端和服务器端,并且Android虚拟机(模拟器)要打开。要调试Android NDK程序还必须自己编写调试的debug.mk和connect.mk文件,并将这两个文件拷贝到Android
NDK工程的文件目录下。

服务器端的debug.mk文件的编写:

客户端connect.mk文件的编写:

Service--打开cmd程序,开启Android NDK调试的服务端

调试服务器端,不能关闭。


client--打开一个cmd程序开启Android NDK调试的客户端

注意

D:\adt-bundle-windows-x86-20130219\android-ndk-r9\prebuilt\android-arm\gdbserver(调试符号)

D:\adt-bundle-windows-x86-20130219\android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows\bin(GDB)

这两个路径要添加环境变量以后就没有出现错误了。

Mark一下

如果要在windows平台的cmd环境下运行make命令执行xxx.mk文件中的操作,需要将Android的NDK配置环境中交叉工具链提供的make.exe工具的路径

D:\adt-bundle-windows-x86-20130219\android-ndk-r9\prebuilt\windows\bin

路径添加到windows系统的path环境变量中。

Android NDK工程的编译和链接以及使用gdb进行调试的更多相关文章

  1. 在eclipse中配置android ndk的自动编译环境builders

    无论linux还是mac在jni目录中直接运行  ndk-build 就可以生成 lib目录及所需要的 so文件: windows 装上lnx模拟器也是一样: 每次修改完 c++代码, 都要运行一下 ...

  2. Android NDK开发之C调用Java及原生代码断点调试(二)

    上一篇中,我们主要学习了Java调用本地方法,并列举了两大特殊实例来例证我们的论据,还没学习的伙伴必须先去阅读下,本次的学习是直接在上一篇的基础上进行了.点击:Android NDK开发之从Java与 ...

  3. Android Studio工程Gradle编译报错

    一.环境的搭建: 首先搭建好AndroidStudio环境.我使用的是Ubuntu 12.04系统(由于此机器还要运行其他程序,为避免兼容性问题,暂未更新到最新,而继续沿用此稳定版),java和jdk ...

  4. Android NDK引用预编译的动态链接库

    NDK里有个例子: android-ndk-r10/samples/module-exports/jni一看就懂了 ———————————————————————————– 从r5版本开始,就支持预编 ...

  5. 〖Linux〗Android NDK调用已编译好的C/C++动态连接库(so文件)

    一.背景:假定已有应用程序zigbeeclient.cpp,内容如下: ... extern "C" { int getresult(int argc, char **argv); ...

  6. android ndk opencv jni 编译集成

    OpenCV (Open Source Computer Vision Library) https://docs.opencv.org/2.4/doc/tutorials/introduction/ ...

  7. 解决Android NDK 报jxxx编译找不到

    如题 解决: 引入NDK对应的arm或者x86库 如果你用的是GinyMotion模拟器,那就引入x86库 不多说了,见截图 1.选择Propertities->C/C++ General-&g ...

  8. windows android ndk的某些编译工具报错乱码0x5 或拒绝访问05

    在IDEA或者AndroidStudio的快捷方式上右键属性 > 兼容性 > 以管理员身份运行 解决问题.

  9. android ndk 编译 libevent

    1. 下载 libevent 2.1.8 版本 https://github.com/libevent/libevent/releases/download/release-2.1.8-stable/ ...

随机推荐

  1. FFT HDL Optimized模块HDL综合代码生成及与Xilinx xfft IP MEX接口精度详细比较

    前面一篇随笔叙述了关于MATLAB中FFT_HDL_Optimzed模块定点(IEEE754单精度float格式)二进制与十进制转换实现,有需要的往前翻一下即可.这一篇随笔将叙述 FFT HDL Op ...

  2. Python基础之:Python中的流程控制

    目录 简介 while语句 if 语句 for语句 Break Continue pass 简介 流程控制无非就是if else之类的控制语句,今天我们来看一下Python中的流程控制会有什么不太一样 ...

  3. 通过golang小案例,了解golang程序常见机制

    目录 代码理解及纠错 1.defer和panic执行先后顺序 2.for循环元素副本问题 3.slice追加元素问题 4.返回值命名问题 5.用new初始化内置类型问题 6.切片append另外一个切 ...

  4. 有钱人买钻石+dfs中使用贪心

    有钱人买钻石 ECNU-3306 题解:这个题目,乍一看以为是dp背包,可是数据量却那么大,只有1,5,10,25四种面额的硬币,每种数量若干,要使得能够刚好兑换成功总金额,在此前提下,还要使得硬币数 ...

  5. 2020年12月-第01阶段-前端基础-表格 table

    表格 table(会使用) 为了让我们页面显示的更加整齐,我们需要学习三个表(表格.表单.列表) 理解: 能说出表格用来做什么的 表格的基本结构组成 表格作用: 存在即是合理的. 表格的现在还是较为常 ...

  6. 给出镜像FreeBSD 基本要求

    硬盘 ports 500G update 500G portsnap 500G pkg arm64 amd64 i386 11-12-13 4TB 网络流量一个月专线大概2w RMB CPU 内存 其 ...

  7. .zip爆破

    .zip爆破 Python的优化问题 Python在计算密集型任务方面没有明显的多线程优化,多线程更加适合用于处理I/O密集型任务(如网络请求).爆破任务使用顺序执行即可. 编写Python脚本 一个 ...

  8. crf++分词

    1.linux下安装crf工具包 先下载CRF++-0.58.tar.xz,在Linux环境下安装CRF工具包 https://github.com/taku910/crfpp 解压到某一个目录下面 ...

  9. css实现一个电影卡片

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  10. PTA 两个有序链表序列的合并

    6-5 两个有序链表序列的合并 (15 分)   本题要求实现一个函数,将两个链表表示的递增整数序列合并为一个非递减的整数序列. 函数接口定义: List Merge( List L1, List L ...