JNI开发基础(一)
来源:互联网 发布:百度网盘下载助手mac 编辑:程序博客网 时间:2024/05/22 17:31
JNI,全称是Java Native Interface。
Java调用C/C++,C/C++调用Java的一套API。
其原理大致如下:
在Android中,C/C++生成so文件与Android进行交互,在windows程序当中,C/C++生成dll文件与Java文件进行交互。JNI不是Android所特有的。
每个native函数,都至少有两个参数(JNIEnv*,jclass或者jobject)
JNIEnv一般是结构体指针,代表Java运行环境,调用Java中的代码。具体在C中,JNIEnv代表结构体的别名,env是二级指针;在C++中,JNIEnv是结构体的别名,env是一级指针。1)当native方法为静态方法时: jclass 代表native方法所属类的class对象(MainActivity.class)2)当native方法为非静态方法时: jobject 代表native方法所属的对象
基本数据类型
Java类型->JNI类型->C/C++类型 Java基本数据类型与JNI数据类型的映射关系为: boolean jboolean byte jbyte; char jchar; short jshort; int jint; long jlong; float jfloat; double jdouble; void void应用类型(对象)String jstringobject jobject数组,基本数据类型的数组byte[] jByteArray对象数组object[](String[]) jobjectArray
C++访问Java的属性
在MainActivity中:
在C++里代码如下:
在控制台打印结果为:
成功的在C++代码中修改Java的值
C++访问Java静态属性
实例代码如下:
访问方法与访问属性也类似,这里就不详细展开了。
对于上面不同的数据类型,不同的签名如下:
0 0
- JNI开发基础(一)
- JNI开发基础入门系列(一)
- JNI编程基础(一)
- JNI开发基础(二)
- JNI 开发技术 (一)
- JNI NDK开发(一)
- Android JNI开发(一)
- Android JNI基础篇(一)
- [JNI] 开发基础 (2) 指针
- Jni开发基础入门(二)
- Jni基础开发入门(三)
- Jni基础开发入门(四)
- Jni基础开发入门(五)
- Jni基础开发入门(六)
- [JNI] 开发基础(3)指针操作
- [JNI] 开发基础(5)内存分配
- [JNI] 开发基础(7)结构体
- Android JNI开发基础
- SQL中往表中插入数据的几种不同形式的小结
- 自动化测试-知乎关注功能用例
- Android子线程更新UI就会Crash么
- 系统字体切换
- 有关opencv的学习(21)—图像滤波(2)
- JNI开发基础(一)
- 如何成为一名优秀的程序员
- 模拟登陆csdn
- Tomcat和IIS整合过程—上—IIS安装
- 算法提高 求最大值 C语言
- 编写USB 驱动程序
- java工具类-------get请求和post请求
- Android模拟器和PC之间数据传送
- 混合APP开发的套路(三): android和javascript初步交互