GKD (屏幕自动化工具)
GKD 是一款基于无障碍、高级选择器、订阅规则的自定义屏幕点击 Android 应用。通过自定义规则,在指定界面满足特定条件时,自动点击特定的节点或位置,实现快捷操作和跳过流程等功能。
核心概念
什么是 GKD
- 无障碍自动化: 基于 Android 无障碍服务实现屏幕操作
- 高级选择器: 类似 CSS 选择器的语法,支持复杂节点定位
- 订阅规则: JSON5 格式的规则配置,支持本地和远程订阅
- 快照审查: 网页工具辅助调试和验证选择器
主要功能
- 快捷操作: 简化重复流程,如自动确认电脑登录
- 跳过流程: 自动点击启动时的烦人流程
- 自定义规则: 灵活配置各种自动化场景
按优先级分类的规则类别
| 优先级 | 类别 | 影响程度 | 前缀 | 规则数 |
|----------|----------|--------|--------|-------|
| 1 | 选择器语法 | 关键 | selector- | 6 |
| 2 | 性能优化 | 高 | optimization- | 2 |
| 3 | 订阅规则 | 高 | subscription- | 2 |
| 4 | 实际应用 | 高 | application- | 3 |
| 5 | 隐私保护 | 中等 | privacy- | 1 |
所有 14 条规则
选择器语法 (关键)
| 规则 | 文件 | 摘要 |
|------|------|---------|
| 使用 @ 符号标记目标节点 | selector-use-at-symbol.md | 明确标记需要点击的目标节点,避免误操作 |
| 理解选择器从右到左的匹配顺序 | selector-match-order-right-to-left.md | 选择器采用从右到左匹配,与直觉相反 |
| 正确处理嵌套转义字符 | selector-escape-characters.md | 考虑 GKD、JSON 和正则表达式的多层转义 |
| 理解选择器操作符优先级 | selector-operator-precedence.md | && 优先级高于 ||,需要正确分组 |
| 优先选择可点击节点 | selector-preferred-clickable-node.md | 优先选择 clickable=true 的节点,提高点击成功率 |
| 处理复选框状态 | selector-checkbox-state.md | 正确处理复选框的勾选状态,避免误操作 |
性能优化 (高)
| 规则 | 文件 | 摘要 |
|------|------|---------|
| 利用快速查询优化选择器性能 | selector-fast-query-optimization.md | 使用特定格式触发 Android API 的快速查询 |
| 全局与局部快速查询 | selector-fast-query-global-local.md | 理解全局快速查询和局部快速查询的区别和应用 |
订阅规则 (高)
| 规则 | 文件 | 摘要 |
|------|------|---------|
| 使用 JSON5 格式编写订阅规则 | subscription-json5-format.md | 支持无引号键名、注释等便利特性 |
| 正确使用 key 值规范 | subscription-key-usage.md | 规则组 key 值的唯一标识和递增规范 |
实际应用 (高)
| 规则 | 文件 | 摘要 |
|------|------|---------|
| 开屏广告通用规则 | application-splash-ad-general.md | 适用于大部分应用的开屏广告处理规则 |
| 弹窗广告处理规则 | application-popup-ad-rule.md | 各类弹窗广告的通用处理方案 |
| 卡片广告选择器 | application-card-ad-selector.md | 卡片式广告的定位和点击规则 |
隐私保护 (中等)
| 规则 | 文件 | 摘要 |
|------|------|---------|
| 保护快照中的隐私信息 | snapshot-privacy-protection.md | 处理截图和节点信息中的敏感数据 |
核心技能
选择器语法
| 技能 | 描述 | 参考文件 | |------|------|----------| | 选择器基础语法 | 类似 CSS 选择器的语法结构 | selector | | 属性选择器 | 节点属性匹配和逻辑表达式 | selector-attr | | 关系选择器 | 节点间关系定位(父子、兄弟等) | selector-connect | | 选择器示例 | 实际应用场景的选择器写法 | example |
节点属性方法
| 技能 | 描述 | 参考文件 | |------|------|----------| | 节点属性 | Android 节点可用的属性列表 | node-attributes | | 类型方法 | null、boolean、int、string 类型的方法 | type-methods | | 上下文方法 | context 和 global 类型的特殊方法 | context-methods |
订阅规则
| 技能 | 描述 | 参考文件 | |------|------|----------| | 订阅规则格式 | JSON5 格式的规则配置 | subscription | | 应用规则 | 针对特定应用的自动化规则 | app-rules | | 全局规则 | 跨应用的通用规则配置 | global-rules |
优化技巧
| 技能 | 描述 | 参考文件 | |------|------|----------| | 查询优化 | 选择器性能优化技巧 | optimize | | 快速查询 | 利用 Android API 加速节点查找 | fast-query | | 主动查询 | 从根节点开始的查询优化 | enforce-query |
快照工具
| 技能 | 描述 | 参考文件 | |------|------|----------| | 快照审查 | 网页工具调试和验证选择器 | snapshot | | 快照抓取 | 多种方式获取界面快照 | capture-snapshot | | 快照分享 | 上传和分享快照文件 | upload-snapshot |
实际应用场景
| 技能 | 描述 | 参考文件 | |------|------|----------| | 通用选择器 | 各种广告场景的通用规则 | Selectors | | 复选框状态 | 处理复选框的勾选状态 | checkbox-state | | 快速查询优化 | 全局和局部快速查询技巧 | fast-query | | Key 值规范 | 规则组 key 值的正确使用 | key-usage | | 优先点击可点击节点 | 提高点击成功率的技巧 | preferred-clickable-node |
快速参考
选择器基础语法
@LinearLayout > TextView[id=`com.byted.pangle:id/tt_item_tv`][text=`不感兴趣`]
订阅规则模板
{
id: 'com.zhihu.android',
name: '知乎',
groups: [
{
key: 0,
name: '开屏广告',
rules: { matches: 'TextView[id="com.zhihu.android:id/btn_skip"]' },
snapshotUrls: ['https://i.gkd.li/i/13070251'],
},
],
}
属性操作符
| 操作符 | 名称 | 说明 |
|--------|------|------|
| = | 等于 | 完全匹配 |
| ^= | 以...开头 | 字符串前缀匹配 |
| *= | 包含... | 字符串包含匹配 |
| $= | 以...结尾 | 字符串后缀匹配 |
| ~= | 正则匹配 | 正则表达式匹配 |
关系操作符
| 操作符 | 名称 | 说明 |
|--------|------|------|
| + | 前置兄弟节点 | 左侧节点是右侧节点的前一个兄弟 |
| - | 后置兄弟节点 | 左侧节点是右侧节点的后一个兄弟 |
| > | 祖先节点 | 左侧节点是右侧节点的祖先 |
| < | 直接子节点 | 左侧节点是右侧节点的直接子节点 |
| << | 子孙节点 | 左侧节点是右侧节点的子孙 |
开发流程
- 分析目标界面: 使用快照工具获取界面结构
- 编写选择器: 使用选择器语法定位目标节点
- 配置订阅规则: 编写 JSON5 格式的规则配置
- 测试验证: 在 GKD 应用中测试规则效果
- 优化性能: 使用快速查询等优化技巧
参考资料
| 参考资料 | 涵盖内容 | |----------|----------| | what-is-gkd | GKD 基本概念和使用场景 | | selector | 完整的选择器语法说明 | | node | 节点属性方法参考 | | subscription | 订阅规则配置指南 | | optimize | 性能优化技巧 | | snapshot | 快照工具使用指南 | | example | 实际应用示例 |
注意事项
- 选择器匹配顺序是从右往左匹配
- 正则表达式在不同平台可能有差异
- 使用
@标记目标节点 - 嵌套转义字符需要特别注意
- 快照分享需要使用正确的公开链接
Scan to join WeChat group