用 gkd 跳过 App 广告:从装包到写第一条规则实战
| 项目 | 内容 |
|---|---|
| 软件 | gkd |
| 版本 | 1.10.0-beta.3 |
| 平台 | Android APK |
| 体积 | 5.97M |
| 分类 | 系统工具 |
| 包名 | li.songe.gkd |
| 官网 | gkd 官网 |
| 下载一 | gkd 下载,gkd 下载 |
| 下载二 | gkd 下载,gkd 下载 |
| 文档 | gkd 文档 |
| 介绍 | gkd 是一款纯本地运行的 Android 广告跳过工具,通过无障碍服务自动点击界面上的跳过按钮。本文从零开始讲安装、授权、写规则到解决高频问题,一次把能用的流程跑通。 |
gkd 是 Android 上一款靠无障碍服务工作的广告跳过辅助器,全程在本地运行,不申请任何网络权限——它的本质就是盯着屏幕上的控件节点,发现有"跳过""关闭""广告"之类的按钮就替你点一下。开屏广告、信息流广告卡片、弹窗广告都能覆盖,具体能跳哪些取决于规则写得准不准。适合那些被 App 开屏广告烦到每次都要数三秒的 Android 用户。
前置条件
装包之前先想清楚两个事:渠道选 APK 直装版,别下 Google Play 版——Play 渠道按政策要求没声明无障碍工具用途,系统会周期性弹"查看权限设置(gkd 可以查看和控制您的屏幕)"的通知,关不掉,功能却一点不影响。APK 直装版带完整的无障碍声明,没有这个骚扰。安装包不大,5.97M,Android 7.0+ 都能跑。
另外准备好 adb 环境(电脑上装 Android Platform Tools),或者 Shizuku——想让 gkd 具备高级授权能力(自己看门、服务掉了自动拉起),二选一得有。
第一步:把无障碍开关开起来(普通授权)
这是最基础的一步,不开无障碍 gkd 什么都做不了。
启动 gkd → 首页中央有个大大的"开启无障碍"按钮 → 点它会自动跳转到系统无障碍设置页面 → 在已安装的服务列表里找到 gkd → 把开关打开。
预期效果:回到 gkd 首页,顶部状态显示"已开启"。此时如果 gkd 里已经有规则(比如导入了一个订阅),你就可以切到那些被规则覆盖的 App 里验证跳过效果了。
省个事的小技巧:无障碍服务的详情页里有个"快捷方式"开关,打开之后下次开启服务不再弹 10 秒的警告弹窗——不用每次等倒计时。
第二步:升级高级授权(让它自己看门)
普通授权的痛点是系统一杀进程无障碍就跟着关,杀完了还得手动再进系统设置点开。高级授权解决的就是这个——gkd 拿到 WRITE_SECURE_SETTINGS 权限之后,能自行控制无障碍服务开关,杀了自动拉起,你基本不用再进系统设置碰它。
方法一:用 adb 授予(推荐,一次搞定)
连 USB 调试之后在电脑上跑这一条命令:
adb shell pm grant li.songe.gkd android.permission.WRITE_SECURE_SETTINGS
命令执行成功没有任何输出,就是成功了。回到 gkd 的授权状态页看一下,高级授权那项应该显示"已获得"。

方法二:用 Shizuku(不想碰 adb 的话)
Shizuku 是一个已经拿到 shell 级权限的后台,gkd 可以通过它间接写入安全设置。装好 Shizuku 按它的引导跑一遍启动流程,再回 gkd 的高级授权页面选 Shizuku 授权就行。
厂商系统限制的解除(高频卡点)
如果你跑 adb 命令时报 SecurityException(关键词是 GRANT_RUNTIME_PERMISSIONS),那是厂商系统加了限制,不是 gkd 的问题。按系统对号入座:
- HyperOS / MIUI(小米、POCO):开发者选项里开"USB 调试(安全设置)"——注意不是普通的"USB 调试",这是两个独立开关,后者只管连接,前者才授权修改安全设置;
- ColorOS(OPPO、一加):开发者选项里关"权限监控"(或打开"禁止权限监控");
- Flyme(魅族):开发者选项里关"Flyme 支付保护"。
解除完重新执行命令就过了。

第三步:写一条自己的规则(或套现成订阅)
无障碍开了、授权拿了,接下来就是告诉 gkd 遇到什么样的节点该点。规则的核心是 matches——一个选择器表达式,描述你要点击的目标控件。
最小规则的样子
入口在 首页 → 订阅 → 本地订阅 → 应用规则 → 添加。给一个具体应用加规则,最小结构大概是这样:
{
id: 'com.zhihu.android',
name: '知乎',
groups: [
{
key: 0,
name: '开屏广告',
rules: {
matches: 'TextView[id="com.zhihu.android:id/btn_skip"]',
},
},
],
}

id是目标应用的包名,规则只在这个 App 界面内匹配;groups里每一组是一个功能场景,比如"开屏广告"算一组、"信息流广告卡片"算另一组,可以独立开关;rules.matches就是选择器,这里说的是"找到一个 id 为btn_skip的 TextView"。
选择器速查
matches 最常用就几种写法:
| 场景 | 写法 |
|---|---|
| 知道控件的 id | [id="具体id值"] |
| 只知道控件上的文字 | [text*="跳过"](包含匹配) |
| 想避免点到不可见节点 | 末尾加 [visibleToUser=true] |
| 想限定只在某个界面生效 | 在规则里加 activityIds: "具体Activity名" |
组合起来可以写成 TextView[id="com.example:id/btn_skip"][visibleToUser=true]。
规则怎么来的:快照
凭空写 matches 容易写错 id。gkd 自带快照审查功能——在目标 App 里打开 gkd 浮窗,点"抓快照",它会把当前界面的所有控件节点(包括 id、文字、可见性)导出成一个文件,在 gkd 里就能直接查看节点信息、对着写 matches。这是写规则的标准路径,别硬猜。
不想自己写的话,GitHub 上有现成的公开订阅,直接在 gkd 的"远程订阅"里导入地址就能用,覆盖常见 App 的主流广告位。
常见卡点
卡点一:adb grant 报 SecurityException
上面第二步已经讲过,99% 是厂商系统限制没解除。再补一句小米的特殊情况:如果开了"USB 调试(安全设置)"之后还是报错,可以在 adb 命令前面加 sudo 提权再跑一次,大概率过。
卡点二:无障碍通知弹到没脾气
如果你用的是 Google Play 渠道下的 gkd,系统会按 Play 政策周期性弹"查看权限设置"的通知,无解——卸了换 APK 直装版,功能一样但没这个骚扰。
卡点三:无障碍开着开着自己关了
排查按这个顺序来:
- 任务卡片给 gkd 加锁(划掉不掉);
- 确认常驻通知没被你手动滑掉;
- 系统设置里找省电策略,给 gkd 设成"无限制";
- 允许 gkd 自启动;
- 以上都做了还是关——你还在用普通授权,升级到高级授权就一劳永逸了。
卡点四:写的规则不生效
先确认规则在哪个应用、在订阅里启用了。然后用快照检查你写的 matches 到底能不能匹配到当前界面的节点——id 有没有写错、文字有没有变、是不是被 activityIds 限定住了看不到效果。
进阶一句话
规则写熟了之后,试试快照上传分享(在 gkd 高级设置里配 GitHub Cookie,能生成 i.gkd.li 的公开分享链接)和云端订阅同步,让你写的规则跨设备跟着你走,或者直接订阅别人维护的规则库省掉自己写的麻烦。
本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。


