为啥要用JNI,我个人理解是,Java 代码效率不够高,代码调用底层逻辑隔着一层Java 虚拟机,不能直接操控底层硬件,而C/C++ 可以直接操控硬件设备,对于需要效率更高的操作,就需要通过C/C++ 完成。。
比如说我们公司做的一个项目,VR眼镜,连接主机设备,VR需要上报数据给主机,并且显示出来。眼镜转动很快,,如果数据获取慢,那主机显示很延时很久,所以这里java 就不合适了。
一、项目结构
先简单介绍下目录结构,如果想自己本地调试打开android studio File->New->New Project 选择 native C++ 项目,系统会为我们创建一个demo 。
新建完成build.gradle会指定cmakelist,该文件会用于编译native 库,一般不建议更改
externalNativeBuild {
cmake {
path = file("src/main/cpp/CMakeLists.txt")
version = "3.22.1"
}
}
然后就是natIve 库的存放位置,系统会新增一个cpp 文件夹,不建议自己修改路径。
这些都是系统自动编译的,我们需要做的是加载native 库,然后调用就可以了
static {
System.loadLibrary("myapplication");
}
public native String stringFromJNI();
<