gkd 中文文档 下载 App

gkd 工作原理:无障碍、选择器与订阅规则如何配合

理解 GKD 的工作原理,只需要记住一条链路:无障碍服务发现界面变化 → 选择器判断当前界面是否命中规则 → 命中则执行点击等动作。下面把每个环节拆开说。

第一环:无障碍服务在监听

开启无障碍权限后,GKD 会持续接收系统派发的无障碍事件——你切换应用、弹出对话框、页面加载完成,都会产生事件。GKD 不需要截屏分析图像,它直接拿到的是系统提供的节点树:每个控件的文字、id、位置、是否可点击等信息都在里面。

这也是为什么:

第二环:选择器做匹配

规则里写的是选择器表达式。GKD 拿到新的节点树后,用选择器在节点树里查找目标:

TextView[id="com.zhihu.android:id/btn_skip"]

上面这条的含义是:找一个 id 为 btn_skip 的 TextView,并且它属于包名 com.zhihu.android 的应用。匹配到了才进入第三环。

选择器还可以带上下文条件,比如「这个按钮旁边必须有某段文字」「这个节点的父节点下还有一个关闭图标」,用来避免误点。语法的完整说明在选择器入门。

第三环:执行动作

匹配成功后,GKD 对目标节点执行规则里定义的动作,最常见的是点击(click),也可以是长按、返回等。执行结果会写入日志,在首页的触发记录里可以看到每次命中的时间、应用与规则名。

GKD 应用页按应用展示规则覆盖情况,可逐个启用或禁用
GKD 应用列表页

规则从哪里来

规则以「订阅」为单位管理:本地订阅在应用内手动编辑,远程订阅通过链接添加后自动更新。一个订阅里可以包含全局规则(对所有应用生效)和若干应用规则(只对指定包名生效)。详见订阅页一览。

两个容易误解的点