夜雨聆风学习资料网

ARTICLE · 1124981

gkd:4.2 万星的安卓神器,帮你自动跳过开屏广告

gkd:4.2 万星的安卓神器,帮你自动跳过开屏广告

先说个每天都在发生的事:点开一个 App,手指还没放稳,先给你甩过来一个开屏广告,角上一个小小的「跳过」,还得盯着表等三秒。

这事烦人,但又没到值得折腾手机的程度。所以我一直忍着。

直到我发现有人在 GitHub 上把这个问题当成正经工程做——而且做了两年多,攒下四万多颗星。

01PART四万星的安卓工具,干的是一件很小的事WHAT IT IS

它叫 gkd。名字是三个字母,读起来像「搞快点」。

它在 GitHub 上的官方描述是这么写的:基于无障碍、高级选择器、订阅规则的自定义屏幕点击安卓应用。

翻译成人话:它能帮你自动点屏幕上的东西。

最典型的就是开屏广告。App 一启动,它检测到屏幕上出现了「跳过」这两个字,就替你点下去。你还没来得及看广告第一帧,就已经进主界面了。

看这张首页截图的数据:「已开启 5 条订阅,8全局 / 25应用 / 28规则组 / 4530 触发」。四千多次触发,全是它替你点掉的。下面那行「最近触发:开屏广告 / 飞书」,就是它记录下来的战绩。

02PART它是怎么做到的HOW IT WORKS

这里得先说清楚,gkd 不 root、不刷机、不改系统。

它用的是安卓系统自带的一个能力:无障碍服务(Accessibility Service)。这个权限本来是给视障用户设计的——让读屏软件能读出屏幕上的内容,也能代替用户去点击。gkd 借用了同样的入口。

流程大致是这样:屏幕上的界面一变,gkd 就拿到当前界面的节点树(可以理解成这一屏所有控件的清单),然后拿你订阅的规则去比对。

高级选择器像 CSS 选择器一样挑节点

它能写 [text^="跳过"] 这种表达式,意思是「文字以『跳过』开头的那个节点」。比单纯找坐标精确得多,换机型、换分辨率也照样能用。

订阅规则规则不是内置的,是从别人那订阅来的

这一点后面细说,是这个项目最关键的设计。

快照审查出问题了能自己查

它可以把某一屏的节点信息完整存下来,用官方提供的在线工具看,定位为什么没点对。

这张是订阅规则的列表页。你能看到哔哩哔哩有 11 组规则、微博 16 组、QQ 20 组、NGA 4 组、小红书 3 组。每一组对应 App 里的一个具体「烦人点」。

03PART它是怎么识别「跳过」的THE RULE

光有点击能力没用,关键是怎么知道该点哪。这就是规则的作用。

举个官方 README 里的真实例子。某个 App 的开屏广告,跳过按钮的规则长这样:

[@[vid="menu"] < [vid="menu_container"] - [vid="dot_text_layout"] > [text^="广告"]

这一串看着玄乎,其实是在描述节点之间的相对关系:找到 vid=menu 的那个节点,在它下面的 menu_container 里,排除掉 dot_text_layout,再往下找文字以「广告」开头的节点。

为什么搞得这么复杂?因为光靠文字匹配会误伤。

比如你想点「跳过」,但如果只写「文字=跳过」,那 App 里任何一个叫「跳过」的按钮都会被点。所以规则要带上上下文——这个按钮得在开屏界面里、得在广告容器的附近、得满足特定条件。

这张是哔哩哔哩的规则详情页。开屏广告、评论区顶部公告横幅、青少年模式弹窗、动态推荐广告卡片、视频底部与评论区中间卡片式广告……一条一条列得很清楚,每条都能单独开关。

规则是订阅制的,不是软件自带的

这点我一开始没注意,后来觉得挺妙。

gkd 默认不提供任何规则。你装完它,它什么都干不了,得先自己去加订阅。

04PART规则为什么不做进软件里WHY SUBSCRIPTIONS

原因很现实:App 的界面一直在变。

今天 B 站的跳过按钮在这个位置,下个版本更新完就换了。如果把规则硬编码进软件,那软件就得跟着所有 App 一起更新——这显然不现实。

订阅制的做法是:规则和软件分开,谁管哪块分清楚。

gkd 只负责「点击引擎」这个通用能力,规则由第三方维护。社区里有一堆专门做规则的项目,各自覆盖不同的 App 群体。你在 gkd 里填一个订阅链接,就能拉到那个人维护的全套规则。

这是设置页,大部分是按你自己习惯调。有意思的是它的通知文案可以改——截图里这位把文案改成了「💗 坤 / 吃掉了 ${n} 个活珠子」,${n} 会自动替换成实际触发次数。触发提示也改成了「Man!」。

这种自由度在我看来是加分项:一个工具允许你把它改成自己的样子,说明它没打算教育你该怎么用。

05PART装之前要知道的事HONEST PART

这一段说点实际的。

必须开无障碍权限这是它的工作原理

装完第一件事是去系统设置里给它开无障碍。开了之后手机会在状态栏或者通知栏提示「某应用正在运行无障碍服务」,这是正常的。

它得一直后台运行会常驻通知

它需要随时知道屏幕变化,所以会挂一个前台服务。你可以把通知关掉,但可能会被杀后台。

规则有误伤的可能所以要有快照审查

规则是人写的,写错了可能点错地方。gkd 提供了「局部关闭」和「白名单」,就是在某些 App 里不让它动手。

本项目仅供学习交流官方明确写了

README 里的免责声明原话是「项目仅供学习交流,禁止用于商业或非法用途」。

这张是应用列表,可以看到它对每个 App 生效了多少条规则:哔哩哔哩 8 全局 / 47 组规则 / 4 启用 / 43 关闭,飞书 9 组 / 9 关闭,微博 45 组 / 45 关闭。

这里有个细节值得说:大部分规则默认是关闭的。

为什么?因为规则越多,误伤风险越大。作者把选择权交给你——想用哪条自己开。这个默认值设得很克制。

装之前先想清楚一件事:这个工具的本质是「把你的点击权限交给一段规则」。它开源、代码可查,但权限本身是实打实的。接受这一点再装。

LASTPART收个尾NOTES

我为什么写 gkd?

因为它把一个「忍忍就过去了」的问题,当成了正经工程做了两年多。四万多颗星不是靠营销攒出来的,是靠真的每次省你三秒钟攒出来的。

我更欣赏的是它的架构选择:自己没有规则,规则靠订阅。

这意味着两件事。一是它能活得比任何一个 App 的版本周期都长——只要有人在维护规则,它就一直有用。二是它把一个软件的责任边界划得很清楚:我是引擎,规则不是我的事。

现在很多工具恨不得把所有东西都焊死在自己身上,gkd 反着来。这种克制在这个体量的开源项目里不多见。

当然它也不是没门槛:得开无障碍、得自己找订阅、误伤了得自己调。它不是一个「装完即爽」的东西。但如果你每天解锁手机几十次,每次都躲不掉开屏广告,这点门槛换来的东西是值的。

项目是 GPL-3.0 开源,GitHub 搜 gkd 就能找到。

我是 一个996牛马,就爱挖这种看着小、用起来天天省事的工具。觉得有用的话,点个赞、点个在看,转给那个天天吐槽 App 开屏广告的同事。

既然看到这儿了,觉得有用就随手点个赞、在看、转发三连吧。

♥点赞◎在看➦转发

THANKS FOR READING

相关学习资料