Android JNI简介和调用流程.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Android JNI简介和调用流程

Android JNI简介和调用流程 android jni虚拟机javaexceptionbuild/******************************************************************************************** * author:conowen@大钟 * E-mail:conowen@ * /conowen * 注:本文为原创,仅作为学习交流使用,转载请标明作者及出处。 ********************************************************************************************/ 1、JNI简介 JNI全称为Java Native Interface(JAVA本地调用)。从Java1.1开始,JNI成为java平台的一部分,它允许Java代码与其他语言写的代码(如CC++)进行交互。并非从Android发布才引入JNI的概念的。 2、JNI和NDK 简单来说,Android的NDK提供了一些交叉编译工具链与Android自带的库,这些Android的库可以让开发者在编写本地语言的程序时调用。而NDK提供的交叉编译工具链就对已经编写好的CC++代码进行编译,生成库。 当然了,你也可以自己搭建交叉编译环境,而不用NDK的工具与库。然后生成库,只要规范操作,一样可以生成能让JAVA层成功调用的库文件的。 利用NDK进行编译本地语言可以参考这篇博文:/conowen/article/details/7522667 3、JNI 调用流程 众所周知,Android的应用层的类都是以Java写的,这些Java类编译为Dex文件之后,必须靠Dalvik虚拟机( Virtual Machine)来执行。假如在执行java程序时,需要载入CC++函数时,Dalvik虚拟机就会去加载CC++的库,(System.loadLibrary(libName);)让java层能顺利地调用这些本地函数。需要清楚一点,这些CC++的函数并不是在Dalvik虚拟机中运行的,所以效率与速度要比在Dalvik虚拟机中运行得快很多。 Dalvik虚拟机成功加载库之后,就会自动地寻找库里面的JNI_OnLoad函数,这个函数用途如下: (1)告诉Dalvik虚拟机此C库使用哪一个JNI版本。如果你的库里面没有写明JNI_OnLoad()函数,VM会默认该库使用最老的JNI 1.1版本。但是新版的JNI做了很多的扩充,也优化了一些内容,如果需要使用JNI的新版功能,就必须在JNI_OnLoad()函数声明JNI的版本。如 [java] view plaincopyprint? result = JNI_VERSION_1_4; result = JNI_VERSION_1_4;当没有JNI_OnLoad()函数时,Android调试信息会做出如下提示(No JNI_OnLoad found) [java] view plaincopyprint? 04-29 13:53:12.184: D/dalvikvm(361): Trying to load lib /data/data/com.conowen.helloworld/lib/libHelloWorld.so 0x44edea98 04-29 13:53:12.204: D/dalvikvm(361): Added shared lib /data/data/com.conowen.helloworld/lib/libHelloWorld.so 0x44edea98 04-29 13:53:12.204: D/dalvikvm(361): No

文档评论(0)

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

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

1亿VIP精品文档

相关文档