本文主要是针对android开发过程中需要jni调用so库场景下写的,有错误的地方可以指正,共同进步。
jni没有用过,网上查了一些资料,重点都在于一个字,“转”。调用c/c++需要将常用基本类型进行转换,需要将c/c++中自定义的类或者结构体转成java的类(这里的转不是有转换方法,而是自己定义相同性质的类)。
第一步:编写jni接口类:
固定格式:public static native type mehtod(type parame);
在编写的时候,有些类型是找不到的,需要我们自定义c/c++中相同的类。
第二步:生成c/c++头文件
在编译后的目录下,即工程目录的\bin\classes目录下执行命令 javah packagename.类名 (com.example.JniExample)。
或者classes目录下生成一个com_example_JniExample.h文件。看看内容:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_andin_edss_jni_JniEdssFile */
#ifndef _Included_com_andin_edss_jni_JniEdssFile
#define _Included_com_andin_edss_jni_JniEdssFile
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_example_JniExample
* Method: 方法名
* Signature: 参数类型
*/
JNIEXPORT jboolean JNICALL Java_com_andin_edss_jni_JniEdssFile_Edss_1IsDcf
(JNIEnv *, jclass, jstring);