Android控制台显示:W/art:尝试删除非JNI本地引用

Android控制台显示:W/art:尝试删除非JNI本地引用,android,cordova,android-studio,logcat,Android,Cordova,Android Studio,Logcat,我刚刚安装了我的第一个Cordova项目,并安装了OneSignal推送通知。这一切都如我所料,但是Android开发者工具在控制台中显示了这一点: W/art: Attempt to remove non-JNI local reference, dumping thread W/art: Attempt to remove non-JNI local reference, dumping thread W/art: Attempt to remove non-JNI local refere

我刚刚安装了我的第一个Cordova项目,并安装了OneSignal推送通知。这一切都如我所料,但是Android开发者工具在控制台中显示了这一点:

W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
I/art: WaitForGcToComplete blocked for 6.202ms for cause Background
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
W/art: Attempt to remove non-JNI local reference, dumping thread
此消息在应用程序运行时不断输出


这是什么意思?我如何解决存在的任何问题?

这些条目与
OneSignal
无关。从以下线程来看,这似乎是
WebView
的一个bug,在使用
主机GPU
处于关闭状态时,可能会更频繁地发生在枚举器上。请参阅以下与此相关的线程


问题似乎与。引用错误报告:

在启用CheckJNI的最新版本上,这会导致 将垃圾邮件警告打印到logcat,说明“试图删除” 非JNI本地引用,使用线程转储转储“转储线程”,如 显然,不应该删除参数,只应该删除对象 作为本地引用从本机->java JNI调用返回。这不是 实际上,这是一个问题,因为运行时在这种情况下什么都不做 (除了打印警告之外),但是使用webview是垃圾邮件 可能希望使用checkjni运行开发构建的应用程序 启用

这与主机GPU仿真问题不同,主机GPU仿真问题会使应用程序崩溃,而不是让应用程序运行时出现垃圾邮件警告


我看了很多,但找不到一种方法来禁用ART上的CheckJNI(即使Dalvik也可以)。我目前的解决方法是过滤logcat。要做到这一点,请在Android Studio的logcat窗口中选择警告文本,然后右键单击它,然后选择像这样的折叠行

如果您是开发人员,在自己的应用程序中收到此消息,请确保您没有意外删除作为JNI方法参数提供的本地引用

i、 e.不要这样做:

JNIEXPORT void JNICALL Java_my_app_MyClass_myMethod
    (JNIEnv* env, jobject self, jobject someParam) {
    env->DeleteLocalRef(someParam);
}

在我的例子中,这是因为我的WebView中有一个CSS动画(
animation:donut spin 1.2s linear infinite;
)导致了此错误消息


我尝试了在中描述的内容,但没有成功…所以我只是在emulator中运行时注释我的CSS动画。

可能重复的请记住为折叠裁剪过滤器,否则它将只折叠与时间戳匹配的行。