1.了解JNI中JAVA类型与C/C++的映射关系JAVA类型本地类型JNI中自定义类型描述
intlongjint/jsizesigned 32 bits
long_int64jlongsigned 64 bits
bytesigned charjbytesigned 8 bits
booleanunsigned charjbooleanunsigned 8 bits
charunsigned shortjcharunsigned 16 bits
shortshortjshortsigned 16 bits
floatfloatjfloat32 bits
doubledoublejdouble64 bits
voidvoidvoidN/A
2.引用类型对照表
JNI规范定义的函数签名信息格式如下:
(参数1类型标示参数2类型标示......参数n类型标示)返回值类型标示
实际上这些字符是与函数的参数类型一一对应的。
“()” 中的字符表示参数,后面的则代表返回值。例如”()V” 就表示 void Func();
“(II)V” 表示 void Func(int, int);
值得注意的一点是,当参数类型是引用数据类型时,
其格式是“L包名;”其中包名中的“.”换成“/”,
所以(Ljava/lang/String;Ljava/lang/String;)V 表示 void Func(String,String);
如果 JAVA 函数位于一个嵌入类,则用$作为类名间的分隔符。
例如 “(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z”
VvoidvoidN/A
Zjbooleanboolean8 unsigned
Ijintint32
Jjlonglong64
Djdoubledouble64
Fjfloatfloat32
Bjbytebyte8
Cjcharchar16 unsigned
Sjshortshort16
[IjintArrayint[]
[FjfloatArrayfloat[]
[BjbyteArraybyte[]
[CjcharArraychar[]
[SjshortArrayshort[]
[DjdoubleArraydouble[]
[JjlongArraylong[]
[ZjbooleanArrayBoolean[]