Android JNI 类型、方法签名规范

在 Android 开发中不免会使用到 JNI,JNI 编程中可以使用 javah 等工具自动生成 jni 的头文件,但是如果想自己手动注册,那么就需要了解 JNI 方法的签名规范,记录一下,以备以后查看。

Java 类型 Native 类型 JNI 签名
boolean jboolean Z
byte jbyte B
char jchar C
short jshort S
int jint I
long jlong J
float jfloat F
double jdouble D
byte[] jbyteArray [B
char[] jcharArray [C
short[] jshortArray [S
int[] jintArray [I
long[] jlongArray [L
float[] jfloatArray [F
double[] jdoubleArray [D
Java 类 (例: String) jstring/jobject L 全类名;(例: Ljava/lang/String;
Java 方法 (例: start (String path, long pos, long duration)) Native 方法 (例: start (jstring path, jlong pos, jlong duration)) (参数签名…) 返回值签名 (例: (Ljava/lang/String;JJ) V)

要注意的是 java 类的签名,最后的分号不要忘记。String 类比较特别,jni 提供了就 jstring 与之对应,java 方法签名中,括号里面是所有参数的类型签名,中间无间隔,括号外面是返回值类型签名。