什么是使用JNI的byte []字节数组的方法描述符/签名?

Roh*_*n K 6 java java-native-interface android

我的JAVA类代码片段.我想使用JNI从我的C文件访问getReg_chal()方法:

public byte[] getReg_chal() {
    return reg_chal;
}
Run Code Online (Sandbox Code Playgroud)

我的C文件做了一些jni操作:

mid = (*env)->GetMethodID(env, info, "getReg_chal()", "([B)V");

mid = (*env)->GetMethodID(env, info, "getReg_chal()", ***);
Run Code Online (Sandbox Code Playgroud)

我想知道我的byte []的方法描述符.写给"({B)V"我方法没找到错误.我会填写什么***?请帮我.提前致谢.

Poi*_*ull 14

[B

http://download.oracle.com/javase/6/docs/technotes/guides/jni/spec/types.html#wp9502

  • @mice:更好的是,使用"javap -s ClassName"将所有签名很好地打印到stdout :) (7认同)
  • 调试提示:搜索你的Android项目文件夹,打开bin/com文件夹,你可以在里面的某个地方找到java源代码中编译的.class文件.使用Total Commander等工具查看类文件(F3 - lister),虽然它是二进制文件,但你会在那里看到一些文本.查找方法名称getReg_chal的文本.在它旁边你应该看到它的jni签名.从那里复制/粘贴,你就完成了. (2认同)