转自:http://blog.csdn.net/elfylin/article/details/6121466

1、什么JNI

Java Native Interface(JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI 是本地编程接口,它使得在 Java 虚拟机(VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。

上面过程分为2个部分:

第一、用C语言生成一个库文件。

第二、在java中调用这个库文件的函数。

2、NDK

NDK全称:Native Development Kit。
NDK是一系列工具的集合。
* NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。这些工具对开发者的帮助是巨大的。
* NDK集成了交叉编译器,并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
* NDK可以自动地将so和Java应用一起打包,极大地减轻了开发人员的打包工作。

个人理解,NDK就是能够方便快捷开发.so文件的工具。

JNI的过程比较复杂,生成.so需要大量操作,而NDK就是简化了这个过程。

3、java中调用.so文件代码

其中,在java中加载库文件的代码如下:

System.loadLibrary(*.so的档案名);

例如,Android框架里所提供的MediaPlayer.java类,含指令:

public class MediaPlayer{

static {

System.loadLibrary("media_jni");

}

}

最新文章

  1. 设置Hyper V
  2. 支持ASP.NET MVC
  3. Ubuntu 12.04 改造指南
  4. 【转载】ansys中压力随时间变化的表格加载方法
  5. 【SpringMVC】SpringMVC系列15之SpringMVC最佳实践
  6. ngios
  7. 嵌入式 Linux下编译并使用curl静态库
  8. JQueryMobile页面跳转参数的传递解决方案
  9. ASIHTTPRequest的使用(转)
  10. S2SH邮件注册激活后注册成功
  11. call、apply以及bind
  12. emmet 教程 emmet快捷键大全
  13. AspNetCore 基于AOP实现Polly的使用
  14. ASP.NET在MVC控制器中获取Form表单值的方法
  15. pytest学习--快速入门
  16. Redis需要多少内存预留-内存占用多少才安全
  17. Express 体验 路由、模板引擎、中间件
  18. 五、Java基础加强
  19. C++ 的static 与 const
  20. 过虑器应用之1-设置request编码

热门文章

  1. 读取txt文件的简易算法
  2. 温故而知新_C语言_前缀++(--)和后缀++(--)
  3. Percona Toolkit安装、使用
  4. jzoj4918. 【GDOI2017模拟12.9】最近公共祖先 (树链剖分+线段树)
  5. Warning: Static member accessed via instance reference
  6. 9.path Sum III(路径和 III)
  7. kuangbin专题十六 KMP&&扩展KMP POJ2406 Power Strings
  8. HashMap的容量大小增长原理(JDK1.6/1.7/1.8)
  9. sublime 显示 python 错误信息
  10. C语言中的预处理命令