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

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

  1. 1、本文档共25页,可阅读全部内容。
  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_b 基於軟硬整合觀點 认识JNI开发与NDK(b) By 高煥堂 基於軟硬整合觀點 2 、使用Android NDK • 当你安装好NDK环境之后,就能动手利用 NDK环境来开发本地(Native)的C程序了。 于此,兹举例说明开发程序。 Step-1. 在Android SDK环境里, 建立一个开发项目 • 例如,建立一个名称为NDK-01的应用程序 开发项目,内含helloNDK.java和test.java 程序。其中,helloNDK.java的内容如下: *.class 類定義 native String sayHello(); *.h 頭文件 • 把焦点放在接口(Interface) ,就是函数: native String sayHello(); • 可以将这个Java类定义,看成为这项接口 的Java方叙述文件。 • 由于这项接口,涉及两种语言,所以应该 有两份文件,两种语言各一份。 • 所以,我们需要替这项接口产出一份C语言 方的叙述文件,其形式就是C的头文件 (Header File) 。 Step-2. 进行编译, 产出helloNDK.class档案 • 编译上述的项目,产生*.class档案。 Step-3. 使用javah 工具, 产出C语言的*.h头文件 • 返回Android SDK环境,建立一个名称为 /jni/ 的新档案夹(Folder)如下: • 进入/jni/ 目录区,执行javah 去读取 /bin/helloNDK.class档案,然后产出 com_misoo_pk01_helloNDK.h头文件。 • 返回到Android SDK环境,刷新(Refresh) 之后,可在Eclipse画面上看到该头文件如 下: • 可以打开com_misoo_pk01_helloNDK.h 头文件,其内容如下: Step-4. 依据*.h头文件而撰写 *.c程序码 • 产出com_misoo_pk01_helloNDK.h头文 件之后,就可以将NDK-01开发项目内容拷 贝(或只拷贝/jni/ 目录区内容) ,拷贝到NDK 的/samples/ 目录里如下: • 接着,本地C开发者就能使用C语言,结合 JNI(Java Native Interface)语法,撰写 com_misoo_pk01_helloNDK.c程序码,如 下: Step-5. 编译及连结本地程序 • 必须先开启Cygwin 。也就是,从桌面或 开始/所有程序/Cygwin里,点选 Cygwin bash shell ,进行编译和连结动 作。 • 就完成编译和连结任务,产出 libhelloNDK.so本地程序库,并放置于 /libs/armeabi/里,如下: • 当C开发端完成libhelloNDK.so程序库之后, 就可以将/samples/NDK -01内容(或是只拷 贝/libs/ 目录区内容) ,拷贝回去Android SDK环境里。于是在Android SDK环境里 可以看到libhelloNDK.so本地程序库,如 下: Step-6. 编执行NDK-01范例程序 • 此时,就可以撰写test.java的内容,让它调 用helloNDK.java类别的本地函数,如下: Step-7. 将*.so打包到*.apk • 接着编译NDK-01项目,将*.so本地程序库 打包到*.apk里,并且执行该*.apk 。执行到 指令:obj.sayHello()

您可能关注的文档

文档评论(0)

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

特种工作操纵证持证人

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

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

1亿VIP精品文档

相关文档