鉴于有些同学想要学习NDK,但在网上很难找到一个讲解比较清楚、按照步骤操作可以比较顺利学会NDK的文章,所以写了此篇教程。
一.准备
需要Android NDK和windows下c、c++代码的编译器cygwin
二.配置
1. 安装cygwin,并配置cygwin的环境变量。
例如:我安装在D盘根目录,那么在环境变量的path中添加:”C:\cytwin\bin;”
如下图所示。
2. 修改新生成文件夹中的“.bash_profile ”文件,用UE或editplus等文本编辑器打开,在最后增加:
NDK=/cygdrive/d/android-ndk-r9c
export NDK
然后保存关闭。
d/android-ndk-r9c表示ndk在d盘,如果你的ndk放到了其他盘符或路径,例如放到e:\sdk目录中,那么就改为e/sdk/android-ndk-r9c。
3、安装eclipse插件
需要在Eclipse中安装CDT插件,让Eclipse可以编辑和编译C/C++程序。安装方法如下: 打开Eclipse(本教程所用的Eclipse版本为Helios),然后,在菜单中选择“Help”?“Install New Software”,然后输入需要安装的CDT插件的路径,如下图所示:
三.开始使用
1.在命令行窗口中进入cygwin目录,执行cygwin.bat
2.进入android-ndk中的samples文件夹里的某个项目文件夹,这里以hello-jni为例
进入文件夹的方式与MS-DOS类似,用cd + 空格 + 盘符+ 路径即可,例子见下图
3.执行$NDK/ndk-build编译
file:///C:/Users/veaenPC/AppData/Local/YNote/Data/cleverboy@126.com/308a08bf3aa24d66a1519afac1d626a7/clipboard.png4.例子编译成功后导入Eclipse中,编译并部署测试如图:
四.如何在自己的工程中使用NDK
Android-ndk中的例子大家会编译了,那么在自己现有的工程想要调用本地方法应该怎么做呢?
1.在JAVA代码中声明native方法,
file:///C:/Users/veaenPC/AppData/Local/YNote/Data/cleverboy@126.com/faaba0c0a274401aab8776f89fc3fd75/clipboard.png
2.生成头文件
然后需要生成C或C++的源码,供JAVA调用。
可以按照JNI的命名规则,也可以使用JDK的javah命令来生成,这里推荐使用javah,避免手动编写出现错误不好排查。
javah命令的使用方法见javah命令的帮助
file:///C:/Users/veaenPC/AppData/Local/YNote/Data/cleverboy@126.com/6d96701fe24b44cf97461a506957b75c/clipboard.png这里以我的测试工程为例,编写好native方法后,编译工程,eclipse会在bin目录生成.class文件,在命令行中进入bin目录,执行javah
+ 包名 + 类名,会在bin目录下生成一个头文件。
file:///C:/Users/veaenPC/AppData/Local/YNote/Data/cleverboy@126.com/5d430e0fc0dc46338350ca7225829978/clipboard.pngfile:///C:/Users/veaenPC/AppData/Local/YNote/Data/cleverboy@126.com/fc0e806a2acd4b869d565de93ba187d2/clipboard.png
这个文件就是JAVA与本地代码交互的接口了,做C或C++的开发人员针对这个头文件开发。
3. 编写本地方法
在你的工程根目录下创建jni文件夹,并从android-ndk\samples里的hello-jni文件夹中拷贝出一个Android.mk文件,粘贴到jni文件夹中,同时刚才用javah生成的.h头文件拷贝到jni文件夹中。
首先创建一个.c文件,实现头文件中的方法,
file:///C:/Users/veaenPC/AppData/Local/YNote/Data/cleverboy@126.com/3ced7760f824484a846b9056c8229c68/clipboard.png然后编辑Android.mk文件,修改如下两行,第一行修改为你的工程名,第二行修改为你的.c或.cpp文件名
LOCAL_MODULE := EX25_JNI
LOCAL_SRC_FILES := org_yuchen_demo_MainActivity.c
4.在java代码中加载so文件
在java代码中用静态块加载so文件,注意把so文件的“lib”和“.so”扩展名去掉。
file:///C:/Users/veaenPC/AppData/Local/YNote/Data/cleverboy@126.com/16a3cc5946fc4b65b72890d8d83d31e0/clipboard.png5.使用本地方法
接下来在java中可以调用本地方法进行测试了。按照前面讲解的方法编译,打包部署测试,截图如下:file:///C:/Users/veaenPC/AppData/Local/YNote/Data/cleverboy@126.com/cd3dfb8947e145caa0d027050cd4397b/clipboard.png
最后附上一个Demo:
这个demo很简单,只会显示用c语言写的返回的字符串
|
相关推荐
网上有关在linux中讲android jni(ndk) eclipse开发环境的搭建的资料有很多,但大多都非常的繁琐,本来是简单的事情描述的却很复杂。下面结合我的实际把步骤写出来,其实很简单一步就可完成……
windows下NDK搭建Android开发环境,环境配置亲测可用,安装文档一步一步就能调试第一个hello_jni了
详细介绍了在eclipse中android项目下c/c++代码的自动编译,和在eclipse中用ant生成ndk需要的jni头文件,加速ndk的开发,因为是原创,费了不少心力和时间,所以设了6分,有人反映太贵了,现在调成3分,这下大家满意了...
Windows下Eclipse搭建Android_NDK开发环境,开发过程中用到了JNI,必然要牵扯到NDK开发环境的搭建。也就是安装Cygwin的过程。相信按照文档你能够完成任务。因为搭建环境如果不认真的话,你可能还真的搭不成功哈~~~
结合网上的经验,个人自己总结下JNI的开发过程以及NDK环境搭建。 在windows环境下开发jni需要c/c++编译器的支持,网络上我看很多人使用cygwin。呵呵个人感觉不仅安装起来挺麻烦,而且用起来也不太方便。我使用...
JNI中文文档详细介绍里边带示范案例 NDK中文文档详细介绍了如何搭建Android开发环境以及如何编写ndk的makefile编译脚本,如何使用jni+ndk在Android上开发c++程序 不多说,学习开发Android程序的好东西
JNI NDK 环境搭建 JNI动态加载DEX 文档介绍了如何搭建一个最简单的NDK开发环境,只需要用到Eclipse ADK NDK 或者下载Google Android开发专用Eclipse 再下一个NDK 就OK了。 JNI 动态加载DEX 采自与看雪论坛的一位前辈...
Android NDK环境搭建及遇到的问题详解,我就是看它搭建JNI开发环境的。
详细剖析了NDK开发中涉及的各类问题和解决方案:搭建Android NDK开发环境的每一步细节,开发第一个Android NDK程序,Android NDK中Java与C/C++代码的互相调用,Facade设计模式在NDK中的美妙应用,NDK与软/硬件整合,...
1. 下载android-ndk-r5b-windows并解压到D:\android-ndk-r5b-windows 2. 下载Cygwin, 执行setup.exe并开始安装 注意:.开发选项里必须勾选gcc和make,否则后期无法编译 3. 配置NDK环境变量
主要给大家介绍了关于android串口开发入门之搭建ndk开发环境及第一个jni调用程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习...
android ndk视频教程 传智播客内部培训视频 环境搭建 调试 非常详细
NDK开发的可以称之为底层开发或者jni(java native interface)层开发,SDK开发可以称为上层开发。 Android开发中使用NDK的原因: 1、众所周知,利用SDK编写的代码,生成的APK,很容易就可以反编译了,安全
编译好的Android JNI HelloWorld,测试开发环境是否搭建成功
Android的主题和风格介绍,Android开发环境搭建,Android内存泄露调试,Android日历完整实现,Android摄像头的应 用,Android实现GPS定位,Android通过JNI调用驱动程序,Android网络开发详解,android写的google map api ...
Android的主题和风格介绍,Android开发环境搭建,Android内存泄露调试,Android日历完整实现,Android摄像头的应 用,Android实现GPS定位,Android通过JNI调用驱动程序,Android网络开发详解,android写的google map api ...
关于如何搭建android的ndk开发环境的,以及一个简单的示例程序。入门级别的。
本套课程共分为三部分,当前为第一部分,主要包括内容:1、JNI名词释义2、JNI环境搭建3、Native项目解析4、编译工具使用5、边学边实战,从易到难,循序渐进适合人群:1、有一定Android基础,零JNI基础的学员;...
16.2.2 NDK开发环境搭建 16.2.3 编译第一个NDK程序 16.3 AndroidNDK开发 16.3.1 JNI接口设计 16.3.2 使用C\C++实现本地 方法 16.3 编译C\C++代码 16.4 AndroidNDK中使用0penGL 16.5小结 第17章 ...