`
king_tt
  • 浏览: 2108420 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【基于Windows系统】教你如何在Android中使用JNI以及NDK开发环境搭建

 
阅读更多
鉴于有些同学想要学习NDK,但在网上很难找到一个讲解比较清楚、按照步骤操作可以比较顺利学会NDK的文章,所以写了此篇教程。
一.准备
需要Android NDK和windows下c、c++代码的编译器cygwin
cygwin下载地址:http://www.cygwin.com/
二.配置
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语言写的返回的字符串

7.png(60.76 KB, 下载次数: 0)

7.png

NDK_Test.zip

2.06 MB, 下载次数: 1, 下载积分: e币 -10 元

分享到:
评论

相关推荐

    android eclipse jni(ndk) 开发环境的搭建

    网上有关在linux中讲android jni(ndk) eclipse开发环境的搭建的资料有很多,但大多都非常的繁琐,本来是简单的事情描述的却很复杂。下面结合我的实际把步骤写出来,其实很简单一步就可完成……

    windows_NDK搭建Android开发环境

    windows下NDK搭建Android开发环境,环境配置亲测可用,安装文档一步一步就能调试第一个hello_jni了

    非常强大的eclipse中android ndk开发环境的配置说明

    详细介绍了在eclipse中android项目下c/c++代码的自动编译,和在eclipse中用ant生成ndk需要的jni头文件,加速ndk的开发,因为是原创,费了不少心力和时间,所以设了6分,有人反映太贵了,现在调成3分,这下大家满意了...

    Windows下Eclipse搭建Android_NDK开发环境

    Windows下Eclipse搭建Android_NDK开发环境,开发过程中用到了JNI,必然要牵扯到NDK开发环境的搭建。也就是安装Cygwin的过程。相信按照文档你能够完成任务。因为搭建环境如果不认真的话,你可能还真的搭不成功哈~~~

    GNUStep图文解析android之JNI的开发以及NDK配置

    结合网上的经验,个人自己总结下JNI的开发过程以及NDK环境搭建。 在windows环境下开发jni需要c/c++编译器的支持,网络上我看很多人使用cygwin。呵呵个人感觉不仅安装起来挺麻烦,而且用起来也不太方便。我使用...

    NDK + JNI (全中文文档)

    JNI中文文档详细介绍里边带示范案例 NDK中文文档详细介绍了如何搭建Android开发环境以及如何编写ndk的makefile编译脚本,如何使用jni+ndk在Android上开发c++程序 不多说,学习开发Android程序的好东西

    JNI环境搭建

    JNI NDK 环境搭建 JNI动态加载DEX 文档介绍了如何搭建一个最简单的NDK开发环境,只需要用到Eclipse ADK NDK 或者下载Google Android开发专用Eclipse 再下一个NDK 就OK了。 JNI 动态加载DEX 采自与看雪论坛的一位前辈...

    Android NDK环境搭建及遇到的问题详解

    Android NDK环境搭建及遇到的问题详解,我就是看它搭建JNI开发环境的。

    细说Android4.0NDK编程.pdf

    详细剖析了NDK开发中涉及的各类问题和解决方案:搭建Android NDK开发环境的每一步细节,开发第一个Android NDK程序,Android NDK中Java与C/C++代码的互相调用,Facade设计模式在NDK中的美妙应用,NDK与软/硬件整合,...

    Android NDK(r5b)环境搭建及JNI实现

    1. 下载android-ndk-r5b-windows并解压到D:\android-ndk-r5b-windows 2. 下载Cygwin, 执行setup.exe并开始安装 注意:.开发选项里必须勾选gcc和make,否则后期无法编译 3. 配置NDK环境变量

    android串口开发入门之搭建ndk开发环境及第一个jni调用程序

    主要给大家介绍了关于android串口开发入门之搭建ndk开发环境及第一个jni调用程序的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习...

    android ndk视频教程(传智播客内部培训视频)

    android ndk视频教程 传智播客内部培训视频 环境搭建 调试 非常详细

    Android NDK开发的环境搭建与简单示例

    NDK开发的可以称之为底层开发或者jni(java native interface)层开发,SDK开发可以称为上层开发。 Android开发中使用NDK的原因: 1、众所周知,利用SDK编写的代码,生成的APK,很容易就可以反编译了,安全

    编译好的Android JNI HelloWorld

    编译好的Android JNI HelloWorld,测试开发环境是否搭建成功

    Android 初学中阶高阶书籍_集合打包3

    Android的主题和风格介绍,Android开发环境搭建,Android内存泄露调试,Android日历完整实现,Android摄像头的应 用,Android实现GPS定位,Android通过JNI调用驱动程序,Android网络开发详解,android写的google map api ...

    Android 初学中阶高阶书籍_集合打包2

    Android的主题和风格介绍,Android开发环境搭建,Android内存泄露调试,Android日历完整实现,Android摄像头的应 用,Android实现GPS定位,Android通过JNI调用驱动程序,Android网络开发详解,android写的google map api ...

    android_jni操作指南.pdf

    关于如何搭建android的ndk开发环境的,以及一个简单的示例程序。入门级别的。

    Android JNI详解,让你彻底了解JNI (上)

    本套课程共分为三部分,当前为第一部分,主要包括内容:1、JNI名词释义2、JNI环境搭建3、Native项目解析4、编译工具使用5、边学边实战,从易到难,循序渐进适合人群:1、有一定Android基础,零JNI基础的学员;...

    《Android应用开发揭秘》附带光盘代码.

     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章 ...

Global site tag (gtag.js) - Google Analytics