Дисплеи консоли Android: W / art: попытка удалить локальную ссылку, отличную от JNI

Я только что настроил свой первый проект Cordova и установил OneSignal push-уведомления. Это все работает, как я ожидаю, однако инструменты разработчика 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

это сообщение постоянно выводится во время работы приложения.

что это значит и как я могу решить любую проблему?

3 ответов


записи не связаны с OneSignal. Из следующих потоков это выглядит как ошибка с WebView и может происходить чаще на перечислителях при использовании host GPU и выкл. См. ниже темы, относящиеся к этому.


похоже, что проблема связана с это хром ошибка. Цитирование отчета об ошибке:

в последних версиях ART с включенным CheckJNI это вызывает предупреждение спама для печати в logcat с указанием " попытка удалить не-JNI локальная ссылка, сброс потока " с дампом потока, как видимо параметры не должны быть удалены, только объекты возвращается как локальные ссылки из вызовов Java JNI native - >java. Это не на самом деле проблема поскольку среда выполнения просто ничего не делает в этом случае (кроме печати предупреждения), но это спам для использования webview приложения, которые можно запустить развития строит с checkjni включен.

это отличается от проблемы эмуляции GPU хоста, которая приведет к сбою приложения вместо того, чтобы позволить ему работать с предупреждениями о спаме.

Я посмотрел совсем немного, но не смог найти способ отключить CheckJNI на ART (хотя это возможно для Dalvik). Мое настоящее обходным путем является фильтрация logcat. Для этого выберите текст предупреждения в окне logcat Android Studio, затем щелкните его правой кнопкой мыши и выберите Fold lines like this.


Если вы разработчик, получающий это сообщение в своем приложении, убедитесь, что вы случайно не удаляете локальные ссылки, заданные в качестве параметров ваших методов JNI.

т. е. не делай этого:

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