用cocos2d提供的JniHelper。
test.cpp:
JniMethodInfo mi;
//启动时,由Lua调用此函数
void testJNI(){
if(JniHelper::getStaticMethodInfo(mi, “com/xxx/Cls”, “testJNI”, “(Ljava/lang/String;)V”)){
jstring str = mi.env->NewStringUTF(“TEST”);
mi.env->CallStaticVoidMethod(mi.classID, mi.methodID, str);
mi.env->DeleteLocalRef(str);
mi.env->DeleteLocalRef(mi.classID);
}
}
void Java_com_xxx_Cls_callCPP(JNIEnv *env, jobject obj){
//经测试,确实可以运行到这里,曾调用过另一个java方法,输出一段字符串
//之后调用某Lua函数,无法更新界面
}
com/xxx/Cls.java:
static native void callCPP();
static void testJNI(String s){
System.out.println(s); //如果加上这行会退出,但人输出s.length()却可以。
System.out.println(“Called testJNI”); //这行能看到。
callCPP();
}