SKIP:基于安卓无障碍服务自动跳过 APP 开屏广告的开源实现与自定义规则订阅实践
移动开发原生移动GUI 自动化【免费下载链接】SKIP自动跳过APP开屏广告项目地址https://gitcode.com/gh_mirrors/ski/SKIP点击查看免费下载SKIP 是一款免费开源的安卓应用利用安卓无障碍服务AccessibilityService自动定位并点击 APP 开屏广告上的「跳过」按钮。本篇基于仓库 README 展开结合默认订阅配置 skip_config_v3.yaml 与核心源码讲解其跳过原理、配置格式与「自定义规则订阅」机制的完整落地方式读完后可理解从配置加载、节点匹配到手势点击的整条链路并能自行维护或提交规则订阅。一、SKIP 是什么SKIP 旨在帮助用户快速点击 APP 开屏广告的跳过按钮减少手动等待与点击让使用体验更加流畅。当前仓库发布的版本为 v3.1.0见 CHANGELOG.md 与 SKIP-v3.1.0.apk。主界面预览如下对应 README 中的「主界面预览」主界面以「开启无障碍服务」为核心入口配套功能包括应用白名单、布局检查、应用保活、设置严格模式、自定义配置、主题切换、自动更新等。项目采用 GPL-3.0 开源协议LICENSE使用前请阅读免责声明。二、核心原理无障碍服务如何执行「跳过」2.1 服务注册与能力声明SKIP 在 AndroidManifest.xml 中注册了MyAccessibilityService声明了android.permission.BIND_ACCESSIBILITY_SERVICE权限与android.accessibilityservice.AccessibilityService动作能力配置指向 accessibility.xmlandroid:canPerformGesturestrue允许服务通过手势模拟点击这是「自动点按跳过按钮」的前提android:canRetrieveWindowContenttrue允许读取当前窗口的视图树从而遍历节点查找广告按钮android:accessibilityFlags中的flagReportViewIds、flagIncludeNotImportantViews上报控件资源 ID、包含非重要视图保证skipIds这类基于资源 ID 的规则可以命中android:notificationTimeout100缩短事件通知延迟提高扫描实时性。用户开启方式见 启用无障碍服务点击主界面中央按钮跳转系统设置后选择「使用 SKIP」完成授权。2.2 事件驱动的主流程核心入口是 MyAccessibilityService.kt 的onAccessibilityEvent每次无障碍事件触发时执行获取根节点getCurrentRootNode()取当前活动窗口的根节点rootInActiveWindow。切换应用时重置状态当根节点包名变化时重置扫描计数scanTimes 0并清空已点击记录clickedRect。白名单与扫描上限过滤满足「包名不在白名单 且严格模式开启 或scanTimes 50」才继续。即普通模式下每个应用最多扫描 50 次兼顾省电与命中严格模式下则不受次数限制完全遵循配置规则。查找目标区域调用configLoadRepository.getTargetRect(rootNode, appActivityName, isStrict)得到待点击的Rect。防抖点击同一矩形rect.toString()只点击一次通过clickedRect去重避免同一广告被重复触发。手势点击click 方法 用GestureDescription.Builder构造一条指向rect中心点、时长 100ms 的笔画再通过dispatchGesture派发完成「自动点击」。若设置了「跳过提示」strings 中toast_skip_tip为「已为您跳过广告」点击成功后会弹出 Toast。2.3 三种匹配策略skipTexts / skipIds / skipBoundsConfigLoadRepository.kt 的getTargetRect是规则匹配的核心它对同一个应用同时并发三种策略基于 Kotlin 协程scope.async谁先命中就采用谁的结果策略字段查找方式典型场景按文本skipTextsfindAccessibilityNodeInfosByText(text)可选length限制文本长度可选click指定固定点击坐标按钮无资源 ID、只有「跳过」「关闭」等文案按资源 IDskipIdsfindAccessibilityNodeInfosByViewId(id)广告 SDK 有固定 ID如穿山甲的tt_splash_skip_btn按边界skipBoundsBFS 遍历节点树traverseNode 寻找四边误差 ≤1px 的节点节点无法被文本/ID 命中用坐标框定位关键行为细节均可从源码确认严格模式下的默认规则非严格模式时isStrict ! true若配置中没有skipTexts会自动追加一条text 跳过的默认规则ConfigLoadRepository.kt。对应 strings.xml 中「严格模式」开关的两个取值「完全遵循配置规则」与「默认匹配「跳过」关键字」。开启严格模式后 SKIP 只执行配置文件写明的规则不会误点应用内其他含「跳过」文案的控件。activityName 限定三种策略都支持activityName字段配置值与当前 Activity 类名不一致时该条规则直接跳过可把规则精确限定到开屏 Activity如com.MobileTicket.ui.dialog.SplashAdDialog。click 坐标兜底当节点能命中但本身不可点击如被遮挡、isClickablefalse时可用click: x,y指定实际落点。例如豆瓣规则skip_config_v3.yaml命中ad_mark后点击固定坐标1280,180配置注释为「1440x3200分辨率下无法选中的跳过按钮」。加载阶段click会被转换为 1px 大小的Rect(x, y, x1, y1)convertClick。三、自定义规则订阅README 的核心功能README 中「自定义规则订阅」表格给出了当前默认订阅规则描述订阅链接作者源码地址默认订阅https://skip.guoxicheng.top/skip_config_v3.yamlGuoXiChengskip_config_v3该链接与仓库内置的 skip_config_v3.yaml 同源。应用内通过「设置 → 自定义配置」使用订阅输入形式支持URL 链接 / YAML 文本 / JSON 文本见 strings.xml 的settings_custom_subtitle粘贴订阅 URL 即可加载线上规则也可以直接粘贴 YAML/JSON 文本作为临时配置。3.1 配置文件的字段参考以 v3 格式为例仓库默认配置覆盖京东读书、哔哩哔哩、CSDN、菜鸟、爱奇艺、铁路12306、虎扑等数十个应用。一个同时使用多种策略的完整示例取自 skip_config_v3.yaml- appName: 京东读书 packageName: com.jd.app.reader skipBounds: - bound: 1243,176,1383,316 # left,top,right,bottom四边坐标 activityName: com.jingdong.app.reader.logo.JdLogoActivity file: fileId20f3db03-af60-4dc3-885a-b954b985931fnodeId14 desc: 1440x3200分辨率下圆形开屏广告按钮 skipIds: - id: com.jd.app.reader:id/mJumpBtn # 控件资源 ID activityName: com.jingdong.app.reader.logo.JdLogoActivity desc: 开屏广告跳过按钮字段含义与 ConfigReadSchema.kt 的解析结构一一对应字段必填说明packageName是目标应用的包名规则以此作为主键索引appName否应用名仅作注释性说明不参与匹配skipTexts[].text—要匹配的文案如「跳过」「关闭」「进入首页」skipTexts[].length否限制节点文本长度 length用于区分同文案的不同控件skipTexts[].activityName/skipIds[].activityName/skipBounds[].activityName否限定只在指定 Activity 下生效skipTexts[].click/skipIds[].click/skipBounds[].click否固定点击坐标x,y用于节点无法被正常点击的场景skipIds[].id—控件资源 ID如com.byted.pangle.m:id/tt_splash_skip_btnskipBounds[].bound—left,top,right,bottom四段数字file/desc否布局检查产出的节点来源与人工备注便于维护追溯注意仓库代码解析ConfigReadSchema时只消费packageName与三类skip*字段因此appName、file、desc等扩展字段不会破坏加载Gson 反序列化时按声明字段取值。3.2 配置加载与校验链路配置从输入到生效的完整调用链读取来源ConfigReadRepository.readConfig 从 DataStore 读取CUSTOM_CONFIG缺省值为默认订阅 URLstrings.xml 的store_default_config。URL 拉取getFromUrl 判断为http(s)://时通过MyApiNetwork.fetchConfigFromUrl下载非 URL 内容原样返回。YAML 解析getFromYaml用 SnakeYAML 加载为ListConfigReadSchema再转 JSON解析失败则回退原文兼容 JSON 文本输入。JSON 反序列化与状态反馈getFromJson成功后生成ConfigPostSchema(SUCCESS, md5, schemaList)失败则返回「未检测到有效的配置」R.string.invalid_config状态主界面据此展示配置加载结果。规则转换handleConfig 将字符串形式的bound/click转为Rect按packageName建立MapString, ConfigLoadSchema交由 ConfigViewModel.loadConfig 写入ConfigLoadRepository供匹配使用。此外仓库还内置了一份独立的配置校验脚本 scripts/yaml-check.ts使用 zod 校验packageName不得含首尾空白、bound必须是四段数字、resolution必须为两段数字、length不得为负、且每个应用至少提供skipIds/skipTexts/skipBounds之一测试用例见 scripts/tests/yaml-check.test.ts。编写规则时可参照它自检降低推送订阅时的格式错误率。3.3 配置格式的演进v1 → v3仓库 assets 中同时保留了三个历史版本可作为格式演进的对照skip_config.yamlv1package_name/skip_id/skip_text/skip_bounds分辨率#bound写法以及max_click_count字段skip_config_v2.yamlv2改为packageName 数组形式的skipIds/skipTexts/skipBoundsskipBounds引入独立的resolution字段skip_config_v3.yamlv3当前版本新增activityName与click两个可配置项CHANGELOG.md v3.0.0 记录bound不再携带resolutiondesc/file字段用于记录布局检查来源。四、配套能力白名单、布局检查与保活围绕「跳过」这个主功能SKIP 还设计了几个支撑环节均来自源码与 CHANGELOG 事实应用白名单MyAccessibilityService每次扫描前调用whiteListRepository.isAppInWhiteList(packageName)命中白名单的应用直接跳过扫描避免误点白名单页面支持搜索与「显示系统应用」开关WhiteListActivity。布局检查v3.0.0 引入的调试工具。开启后通过悬浮窗按钮或音量减键触发startCaptureNodeMyAccessibilityService.kt对当前窗口做 BFS 遍历把每个节点的深度、父子关系、left/top/right/bottom边界、text、viewIdResourceName等序列化为 JSON 存档配置文件中file: fileId...nodeId...字段即指向这些存档中的具体节点。它是编写自定义规则时获取bound、id值的主要手段介绍见 docs/advance/custom-config/intro.md 与 布局检查使用文档。应用保活无障碍服务依赖前台存活应用提供「常驻通知栏」MyForegroundServiceforegroundServiceTypespecialUse、省电策略/自启动/后台任务等指引页AliveActivityv3.1.0 修复了「后台任务隐藏」失效问题。严格模式v3.1.0 起「严格模式下可在应用内执行跳过」配合 2.3 节说明的默认规则逻辑决定 SKIP 的激进程度。五、许可证与使用注意SKIP 采用GPL-3.0许可发布完整条款见 LICENSE。README 同时提供了 免责声明说明自动点击行为由无障碍服务在用户设备本地执行用户应自行评估对具体应用的使用风险本文介绍的技术实现手势派发、节点遍历、配置订阅均基于安卓官方无障碍服务 API不涉及 hook 或系统修改。六、贡献自定义规则订阅README 约定了社区协作方式若你维护了一份自定义规则订阅可修改 README.md 中的「自定义规则订阅」表格补充规则描述、订阅链接、作者与源码地址后提交 PR经合并后即可被更多用户发现。编写规则时建议使用布局检查工具获取真实节点信息优先使用skipIds稳定性最高必要时叠加activityName限定开屏 Activity并对无法命中的节点补充click坐标兜底。赞分享移动开发原生移动GUI 自动化【免费下载链接】SKIP自动跳过APP开屏广告项目地址https://gitcode.com/gh_mirrors/ski/SKIP点击查看免费下载相关推荐基于无障碍服务的安卓开屏广告自动跳过Android-Touch-Helper开屏跳过实现原理与使用指南基于无障碍服务的安卓开屏广告自动跳过Android Touch Helper开屏跳过实现原理与使用指南 Android Touch Helper应用名移动开发GUI 自动化Android-Touch-Helper无障碍服务配置完整指南Android Touch Helper无障碍服务配置完整指南 想要告别烦人的开屏广告吗Android Touch Helper开屏跳过助手就是你的终极解决方移动开发GUI 自动化Android-Touch-Helper安卓开屏广告自动跳过工具详解Android Touch Helper安卓开屏广告自动跳过工具详解 项目概述 Android Touch Helper是一款基于Android无障碍服务开发移动开发GUI 自动化上一篇视频硬字幕提取神器3分钟将视频字幕转为可编辑SRT文件下一篇3个为什么让Windows Cleaner成为你的C盘救星深度体验报告创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Kali系统中隐藏sshd Banner的协议层收敛实践

Kali系统中隐藏sshd Banner的协议层收敛实践

1. 项目概述:为什么在Kali系统里“藏起”sshd的Banner不是小题大做? 在渗透测试和红蓝对抗实战中, Kali Linux 从来不只是一个装满工具的操作系统——它是攻击链路的起点,是信息侦察的第一双眼睛,也是防守方日志里最…

2026/10/13 9:37:28 阅读更多 →
WebGL 的 Shader 与 GLSL 全面解析:顶点着色器、片段着色器与着色器语言实战指南

WebGL 的 Shader 与 GLSL 全面解析:顶点着色器、片段着色器与着色器语言实战指南

图形学 【免费下载链接】webgl-fundamentals WebGL lessons that start with the basics 项目地址: https://gitcode.com/gh_mirrors/we/webgl-fundamentals 点击查看 免费下载 导读 本文是 webgl-fundamentals 开源课程系列中讲解「着色器(Shader&…

2026/10/13 9:37:28 阅读更多 →
Android TextureView视频播放异常解决方案

Android TextureView视频播放异常解决方案

1. 问题现象与背景解析在Android应用开发中,TextureView作为SurfaceView的升级替代方案,因其支持动画变换和灵活布局的特性,已成为视频播放功能的首选组件。但在实际开发中,不少开发者会遇到一个看似简单却令人困惑的报错&#xf…

2026/10/13 9:36:25 阅读更多 →

最新新闻

FFMpeg 4.1音频检测实战:命令详解与批处理自动化

FFMpeg 4.1音频检测实战:命令详解与批处理自动化

做内容生产这一年多,我处理过最多的活儿不是剪辑,而是给一堆音频素材做体检。尤其是接手播客剪辑、视频课程批量转码这类项目时,几十个甚至上百个文件摆在面前,里面哪个有静音、哪个音量忽大忽小、哪个爆音了,光靠耳朵…

2026/10/13 10:15:43 阅读更多 →
DDR Training失败怎么办?从硬件到软件的完整排查指南

DDR Training失败怎么办?从硬件到软件的完整排查指南

做嵌入式硬件开发的人,大概都遇到过这样的噩梦:新板子打回来,上电,串口没有任何输出,系统起不来。查电源,电压都对;查时钟,晶振在振;查复位,复位释放了。最后…

2026/10/13 10:15:43 阅读更多 →
基于CNN的音乐推荐系统设计与实现|大数据专业项目|毕设项目|大数据专业设计|毕设

基于CNN的音乐推荐系统设计与实现|大数据专业项目|毕设项目|大数据专业设计|毕设

一、項目介绍 摘 要 在数字音乐蓬勃发展的当下,音乐库规模急剧膨胀,用户高效获取心仪音乐面临挑战,个性化音乐推荐系统的重要性日益凸显。然而,传统音乐推荐系统存在推荐效果参差不齐、冷启动等诸多问题。卷积神经网络&#xff0…

2026/10/13 10:15:43 阅读更多 →
Meta为Personal Agent推出一个新协议PAP

Meta为Personal Agent推出一个新协议PAP

Meta为Personal Agent推出一个新协议PAP1-PAP(Personal Agent Protocol)是一套由Meta和Sierra联合发起的开放标准,它规定了个人AI助理在代表你与商家打交道时,应该如何证明自己的身份、获得你的授权,以及能做什么、不能…

2026/10/13 10:15:43 阅读更多 →
无代码平台:企业数字化转型的新引擎

无代码平台:企业数字化转型的新引擎

1. 无代码平台行业现状与核心价值无代码平台正在重塑企业数字化建设的游戏规则。过去需要专业开发团队耗时数月才能完成的应用搭建,现在业务人员通过拖拽组件就能在几小时内实现。根据最新行业调研数据,2023年全球无代码开发平台市场规模已达到138亿美元…

2026/10/13 10:15:43 阅读更多 →
page_alloc alloc_pages_bulk_noprof

page_alloc alloc_pages_bulk_noprof

alloc_pages_bulk_noprof() 是内核提供的批量页面分配接口。它的核心设计目标是减少锁竞争和函数调用开销:通过一次持有 PCP(Per-CPU Pages)锁,连续分配多个页面填充到调用方提供的数组中,而不是反复调用单页分配接口。…

2026/10/13 10:14:40 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →