从本地方法返回HashMap

时间:2018-11-20 10:50:42

标签: android java-native-interface

我需要从Android本机实现返回HashMap。在运行该应用程序时,我遇到以下崩溃:

signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0

下面是实现细节。

Java端的方法签名:

private native HashMap<String, Double> testBitmapJNI(Bitmap bitmap);

在C ++代码中:

static const JNINativeMethod g_NativeMethods[] = {
     ....
     {"testBitmapJNI", "(Landroid/graphics/Bitmap;)Ljava/util/HashMap;", 
         (void*)testBitmapJNI},
     ....
 };



jobject testBitmapJNI(JNIEnv* env, jobject instance, jobject bitmap){

   jobject myHashMap= ... 

   /* every thing is working good here */
   return myHashMap;
}

如果我将testBitmapJNI的签名更改为返回void,它将不再崩溃。我认为映射表中的签名不正确。如果有人可以建议在表中使用正确的签名,或者采用其他方法来修复/实现相同的签名,那就太好了。

0 个答案:

没有答案