我在JNI问题上度过了最后两天,这让我发疯了...... 我只是试着这样做:
SWIGEXPORT void JNICALL Java_com_my_package_CM_1CoreJNI_CM_1Property_1name_1set(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
const char *arg2 = (*jenv)->GetStringUTFChars(jenv, jarg2, 0);
....
}
我通过JAR调用此函数并且它一直在崩溃。 我可以从LogCat中读到的全部内容是:
03-27 12:44:29.162: E/dalvikvm(1599): JNI ERROR (app bug): accessed stale weak global reference 0x4080f657 (index 15765 in a table of size 0)
03-27 12:44:29.172: W/dalvikvm(1599): JNI WARNING: jstring is an invalid weak global reference (0x4080f657)
03-27 12:44:29.172: W/dalvikvm(1599): in Lcom/my/package/CM_CoreJNI;.CM_Property_name_set:(JLjava/lang/String;)V (GetStringUTFChars)
经过长时间的调查,我试图直接从我的活动中调用该函数(通过添加原生的空集......)并且工作正常! 我被封锁了,不知道该怎么做......
是否有人设法从JAR成功调用JNI?
编辑:通过删除jar并添加.java文件来修复...