JNI实战全面解析..docVIP

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
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 ? ? 获取数组大小 New<Type>Array ? ? 创建一个指定长度的原始数据类型的数组 GetPrimitiveArrayCritical ? ? 得到指向原始数据类型内容的指针,该方法可能使垃圾回收不能执行,该方法可能返回数组的拷贝,因此必须释放此资源。 ReleasePrimitiveArrayCritical ? ? 释放指向原始数据类型内容的指针,该方法可能使垃圾回收不能执行,该方法可能返回数组的拷贝,因此必须释放此资源。 NewStringUTF ? ? jstring类型的方法转换 GetStringUTFChars ? ? jstring类型的方法转换 DefineClass? ? ? 从原始类数据的缓冲区中加载类 FindClass? ? ? 该函数用于加载本地定义

文档评论(0)

dsf80fhg0j + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档