Need help to report bag . Crash in Qt 6.11.1 accessibility problem.
-
bugreports.qt.io ignore me(
Android 10 crash in Qt 6.11.1 accessibility: NoSuchMethodError for AccessibilityNodeInfo.RangeInfo constructor
Application crashes on Android 10 when Android Accessibility service is enabled.
The crash happens inside Qt Android accessibility implementation.
Environment:
- Qt version: 6.11.1
- Build: MSVC 2022 x86_64 host
- Android target: arm64-v8a
- Device: Xiaomi Redmi Note 8T
- Android version: 10 (API 29)
- NDK: 27.2.12479018
The application works normally when Accessibility is disabled on the device.
When Accessibility is enabled, the application crashes during accessibility node population.Crash log:
Fatal signal 6 (SIGABRT)Abort message:
JNI DETECTED ERROR IN APPLICATION:
JNI CallVoidMethodV called with pending exceptionjava.lang.NoSuchMethodError:
no non-static method
"Landroid/view/accessibility/AccessibilityNodeInfo$RangeInfo;.<init>(IFFF)V" -
בדקו בקוד המקור של בדוק את קוד המקור של Qt (במודול הנגישות של אנדרואיד) כדי לראות היכן נוצר ה-RangeInfo.
-
Suspected cause
The problem appears to be caused by this code in Qt Android accessibility:QJniObject rangeInfo(
"android/view/accessibility/AccessibilityNodeInfo$RangeInfo",
"(IFFF)V",
rangeType, min, max, current);The constructor signature "(IFFF)V" is not available on Android 10 runtime.
The call creates a pending JNI exception:
java.lang.NoSuchMethodErrorbut the exception is not cleared before continuing, which results in SIGABRT.
Proposed fix
The RangeInfo constructor usage should be protected by Android API level check.For example:
if (QtAndroidPrivate::androidSdkVersion() >= 36) {
QJniObject rangeInfo(
"android/view/accessibility/AccessibilityNodeInfo$RangeInfo",
"(IFFF)V",
rangeType, min, max, current);if (rangeInfo.isValid()) env->CallVoidMethod(node, m_setRangeInfoMethodID, rangeInfo.object());}
or alternatively Qt should use the correct API availability check for RangeInfo constructor.