微信升级到8.0.58后,就不能进行布局分析了?如何解决
微信以前能进行布局分析,但升级到8.0.58后,就不能进行布局分析。还有一些其他app,比如夸克app等,也是不能布局节点分析。以后这样的app越来越多,不知道怎么解决这个问题?
在网上看到一篇文章,“”新版微信无法通过autojs查看布局“”,不知道说的对不对
新版微信无法通过Auto.js查看布局的主要原因是微信8.0.52及以上版本控件混淆导致AccessibilityService无法正常获取节点元素,可通过升级Auto.js版本或调整无障碍服务配置解决。
- 问题根源:微信版本升级与控件混淆 微信自8.0.52版本起,对界面控件的层级和标识进行了优化或混淆处理,导致传统无障碍服务(如Auto.js默认的AccessibilityService)无法准确识别节点元素。这种变化使得布局分析工具(如Auto.js的find()或bounds()方法)返回异常结果,表现为无法定位控件、坐标错误或返回空值。
- 解决方案:升级Auto.js或调整无障碍服务 使用Auto.js Pro高级版:2025年发布的Auto.js Pro高级版通过创建与系统内置无障碍服务相同包名类名的服务(如com.google.android.accessibility.selecttospeak.SelectToSpeakService),绕过了微信的控件混淆限制。该服务模拟系统级无障碍权限,可更深度地获取节点信息,解决布局分析异常问题。
因为微信有一套自己的无障碍服务白名单, 但仅仅是无障碍服务 ID 完整名称的后半部分. 前半部分的包名没有做验证. 因此网上出现了不少将自身应用的无障碍服务名称 (完整 ID 的后半部分) 设置为白名单内 (典型的是 com.google.android.accessibility.selecttospeak.SelectToSpeakService), 于是可以识别微信控件. 但我总觉得这不是个长久之计, 微信未来很可能会改变白名单的验证 (加上包名验证等), 这样这些方法都失效了. 而且我不希望一个项目为了某个特定应用做这样特定的适配, 尤其是将一个软件服务修改为与其功能并不相符的名称. 所以目前 AutoJs6 并不支持也不会在近期打算支持微信控件识别的特殊适配.
参阅 #432, #382
能不能同时内置多套方案? 设个优先级,然后再触发更换方案的条件。 比如: 1、默认使用常用方案 2、当找不到控件的时候,尝试更换下一套方案,直到所有方案更换完毕,才判断为找不到控件。 3、当5秒内,当前页面控件数量小于5个时,更换下一套方案……
可以在AutoJS内置几套方案,然后在设置里面可以选择切换,这样就能在悬浮窗小工具里打开布局分析查看效果(这样可以在开发时使用,辅助开发,所见即所得)。
然后写一个函数工具,用户可以通过这个函数在代码里进行动态切换方案。比如程序运行到微信小程序页面,我就调用这个函数切换到对应的布局分析方案,等离开这个页面,我再切换回来。
这样AutoJS6适应性更强,应对的场景更多。
遇到不同的APP,布局分析失效,让用户自己尝试切换方案,看看效果,哪个能用就用哪个。
特别是Android 13,失效的不仅仅是微信,其它APP也有。