From ce7e9ecc6f17ee090ed50dc8568a279799fd242f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B9=96=E5=A5=95=E8=99=8E?= Date: Fri, 19 Aug 2022 23:23:37 +0800 Subject: [PATCH] Accessibility: Prevent array == null error on release mode * Throw AssertionError to track the exception in case transform array is null on debug mode 08-16 06:23:59.641 23012 23012 E flutter : [ERROR:flutter/fml/platform/android/jni_util.cc(182)] java.lang.IllegalArgumentException: array == null at android.opengl.Matrix.multiplyMM(Native Method) at io.flutter.view.AccessibilityBridge$SemanticsNode.updateRecursively(Unknown Source:28) at io.flutter.view.AccessibilityBridge$SemanticsNode.updateRecursively(Unknown Source:240) at io.flutter.view.AccessibilityBridge$SemanticsNode.updateRecursively(Unknown Source:240) at io.flutter.view.AccessibilityBridge$SemanticsNode.updateRecursively(Unknown Source:240) at io.flutter.view.AccessibilityBridge$SemanticsNode.updateRecursively(Unknown Source:240) at io.flutter.view.AccessibilityBridge$SemanticsNode.access$4900(Unknown Source:0) at io.flutter.view.AccessibilityBridge.updateSemantics(Unknown Source:192) at io.flutter.view.AccessibilityBridge$1.updateSemantics(Unknown Source:21) at io.flutter.embedding.engine.FlutterJNI.updateSemantics(Unknown Source:9) at android.os.MessageQueue.nativePollOnce(Native 08-16 06:23:59.641 23012 23012 F flutter : [FATAL:flutter/shell/platform/android/platform_view_android_jni_impl.cc(1214)] Check failed: fml::jni::CheckException(env). --- .../android/io/flutter/view/AccessibilityBridge.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/shell/platform/android/io/flutter/view/AccessibilityBridge.java b/shell/platform/android/io/flutter/view/AccessibilityBridge.java index 8bc72471a2169..ba0d90455990c 100644 --- a/shell/platform/android/io/flutter/view/AccessibilityBridge.java +++ b/shell/platform/android/io/flutter/view/AccessibilityBridge.java @@ -2695,6 +2695,12 @@ private void updateRecursively( if (globalTransform == null) { globalTransform = new float[16]; } + if (transform == null) { + if (BuildConfig.DEBUG) { + throw new AssertionError("transform has not been initialized"); + } + transform = new float[16]; + } Matrix.multiplyMM(globalTransform, 0, ancestorTransform, 0, transform, 0); final float[] sample = new float[4];