前提条件:已经安装了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. 剑指 Offer 48. 最长不含重复字符的子字符串 + 动态规划 + 哈希表 + 双指针 + 滑动窗口

    剑指 Offer 48. 最长不含重复字符的子字符串 Offer_48 题目详情 解法分析 解法一:动态规划+哈希表 package com.walegarrett.offer; /** * @Aut ...

  2. PAT-1018(Public Bike Management)最短路+额外条件+所有最短路中找出满足条件的路径+dijkstra算法

    Public Bike Management PAT-1018 使用一个vector来存储所有最短路的前驱结点,再通过使用dfs和一个额外的vector记录每一条路径 #include<iost ...

  3. 一个把数据转化成Excel导出的程序 python Django

    把从数据库查询出来数据导出 源码下载!!!!! 效果图 登入界面 主页面 查询到数据 导出 打开得到文件 项目地址,源码下载

  4. 关于,java-webservice接口,根据服务端,自动生成客户端调用时,响应时间慢

    我这边遇到的问题,是在和对方进行webservice接口交互的时候,用工具,调用对方的webservice接口,对方响应很快.但是用java生成的客户端调用就会很慢才得到响应.大概有5分钟左右. 这里 ...

  5. WPF 基础 - 图形的效果与滤镜

    UIElement 有 BitmapEffect 和 Effect 属性,BitmapEffect 是由 CPU 的运算能力实现的,比较耗性能,推荐使用 Effect: Effect 包括但不限于 D ...

  6. Apache配置 7.静态元素过期时间

    (1)介绍 那到底能缓存多久呢?如果服务器上的某个图片更改了,那么应该访问新的图片才对.这就涉及一个静态文件缓存时长的问题,也叫作"缓存过期时间".在httpd的配置文件中,我们是 ...

  7. Matplotlib图例中文乱码

    plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签 plt.rcParams['axes.unicode_minus']=False #用来正 ...

  8. $.ajax data向后台传递参数失败 contentType: "application/json"

    在ajax方法设置中若不添加 contentType: "application/json" 则data可以是对象: $.ajax({ url: actionurl, type: ...

  9. mysql 统计新增每天数据

    #创建基表 CREATE TABLE `table_sum` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `table_name` varchar(50) ...

  10. 递归函数初步理解---python实现(汉诺塔问题)

    递归常被用来描述以自相似的方法重复事物的过程,在程序中指的是在函数定义中使用函数自身的方法. 递归是一个树结构,分为递推和回归的过程,当递推到达底部时,就会开始回归. 问题描述:A比B大两岁,B比C大 ...