2. 实现本地方法调用接口 Java类型 本地类型 字节(bit) boolean jboolean 8, unsigned byte jbyte 8 char jchar 16, unsigned short jshort 16 int jint 32 long jlong 64 float jfloat 32 double jdouble 64 void void n/a
为了方便我们可以使用javah命令先生成对应C/C++语言中的.h然后再实现这些函数。FileSys.java编译成FileSys.class文件后,使用命令(当前目录为工程bin目录下)javah -jni com.luoxudong.jni.reader.FileSys,此时会在bin目录下生成一个.h文件,文件名格式如下:com_luoxudong_jni_reader_FileSys.h,为了方便本人把文件名改成JNI_FileSys.h。
JNI_FileSys.h代码:
/* DO NOT EDIT THISFILE - it is machine generated */
#include<jni.h>
/* Header for classcom_meijin_dict_reader_FileSys */
#ifndef_Included_com_meijin_dict_reader_FileSys
#define_Included_com_meijin_dict_reader_FileSys
#ifdef __cplusplus
extern"C" {
#endif
/*
* Class: com_meijin_dict_reader_FileSys
* Method: FileOpen
* Signature: (Ljava/lang/String;I)I
*/
JNIEXPORT jintJNICALL Java_com_meijin_dict_reader_FileSys_FileOpen
(JNIEnv *, jclass, jstring, jint);
/*
* Class: com_meijin_dict_reader_FileSys
* Method: FileLength
* Signature: (I)I
*/
JNIEXPORT jintJNICALL Java_com_meijin_dict_reader_FileSys_FileLength
(JNIEnv *, jclass, jint);
/*
* Class: com_meijin_dict_reader_FileSys
* Method: FileSeek
* Signature: (III)I
*/
JNIEXPORT jintJNICALL Java_com_meijin_dict_reader_FileSys_FileSeek
(JNIEnv *, jclass, jint, jint, jint);
/*
* Class: com_meijin_dict_reader_FileSys
* Method: FileRead
* Signature:(II)Lcom/meijin/dict/bean/CusBuffer;
*/
JNIEXPORT jobjectJNICALL Java_com_meijin_dict_reader_FileSys_FileRead
(JNIEnv *, jclass, jint, jint);
/*
* Class: com_meijin_dict_reader_FileSys
* Method: FileWrite
* Signature: (I[BI)I
*/
JNIEXPORT jintJNICALL Java_com_meijin_dict_reader_FileSys_FileWrite
(JNIEnv *, jclass, jint, jbyteArray, jint);
/*
* Class: com_meijin_dict_reader_FileSys
* Method: FileClose
* Signature: (I)I
*/
JNIEXPORT jintJNICALL Java_com_meijin_dict_reader_FileSys_FileClose
(JNIEnv *, jclass, jint);
#ifdef __cplusplus
}
#endif
#endif
其中JNIEXPORT和JNICALL两个宏是JNI的关键字,表示该函数需要被JNI调用,而jint,jstring,jbyteArray是以JNI为中介使JAVA中对应类型与本地类型对接的类型,jobject为需要返回的java对象,类型对应表如下:
Android+JNI调用–文件操作(附源码)(2)
内容版权声明:除非注明,否则皆为本站原创文章。