Skip to content
qjngbacPublic

About

Android 开屏广告自动跳过工具。0 权限、无网络依赖、低功耗零分配架构,内置无数据线机上运行诊断。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Latest commit

 

History

3 Commits

Folders and files

Repository files navigation

跳跳助手 (SkipApp)

原生 Kotlin + Android SDK 编写的开屏广告自动跳过工具。通过无障碍服务识别开屏广告里的"跳过"控件并自动点击,全程本地运行。

  • 语言:Kotlin 2.3.20,无任何第三方运行时依赖
  • 权限:不申请网络、通知或存储权限;使用时需要开启无障碍服务
  • 平台:compileSdk 35 / targetSdk 35 / minSdk 24(Android 7.0+)
  • 版本:v1.2.14(versionCode 35)
  • 许可:MIT

下载最新安装包(适用于 arm64-v8a 设备)

它能做什么

  • 冷启动 App 后自动寻找并点击开屏广告的跳过控件
  • 支持顶部与底部边缘带的多种真实形态:跳过、跳过 2、跳过 02、跳过 5s、15秒后跳过、Skip、跳过广告、关闭广告、圆圈倒计时、胶囊容器、左上 / 左下 / 右下位置
  • 一次跳过后不锁死:同一 App 内的第二个全屏广告、窗口切换、熄屏恢复后继续工作
  • 部分已适配的页面在 Android 11 及以上可通过本地截图辅助识别;两帧确认后才尝试点击
  • 白名单静默:桌面、系统设置、系统 UI、输入法及敏感应用不参与检测
  • 内置机上运行诊断,不需要数据线就能看到"为什么没跳"

v1.2.14 新增可选的最近任务锁定入口,并完善后台运行说明。用户需在系统最近任务界面手动锁定卡片,效果取决于手机系统;此入口不代表服务不会被系统停止。

使用

安装发布页的安装包后,按首页引导在系统设置中开启无障碍服务。首页显示服务已连接后即可退出界面使用;如遇未跳过的广告,可通过 使用指南 → 运行诊断 查看记录。

若经常遇到后台被清理,可按首页引导允许后台运行,并点击 经常被清理?点击设置最近任务锁定,打开独立卡片后在系统最近任务中手动锁定。普通主页默认不显示在最近任务中,该卡片仅在用户主动打开时出现。

部分游戏或清理工具会触发系统清理其他后台应用,使服务断开,即使无障碍开关仍处于开启状态。这类系统清理不等同于应用自身崩溃;若首页显示服务未连接,可在系统无障碍设置中关闭后重新开启。

它做不到什么(能力边界)

诚实列出,避免期待错位:

做不到的事 原因
跳过所有没有无障碍节点的广告 图像辅助识别只覆盖部分已适配的页面,不是通用屏幕文字识别
跳过白名单内的应用 桌面、系统及敏感应用被排除在自动检测之外
跳过纯视频贴片(片头/片中)广告 已列入文本黑名单,避免误触播放器
自动恢复被系统撤销的无障碍授权 需要 WRITE_SECURE_SETTINGS,普通应用无权,只能人工重开
保证服务永不被系统停止 后台管理或其他应用触发的系统清理仍可终止进程,允许后台运行和锁定卡片也不能保证避免

隐私

不联网、不收集任何数据、不写入外部存储。截图仅在本机用于判断,诊断预览保存在内存中;诊断日志只写在应用私有目录(filesDir/skip_diag.log,上限 240 行),卸载即清除。

构建

环境要求:JDK 17、Android SDK 35、Gradle 9.1 + AGP 9.0.1。 本仓库不包含 Gradle wrapper(gradlew),需要自备 Gradle 或先执行 gradle wrapper 生成。

# 1) 指向本机 Android SDK
echo "sdk.dir=<你的 Android SDK 路径>" > local.properties

# 2) 只编译校验(不产出 APK)
gradle compileReleaseKotlin

# 3) 产出调试 APK
gradle assembleDebug
# 产物:app/build/outputs/apk/debug/app-debug.apk

签名:app/build.gradle.kts 从根目录 signing.properties 读取口令,也支持环境变量 SKIPAPP_STORE_PASSWORD / SKIPAPP_KEY_PASSWORD。signing.properties、*.keystore、 local.properties 均已被 .gitignore 排除,不要提交。没有密钥库时可用 keytool -genkey 自行生成,或去掉 signingConfig 后打未签名包。

测试

发布前已进行本地回归验证,覆盖节点匹配、图像识别、截图确认与误触反例。测试素材、设备截图及排查日志不包含在本仓库中;本地通过不代表所有设备和广告都能跳过。

运行诊断(无需 adb)

App 内:使用指南 → 🔎 运行诊断

  • 服务状态、扫描帧数、命中候选次数、已发出点击次数(节点 / 手势分列)、系统拒收次数
  • 最近一次扫描的包名与 Activity 类名
  • 写着「跳过」却被拒的控件:文本、id、类名、位置、窗口、状态位、拒绝原因(中文)
  • 识别不到跳过节点时,显示本段扫描情况及可用的截图判定
  • 最近落盘记录可能包含不同运行过程,不能单凭它们确定服务退出原因

目录结构

skipapp/
├── app/src/main/
│   ├── AndroidManifest.xml                       主界面 + 无障碍服务声明,零权限
│   ├── java/com/antigravity/skipapp/
│   │   ├── SkipAccessibilityService.kt           核心跳过引擎
│   │   ├── MainActivity.kt                       主界面与授权引导
│   │   ├── RecentLockActivity.kt                 可选的最近任务锁定卡片
│   │   ├── DiagActivity.kt                       机上运行诊断页
│   │   ├── DiagStore.kt                          本地诊断记录
│   │   └── 其他源码                              图像识别与观察记录
│   └── res/                                      布局 / 文案 / 配色 / 图标 / 无障碍配置
├── build.gradle.kts  settings.gradle.kts  gradle.properties
├── app/build.gradle.kts  app/proguard-rules.pro
└── LICENSE

已知限制与注意事项

  • 无障碍服务由系统绑定,允许后台运行或调整电池限制可能有帮助,但无法保证服务始终不被系统停止。
  • 无障碍开关开启表示已授权;首页还会显示服务是否实际连接。若未连接,可在系统无障碍设置中关闭后重新开启。
  • 匹配层刻意保守:宁可漏跳,也不点头像、搜索、静音、客服、会员购买、教程跳过。

许可

MIT。欢迎提 Issue 与 PR,特别是新的真实广告形态——语料越接近真机,规则越可靠。

About

Android 开屏广告自动跳过工具。0 权限、无网络依赖、低功耗零分配架构,内置无数据线机上运行诊断。

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages