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 函数所在的类名。
要么类名不对要么返回值没转换