Дисплеи консоли 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);
}