JNI : java native interface,实现JAVA和本地语言的相互互调
JNI作用:C 可以操作硬件,使用JNI可以是java操作硬件C 直接运行在底层,C被编译为机器码,效率高C 开源项目,opencv:视觉库 ffmpeg --> 使用JAVA访问C优秀的开源项目安全考虑 交叉编译
平台
cpu : x86(pc)、arm(android最多)、 mips
操作系统 : windows、linux、mac os、unix
NDK目录
docs >> 文档samples >> 样例platforms >> 不同androidAdi版本,每个版本都有不同cpu架构的文件夹include >> android做jni开发相关的头文件lib >> google编译好的jni开发可能用到的函数库toolchains >> 交叉编译工具链bulid/tools .sh >> linux的批处理命令,通过这些命令调用交叉编译工具ndk-build.cmd >> 通过这个命令开启交叉编译,需配置环境变量
JNI目录 C源代码jstring Java_包名_类名_方法名(JNIEnv* env, jobject thiz)
Android.mk告诉编译器.c的源代码的位置,要生成的文件名,要创建的文件类型。Application.mk
要编译出来的文件支持的平台。
Java代码
public native String hello(); // java本地方法System.loadLibarary("hello"); // 加载.so文件
// 生成C调用JAVA的方法签名、进入到bin/classes目录下javap -s org.grass.Stu// JAVA native 方法,生成头文件、进入到项目src目录下。按C函数的命名规则生成javah org.grass.Stu