遍历 AccessibilityNodeInfo 报 StackOverflowError
在使用 AccessibilityService 遍历包含 WebView 的 AccessibilityNodeInfo 时会在某些情况下必现 StackOverflowError
的错误,导致应用崩溃。
0x00 异常
最近使用 Android 的 AccessibilityService 做一些自动化操作时发现,在部分机器上遍历包含 WebView 页面的 AccessibilityNodeInfo 时,某些页面必定会引起 StackOverflowError
错误,经过一番查证,定位到主要与系统所使用的 Android System WebView 版本有关,属于 WebView 的 Bug。
相关说明可以参考 Android: Infinite loop of FrameLayouts in accessibility tree 的讨论。
查看 Android System WebView 版本(以下2种方法任一均可):
- 应用程序
- 菜单:显示系统应用程序
- 点击列表中的:Android System WebView
- 详情页内包含版本
- 开发者选项
- 开启「开发者选项」
- 开发者选项 -> WebView 实现