我的android类中有一个本机方法:

public native void decode(Bitmap pTarget, byte[] pSource);

当我试图使用externla配置工具中的eclipse javah工具创建头文件时,我会收到一条消息,上面说:
错误:无法确定位图的签名
如果删除本机方法声明,则不会发生这种情况。如何调试此问题以确保javah能够找到位图的签名?

最佳答案

Bitmap类属于“android.graphics.bitmap”包,因此它的jni类型是Landroid/graphics/Bitmap;
完整的方法签名应为:
void java_yourpackage_yourclass_decode_u landroid_graphics_bitmap_u 2_3b(jnienv*env,jobject thiz,jobject ptarget,jbytearray psource)
来源:http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/design.html#wp615
http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/types.html
编辑:javah工具不识别android类,因此必须将classpath选项添加到javah命令中。试着看看这个:https://stackoverflow.com/a/7635758/3370382

10-07 22:51