掌握API和控制点(从Java到JNI接口)_34 JNI开发与NDK 02

2、 使用Android NDK

  • 当你安装好NDK环境之后,就能动手利用NDK环境来开发本地(Native)的C程序了。于此,兹举例说明开发程序。
Step-1. 在Android SDK环境里,建立一个开发项目
  • 例如,建立一个名称为NDK-01的应用程序开发项目,内含helloNDK.java和test.java程序。其中, helloNDK.java的内容如下:

        

  • 把焦点放在接口(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/目录区内容),拷贝回去AndroidSDK环境里。于是在Android SDK环境里可以看到libhelloNDK.so本地程序库,如下:
Step-6. 编执行NDK-01范例程序
  • 此时,就可以撰写test.java的内容,让它调用helloNDK.java类别的本地函数,如下:
Step-7. 将*.so打包到*.apk
  • 接着编译NDK-01项目,将*.so本地程序库打包到*.apk里,并且执行该*.apk。执行到指令: obj.sayHello()时,就调用到*.so程序库里的本地C程序。于是, test.java就将本地C程序回传值显示于画面,如下:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

思忖小下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值