Неустранимое исключение: java.lang.IllegalStateException Невозможно создать слой для WebView (сбои в Lenove K5 Note Android 6.0)
Fatal Exception: java.lang.IllegalStateException
Unable to create layer for WebView @2aad100
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
android.os.MessageQueue.next (MessageQueue.java:328)
android.os.Looper.loop (Looper.java:164)
android.app.ActivityThread.main (ActivityThread.java:5740)
java.lang.reflect.Method.invoke (Method.java)
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:905)
com.android.internal.os.ZygoteInit.main (ZygoteInit.java:766)
Я получил
android.os.MessageQueue.nativePollOnce (MessageQueue.java)
сбой из firebase Crashlytics, но частые сбои происходят только с устройства Lenove K5 Note с устройствами на ОС Android 6.0. Работает только с Android 6.0 Lenove K5 note.
Я использую веб-просмотр в своем приложении, но я не знаю, как воспроизвести или в чем может быть причина. Есть ли у кого-нибудь предложения, где мне начать поиски?
2 ответа
Добавление android:hardwareAccelerated="false" в тег приложения в манифесте может решить вашу проблему.
В моем случае ошибка былаUnable to create layer for RNCWebViewManager$f, size 1080x9661 exceeds max size 8192
и вызвал сбой на устройствах Android 8 Samsung и Huawei .
Ограничение высоты веб-просмотра примерно до 2720 должно предотвратить сбой.
Для безопасности я использовал:
const { height, scale: dimScale } = Dimensions.get('window');
const ANDROID8_WEBVIEW_HEIGHT_LIMIT = Math.trunc(0.9 * height * dimScale);
и применил его только для Samsung и Huawei с помощью команды react-native-device-info getBrand:
getBrand()?.match(/samsung|huawei/i);
Примечание:2720
тоже должно работать, я предпочел использовать 0,9 и этот расчет, чтобы убедиться, что я не удивился на разных типах устройств.
Это был единственный обходной путь, который я нашел, чтобы сохранитьhardwareAccelerated
true