JNI-java本地调用方法学习第一天

因为项目需要,所以进行了JNI的学习。今天终于调通了一个接口,也收获了除技术之外的东西。

现在是用的另外一台电脑,没有代码,所以代码明天补上。下面就写一下今天的成果吧

一、什么是JNI

JNI:Java Native Interface,通俗来说,就是通过JNI,实现Java对C语言的库(so或者dll)的调用。一般在一个APP项目中,由于要考虑到IPhone版和Android版的一些功能的通用,所以有些功能可以用C开发,只开发一次,两种平台通用。我们就是这种情况下才进行JNI的使用

使用JNI的时候,有一个很不方便的地方,就是数据类型不同。举个例子,C有指针,Java没有,Java没有unsigned byte,C有。所以JNI最繁的地方就是进行类型转换。

二、用JNI进行调用的步骤

1、在Java中定义一个类TestClass,用来封装C接口方法的类。

2、将这个类进行编译生成TestClass.class

3、在命令行中找到TestClass.class的包目录的外层运行javah -jni  com.test.jni.TestClass生成对应的.h文件,注意此处要写上这个类的完整包名和类名。

4、定义一个C文件,实现.h文件中声明的方法

5、在每个方法中,可能会调用到C语言库中的函数,在调用的时候,注意一定要进行类型转换(这一步在我看类是最繁琐的一步)

6、在Google的官网下载NDK,NDK包里面会有一些简单的Samples,如果想自己摸索,可以看看这些samples,在此基础上进行模仿,我就是用hello-jni这个工程进行编译和模仿的,效果还是不错的

7、通过ndk-build编译生成.so文件(编译的时候,要把自己生成的.c文件和需要调用到的c的库文件在一起打包)

8、将打包好的.so文件放到lib目录下

9、通过实例化TestClass,调用在这个类里声明的方法,达到调用c库的目的。

此文为原创,如有引用,注明出处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值