1、背景 Java JNI的本意是Java Native Interface(java本地接口),它是为了方便Java调用C、C++等本地代码所封装的一层接口。 NDK是Android所提供的一个工具集合,通过NDK可以在Android中更加方便地通过JNI来访问本地代码C或C++。NDK提供的交叉 ...
分类:
其他好文 时间:
2017-09-10 11:10:56
阅读次数:
148
最近想实现一个Android直播,但是对于这方面的资料都比较零碎,一开始是打算用ffmpeg来实现编码推流,在搜集资料期间,找到了几个强大的开源库,直接避免了jni的代码,集成后只用少量的java代码就可实现编码、推流和取流播放,整理了一下做了一个demo,在这里记录一下 效果图: 编码和推流,有两 ...
分类:
移动开发 时间:
2017-09-07 01:00:51
阅读次数:
1484
最近用HttpClient进行链接请求,开了多线程之后发现经常有线程hang住,查看线程dump 一直就停留在java.net.SocketInputStream.socketRead0 这个Native方法,单步调试了之后发现timeout参数也传入了,后来在网上搜索发现这个是jdk一个bug h ...
分类:
Web程序 时间:
2017-09-05 21:54:54
阅读次数:
245
JNI代码都写好了,在编译之前我们有非常重要的一部,就是写mk文件,mk文件就相当于gcc编译时的Makefile文件,它是用来告诉编译器如何去编译的。 这里只对自己理解和常用的知识点做记录,想要看关于android.mk的全部解释请移步android.mk。 ...
分类:
移动开发 时间:
2017-09-04 22:30:37
阅读次数:
191
JNI中数据类型的意义在于桥接Java数据类型与C数据类型。 简单数据类型: Java Type Native Type Description boolean jboolean unsigned 8 bits byte jbyte signed 8 bits char jchar unsigned ...
分类:
移动开发 时间:
2017-09-04 18:57:55
阅读次数:
199
这篇说静态注册,所谓静态注册,就是native的方法是直接通过方法名的规定格式和Java端的声明处代码对应起来的,对于规则如下: 假设在HelloJni中声明了方法staticLoad(), 如下所示: 则其对应的native方法名为 当然,这个规则并不需要死记,jdk中的javah自动就帮我们做这 ...
分类:
移动开发 时间:
2017-09-04 15:10:43
阅读次数:
193
JNI的使用大致有以下4个步骤: 一、在Java中写native方法 二、用javah命令生成C/C++头文件 三、写对应的C/C++程序实现头文件中声明的方法,并编译成库文件 四、在Java中加载这个库文件并使用 工具: 1. Eclipse for Java 2. Visual Studio 2 ...
摘自:http://blog.csdn.net/woaigaolaoshi/article/details/51439227 在HotSpot中,对象的类型信息里有记录自己的OopMap,记录了在该类型的对象内什么偏移量上是什么类型的数据。所以从对象开始向外的扫描可以是准确的;这些数据是在类加载过程 ...
分类:
其他好文 时间:
2017-09-01 15:42:43
阅读次数:
289
1、JNI简介 The Java Native Interface (JNI) is a programming framework that enables Java code running in a Java Virtual Machine (JVM) to call and be calle ...
分类:
编程语言 时间:
2017-09-01 12:57:33
阅读次数:
142
1. Introduction At times, it is necessary to use native codes (C/C++) to overcome the memory management and performance constraints in Java. Java supp ...
分类:
编程语言 时间:
2017-08-31 09:48:41
阅读次数:
154