如何在Java和C++之间进行互相调用呢?
应用场景没有什么好说到了,Java调用底层SDK,SDK代码基本都是C或者C++编写,以及后期的物联网技术,很多都是和底层硬件相关系的,底层硬件相关系的编程,自然要用到C或者C++,上层的androidp平台都是用Java编写的,这个之间如何进行互动,就非常重要了。
这里提供两个思路,jni和jna,据说jna这个框架,实在底层的jni技术之上进行的一个封装,所以还是对jni技术有一个比较好的理解,才是至关重要的!!!
直接上demo吧!
package jni;
public class RecorderHandler {
static {
try{
System.out.println("load jni library start... ");
//装载对应的类库,因为我的是mac系统所以生成的是.dylib文件,如果是linux/unix生成的是.so文件
System.load("/Users/xxx/Documents/rt/libRecorderHandler.dylib");
// System.load("/root/ww/libRecorderHandler.so");
System.out.println("load jni library completed");
}catch(Exception e){
System.out.println("load jni lib occur error: " + e.getMessage());
}
}
/**
* 传入录制命令
* @param type ref enum type
* @param conf_id id
* @param conf_alias 别名
* @param force_jvb jvb
* @return
*/
public native int doRecorder(int type,String conf_id,String conf_alias,String force_jvb);
/**
* C++回调上传java
*/
public native void callback();
}
如上定义了两个native方法,第一个native方法是直接调用C++代码&#