- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
JNI实战全面解析
?
JNI 实战全面解析
分类:?android2014-11-01 09:05?8083人阅读?评论(2)?收藏?举报
目录(?)[+]
简介
项目决定移植一款C++开源项目到Android平台,开始对JNI深入研究。
JNI是什么?
JNI(Java Native Interface)意为JAVA本地调用,它允许Java代码和其他语言写的代码进行交互,简单的说,一种在Java虚拟机控制下执行代码的标准机制。
NDK是什么?
Android NDK(Native Development Kit )是一套工具集合,允许你用像C/C++语言那样实现应用程序的一部分。
为什么要用NDK?
1、安全性,java是半解释型语言,很容易被反汇编后拿到源代码文件,我们可以在重要的交互功能使用C语言代替。2、效率,C语言比起java来说效率要高出很多。
JNI和NDK的区别?
从工具上说,NDK其实多了一个把.so和.apk打包的工具,而JNI开发并没有打包,只是把.so文件放到文件系统的特定位置。从编译库说,NDK开发C/C++只能能使用NDK自带的有限的头文件,而使用JNI则可以使用文件系统中带的头文件。从编写方式说,它们一样。
详解
1、JNI 元素
1、JNI组织结构
JNI函数表的组成就像C++的虚函数表,虚拟机可以运行多张函数表。JNI接口指针仅在当前线程中起作用,指针不能从一个线程进入另一个线程,但可以在不同的线程中调用本地方法。
2、原始数据
Jobject ?对象 引用类型
Java类型 本地类型(JNI) 描述 boolean(布尔型) jboolean 无符号8个比特 byte(字节型) jbyte 有符号8个比特 char(字符型) jchar 无符号16个比特 short(短整型) jshort 有符号16个比特 int(整型) jint 有符号32个比特 long(长整型) jlong 有符号64个比特 float(浮点型) jfloat 32个比特 double(双精度浮点型) jdouble 64个比特 void(空型) void N/A
函数操作
函数 Java 数组类型 本地类型 说明 GetBooleanArrayElements jbooleanArray jboolean ReleaseBooleanArrayElements 释放 GetByteArrayElements jbyteArray jbyte ReleaseByteArrayElements 释放 GetCharArrayElements jcharArray jchar ReleaseShortArrayElements 释放 GetShortArrayElements jshortArray jshort ReleaseBooleanArrayElements 释放 GetIntArrayElements jintArray jint ReleaseIntArrayElements 释放 GetLongArrayElements jlongArray jlong ReleaseLongArrayElements 释放 GetFloatArrayElements jfloatArray jfloat ReleaseFloatArrayElements 释放 GetDoubleArrayElements jdoubleArray jdouble ReleaseDoubleArrayElements 释放 GetObjectArrayElement 自定义对象 object ? SetObjectArrayElement 自定义对象 object ? GetArrayLength ? ? 获取数组大小 NewTypeArray ? ? 创建一个指定长度的原始数据类型的数组 GetPrimitiveArrayCritical ? ? 得到指向原始数据类型内容的指针,该方法可能使垃圾回收不能执行,该方法可能返回数组的拷贝,因此必须释放此资源。 ReleasePrimitiveArrayCritical ? ? 释放指向原始数据类型内容的指针,该方法可能使垃圾回收不能执行,该方法可能返回数组的拷贝,因此必须释放此资源。 NewStringUTF ? ? jstring类型的方法转换 GetStringUTFChars ? ? jstring类型的方法转换 DefineClass? ? ? 从原始类数据的缓冲区中加载类 FindClass? ? ? 该函数用于加载本地定义的类
您可能关注的文档
- HeadFirst设计模式之命令模式.doc
- HEVPHEVEV区别简介.doc
- HIV实验室.doc
- HGC1200商用车双级主减速器设计.doc
- HM-循环水管道及水箱制作安装方案.doc
- HOME主题酒店形象策划书.doc
- HP笔记本BIOS设置.doc
- HX-FC消防巡检柜的启动方式详解.doc
- I-附录1.doc
- HY-1性A1级防火保温板施工规程.doc
- 四川省威远中学2025届高三3月份模拟考试生物试题含解析2.doc
- 福建省南侨中学2025届高考历史押题试卷含解析.doc
- 2025届四川省成都市温江区高三下学期第五次调研考试生物试题含解析.doc
- 甘肃省天水市清水县第六中学2025届高三第二次诊断性检测生物试卷含解析.doc
- 2025届河南省许昌市许昌高级中学高考化学三模试卷含解析.doc
- 河北省保定市第一中学2025届高三第三次模拟考试化学试卷含解析.doc
- 2025届山东省青岛市西海岸新区胶南第一高级中学高三第一次调研测试生物试卷含解析.doc
- 2025届山东省昌乐县第二中学高考历史考前最后一卷预测卷含解析.doc
- 山西省晋城市2025届高三第二次模拟考试生物试卷含解析.doc
- 连云港市重点中学2025届高考生物五模试卷含解析.doc
最近下载
- 【公开课课件】1.1.追求理想的家庭生活.ppt
- 双轴卡座加工工艺及铣削夹具的三维设计..docx
- 2023小学作业监测、公示和问责制度(5篇).docx
- 施工现场临时用电安全措施.docx VIP
- STAUFF3D电子样本西德福德国机械连接器.pdf VIP
- 北大荒集团招聘考试试题库.pdf
- 加油加气站-加油站施工组织设计方案.doc
- 中职学校《金属加工与实训》全套电子教案(含教学进度计划)(配套教材:高教版中职统编)云天课件( word 版).docx
- JTG∕T D81-2006 公路交通安全设施设计细则(高清).pdf
- 中职语文基础模块上册期中综合测试题(一)-(高教版2023·基础模块上册)(解析版).docx
文档评论(0)