Android从程序员到架构师之路-C02_c_认识JNI开发与NDK.pdfVIP

Android从程序员到架构师之路-C02_c_认识JNI开发与NDK.pdf

  1. 1、本文档共24页,可阅读全部内容。
  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文档。上传文档
查看更多
C02_c 基於軟硬整合觀點 认识JNI开发与NDK( c) By 高煥堂 基於軟硬整合觀點 3 、如何载入*.so档案 VM的角色 • 由于Android 的应用层级类别都是以Java 撰写的,这些Java类别转译为Dex型式的 Bytecode之后,必须仰赖Dalvik虚拟机器 (VM: Virtual Machine)来执行之。VM在 Android平台里,扮演很重要的角色。 • 此外,在执行Java类别的过程中,如果 Java类别需要与JNI本地模块沟通时,VM 就会去加载JNI本地模块,然后让Java 的函 数顺利地调用到本地模块的函数。此时, VM扮演着桥梁的角色,让Java与本地模块 能透过标准的JNI接口而相互沟通。 • Java层的类别是在VM上执行的,而本地模 块则不是在VM上执行,那么Java程序又如 何要求VM去加载(Load)所指定的C模块呢? 可使用下述指令: System.loadLibrary(*.so 的檔名); • 例如,NativeJniAdder类别,其程序码: /* com_misoo_gx06_NativeJniAdder.c */ #include Adder.h #include com_misoo_gx06_NativeJniAdder.h “ JNIEXPORT jlong JNICALL Java_com_misoo_gx06_NativeJniAdder_newObject(JNIEnv *env, jclass c){ Adder* ar = (Adder*)AdderNew(); 創建一個C對象 return (jlong)ar; } JNIEXPORT jlong JNICALL Java_com_misoo_gx06_NativeJniAdder_execute( JNIEnv *env, jclass c, jlong refer, jint digit_1, jint digit_2){ Adder* pa = (Adder*)refer; //轉成對象的指針 long result = pa-exec(digit_1, digit_2); return result; } • 就要求VM去加载Android的 /system/lib/libNativeJniAdder.so档案。 载入*.so档之后,Java类别与*.so档就汇合 起来,一起执行了。 n n n NativeJniAdder.java n n n ( libNativeJniAdder.so ) 定义Adder类( Adder.h ) typedef struct Adder Adder; struct Adder { int (*exec)(int a, int b); }; 撰写函数 struct Adder *AdderNew(){ // 構造式 struct Adder *t = (Adder *)malloc(sizeof(Light)); t-exec = my_exec; return (void*) t;

您可能关注的文档

文档评论(0)

宋停云 + 关注
实名认证
文档贡献者

特种工作操纵证持证人

尽我所能,帮其所有;旧雨停云,以学会友。

领域认证该用户于2023年05月20日上传了特种工作操纵证

1亿VIP精品文档

相关文档