JNI之路径初探---1

首先要明白,什么是JNI,我们做安卓开发为什么要学习JNI,学习JNI能干嘛?
JNI全称Java Native Interface (Java本地接口)
那么这个所谓的Java本地接口到底是干什么的呢?

该图是JNI在JVM中所处的位置
该图是JNI在安卓中的运用

众所周知,我们在开发中要新建一个线程需要实现Runnable接口或者继承Thread类,但是我们深究过线程的实现原理吗?当你一步步紧跟源码就会发现Java层根本没有线程的实际实现,它不过是一个Native方法,官方对线程的说明“线程是CPU独立运行和独立调度的基本单位”,几乎不用思考你也知道,Java可能和CPU打交道吗?Java不过是一个层,一个比较高级的壳。
那么JNI在安卓中能干嘛呢,它可以让我们在JAVA层通过调用C、C++代码来进行音视频的处理,蓝牙、WIFI等等非常“底层”的东西去高效率的处理。
那么我们现在新建一个Java项目,不是新建一个安卓项目是因为JNI不等同于NDK,NDK包含了JNI。

Java代码

那么接下来我们cmd在命令行下先生成该类的class文件,再javah 包名+类名,如果报错说类找不到或无法编译,请参考我的另一篇博客 http://www.jianshu.com/p/2e36c606d2e3
那么生成了.h头文件,也就是JNI文件,我们来用C或C++语言来实现它
jni02.png
jni03.png
jni04.png
![jni06.png](http://upload-images.jianshu.io/upload_images/3027456-7ebb78fc7e26517a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

本篇博客适合有一些C和C++基础的同学学习,C的项目在VS,代码也非常的简单,这里简单讲一下,为什么有的jni文件参数类型是jobject有的是jclass,jobject是代表当前Native方法类的对象,而jclass代表类的class对象,每一个类都是class类的类对象。最后不要忘了把.dll文件的路径加入到环境变量path中,最后运行,如有疑问,欢迎留言。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值