使用JniHelper导致程序闪退的问题

    JniMethodInfo minfo;
    bool isHave = JniHelper::getStaticMethodInfo(minfo,"android/os/Environment","getExternalStorageDirectory","()Ljava/lang/String;");
    if (isHave){
        CCLog("%s","OK!");
    }else{
        CCLog("%s","Error find SD path");
    }


```

相关错误信息:

07-02 12:44:51.397: W/dalvikvm(10828): trying to work around app JNI bugs, but didn't find 0x42320090 in table!
07-02 12:44:51.397: W/dalvikvm(10828): JNI WARNING: DeleteLocalRef(0x42320090) failed to find entry
07-02 12:44:51.397: A/libc(10828): @@@ ABORTING: INVALID HEAP ADDRESS IN dlfree addr=0x67b90000
07-02 12:44:51.397: A/libc(10828): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1), thread 10859 (Thread-9134)

楼主这个问题解决了么?我也刚刚遇到这个问题
不知道怎么办了

一个JNI最简单示例。

(1)C++部分:

在HelloWorld.cpp增加如下函数,用于调用java代码。

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
  #include 
  #include "platform/android/jni/JniHelper.h"
  #include 
  #endif

  void HelloWorld::testJNI()
  {
  #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
      JniMethodInfo minfo;

      bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/cpp/AppActivity","testjni", "()V");

      if (!isHave) {
          log("jni:testjni is null");
      }else{
          minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
      }
  #endif
  }
```

(2)Java部分:

在org.cocos2dx.cpp.Activity中增加如下函数,供C++调用。

public static void testjni() {
      System.out.println("From Java");
  }
```

更详细的使用说明,请参考:http://docs.oracle.com/javase/6/docs/technotes/guides/jni/spec/jniTOC.html

“android/os/Environment”
这在这后面加上类名看看,就是 JAVA 函数所在的类名。

要么类名不对要么返回值没转换