声明
- 前阶段在项目中使用了Android的JNI技术,在此文中做些技术知识总结。
- 此篇参考一些博客和书籍,不方便逐一列出,仅供学习、知识分享,代码基于Android 7.1.1。
- Android JNI函数参考:‘Raw’ JNI interface to Android Dalvik (Java) VM from Mono (CS/JS)
- 本章Demo下载:Demo链接
1 概述
JNI的基本功能是让 Java 调用Native代码。只有单向操作肯定不满足JNI的设计要求,还需要更高级的功能:
- Native 和 Java 层的双向调用
- 线程处理
- 特殊的文件描述符处理
- 异常处理
2 JNI的双向调用
2.1 JNI双向调用的结构和目的
使用JNI的主体调用方式 Java 代码调用Native代码。在调用过程中,也可以有反向进行的操作,有两点:
- Native 代码访问 Java 类中的域(读/写)
- Nativ