我刚刚设置了我的第一个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
应用程序运行时会不断输出此消息。
这是什么意思,我该如何解决它存在的任何问题?
答案 0 :(得分:16)
这些条目与OneSignal
无关。从以下主题看,这似乎是WebView
的错误,并且在使用host GPU
关闭时,枚举数可能会更频繁地发生。请参阅下面提到的线程。
答案 1 :(得分:16)
问题似乎与this Chromium bug有关。引用错误报告:
在最近打开CheckJNI的ART版本中,这会导致a 垃圾邮件警告打印到logcat说“尝试删除 非JNI本地引用,转储线程“与线程转储,如 显然,参数不应该被删除,只有对象 从native-> java JNI调用返回本地引用。这不是 实际上是一个问题,因为运行时在这种情况下什么都不做 (除了打印警告之外),但对webview使用来说这是垃圾邮件 可能希望使用checkjni运行开发版本的应用程序 启用。
这与主机GPU仿真问题不同,后者会使应用程序崩溃,而不是让它与垃圾邮件警告一起运行。
我看起来相当多,但无法找到一种方法来禁用ART上的CheckJNI(即使Dalvik有可能)。我目前的解决方法是过滤logcat。为此,请在Android Studio的logcat窗口中选择警告文本,然后右键单击它并选择Fold lines like this
。
答案 2 :(得分:2)
如果您是开发人员,则在自己的应用程序中收到此消息,请确保您不会意外删除作为参数提供给JNI方法的本地引用。
即不要这样做:
JNIEXPORT void JNICALL Java_my_app_MyClass_myMethod
(JNIEnv* env, jobject self, jobject someParam) {
env->DeleteLocalRef(someParam);
}
答案 3 :(得分:0)
就我而言,这是因为我的 WebView (animation: donut-spin 1.2s linear infinite;
) 中有一个 CSS 动画导致了此错误消息。
我尝试了 https://issuetracker.google.com/issues/37065041#comment10 中描述的内容,但没有奏效……所以我只是在模拟器中运行时评论我的 CSS 动画。