Android JNI 使用的数据结构JNINativeMethod详解
"(II)V" 表示 void Func(int, int);
?
具体的每一个字符的对应关系如下
?
字符 Java类型 C类型
V????? void??????????? void
Z?????? jboolean???? boolean
I??????? jint??????????????int
J???????jlong??????????? long
D????? jdouble?????? double
F????? jfloat??????????? float
B????? jbyte??????????? byte
C????? jchar?????????? char
S????? jshort????????? short
?
数组则以"["开始,用两个字符表示
?
[I?????? jintArray????? int[]
[F???? jfloatArray??? float[]
[B???? jbyteArray??? byte[]
[C??? jcharArray??? char[]
[S??? jshortArray?? short[]
[D??? jdoubleArray double[]
[J???? jlongArray???? long[]
[Z??? jbooleanArray boolean[]
?
上面的都是基本类型。如果Java函数的参数是class,则以"L"开头,以";"结尾中间是用"/" 隔开的包及类名。而其对应的C函数名的参数则为jobject. 一个例外是String类,其对应的类为jstring
?
Ljava/lang/String; String jstring
Ljava/net/Socket; Socket jobject
?
如果JAVA函数位于一个嵌入类,则用$作为类名间的分隔符。
例如 "(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z"
?
引文地址:http://hi.baidu.com/zhlg_hzh/blog/item/f0d782081f2f45d963d986f5.html