JNI
JNI是(Java Native Interface 本地接口)是一个协议,用来沟通Java 代码和C/C++代码,是 Java和 C、C++之间的桥梁。
通过JNI协议,Java可以调用外部C、C++定义好的函数库,外部C、C++也可以调用Java封装好的类和方法
NDK
NDK全称是Native Development Kit,NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk。
NDK集成了交叉编译器(交叉编译器需要UNIX或LINUX系统环境),并提供了相应的mk文件隔离CPU、平台、ABI等差异,开发人员只需要简单修改mk文件(指出“哪些文件需要编译”、“编译特性要求”等),就可以创建出so。
为什么使用NDK?
1、代码的保护。由于apk的java层代码很容易被反编译,而C/C++库反汇难度较大。
2、可以方便地使用现存的开源库。大部分现存的开源库都是用C/C++代码编写的。
3、提高程序的执行效率。将要求高性能的应用逻辑使用C开发,从而提高应用程序的执行效率。
4、便于移植。用C/C++写得库可以方便在其他的嵌入式平台上再次使用
0.准备
下载并安装NDK开发工具(NDK 本地开发工具集,内部包含交叉工具链,用来将C代码编译成 .SO文件,让java调用)配置NDK环境
参考博客:http://blog.csdn.net/xiangzhihong8/article/details/53069344
1.声明让C来实现的方法
2.使用 javah 命令生成带有native 方法的头文件