对所见即可说方案进一步调研
基于上一篇的调研果,因为flutter混合开发的应用是很多的,如果辅助服务只能捕捉到原生android页面,无法捕捉到flutter页面,方案就不可行。此外对于arkui-x页面,也出现了辅助服务无法抓词的问题。客户认为需要进一步摸索更多的方法。
基于上一篇在原生apk中监听flutter apk的无障碍事件(调研)_flutter有什么无障碍插件-CSDN博客的调研果,因为flutter混合开发的应用是很多的,如果辅助服务只能捕捉到原生android页面,无法捕捉到flutter页面,方案就不可行。
此外对于arkui-x页面,也出现了辅助服务无法抓词的问题。
客户认为需要进一步摸索更多的方法。
1、比accessibility更底层的技术,比如dom。
主要应用于前端javascript,而后端要获取dom信息,则需要根据网页地址,如果有网页地址,则可以得到。
当网页切换时,除非是实时通知后端网页地址,这样就很麻烦了,不是可行的方案。
2、应用兼容性
在网上能搜索到的资料,都是将如何使用accessibility来捕捉文本和坐标的。但是真正出现了问题,如何解决的,很少。
因为当前项目使用的板载系统是一个android 11的老系统,而我们配置的环境android studio的sdk版本,flutter的sdk版本都是最新的,可能存在应用兼容性问题。因为无障碍调用的是系统的服务,怀疑系统服务与apk不兼容。
所有sdk调整为和android 11一致,如下:
1)下载android11对应的flutter sdk 2.5.3。
2)android sdk先前安装过最新的sdk,则可通过android studio的sdk manager调整为android 11,与测试版的系统一致。
如下图,去掉api 35的勾选,选择android 11.0(“R”),点击Apply重新下载。

3)java sdk调整为Oracle OpenJDK 11.0.24。

4)重新制作一个flutter apk时,使用flutter doctor老是报错,找不到java。android license也是和Java有关。

这导致无法使用flutter run,flutter build apk。
这个卡了一段时间。
后来发现可以直接使用android studio来构建apk。这样构建的apk使用sdk才是前面配置的。
所以遇到来回调整sdk版本的情况,命令行操作方式可以抛弃了。

做完上述操作,最后还是一样,无法抓词。
3、其他兼容性问题
后来找到这篇文章:AccessibilityService从入门到出轨 - 简书 (jianshu.com)
里面提到了一个兼容性问题:
另外,还有一个兼容性的问题,大家都懂的,国内各种第三方的ROM厂家,经常会修改一些系统的Activity,甚至不同系统版本同一个功能的Activity都有可能不一样,所以,使用AccessibilityService的一个比较大的麻烦就是兼容性的处理,需要使用dumpsys和uiautomator这些工具来进行详细的分析,这些工具的使用以及分析方法,在我的新书《Android群英传:神兵利器》中都有详细的讲解,想深入了解的开发者可以参考下。
对于当前项目的这块硬件板子,目前不太清楚是否使用的标准系统,有没有做一些底层修改。或者是对非系统自带应用有权限限制。
由于accessibility很多时候是作为黑科技使用的,用来做一些灰色的事务。如果只是小范围使用,问题不大。使用范围扩大的话,可能从长期来看,适配工作会比开发的工作量还要大得多。
更多推荐



所有评论(0)