错误:JNI ERROR(APP错误):访问陈旧全球参考(Error: JNI ERROR (app

2019-06-27 06:41发布

我收到此错误JNI ERROR(APP错误):访问陈旧全球参考当我运行我的Android操作系统V4的应用程序,但是当我运行在Android的V2.3同一应用程序,我没有得到这个错误。

在其中我打电话的AsyncTask类的点,在那里我传递一个字符串数组作为参数时发生此错误

任何人都可以帮我吗?

Answer 1:

当你调用与不正确的参数类型的方法会出现此错误。

确保你的方法签名匹配你逝去的是什么。 为一个字符串数组:

jmethodID mid = env->GetMethodID(cls, methodName, "([Ljava/lang/String;)V");

如果是自己创建它,它会是这个样子:

jclass stringCls = env->FindClass("java/lang/String");
jobjectArray mStringArray = env->NewObjectArray( mSize, stringCls, NULL);

在特定情况下,你最有可能没有看到在Android 2.3的崩溃,因为你在呼唤AsyncTask.execute(),它是不可用,直到API 11(Android 3.0的),你的jmethodID为空。 (这是一个好主意,让他们以后经常检查空JCLASS和jmethodID)



Answer 2:

当你调用与不正确的参数类型的方法会出现此错误。

此外,在这种情况下,你可能会注册从本机代码不同的Java代码的本地方法。 所不同的可能是你声明的Java代码和本地代码之间有更多或更少的参数。



Answer 3:

JNI本地参考值的变化ICS



文章来源: Error: JNI ERROR (app bug): accessed stale global reference