Skip to content

Releases

HyperPGuard 1.8.3

Choose a tag to compare

@github-actions github-actions released this 12 Nov 06:17

感谢您使用 HyperPGuard。

这一版没有改动拦截逻辑,改的是公开描述与界面文案:把过于具体的实现细节收回来,只说明「能做什么」,不在公开文档里逐条列出目标组件、包名与上报地址。

调整

  • 「覆盖组件」表改为按能力分类(统计与埋点 / 设备与位置 / 行为记录 / 诊断与反馈 / 运营商侧 / 输入法 / 广告与商店),不再列出包名
  • 「拦截层次」按四层重写(采集入口 / 本地存储 / 对外接口 / 网络出口,方法层作兜底),不再写具体 API 与数据库表名
  • 「参考来源」保留致谢与项目名,去掉其中的域名与包名细节
  • 移除界面预览截图——截图里含组件名与上报地址
  • 界面文案收敛两处:路径规则说明不再出现具体路径,行为库状态说明不再出现数据库文件名

免责声明更新到 1.15

  • 新增一条:权利人认为本项目某项描述或实现不当,可通过 Issues 或公开渠道提出,核实后调整或移除
  • 条款版本变更,升级后首次打开会再展示一次摘要,点「我已阅读」即可

说明

  • 拦截行为、开关默认值、作用域声明全部未变,实际拦截效果与 1.8.2 一致
  • 精确的拦截判据仍保留在仓库的 docs/RULES.md,README 只描述能力与边界

全部提交:v1.8.2...v1.8.3

HyperPGuard 1.8.2

Choose a tag to compare

@github-actions github-actions released this 12 Nov 05:41

感谢您使用 HyperPGuard。

这一版修的是 1.8.1 引入的一处误判:从 Android 11 起,应用默认只能看到自己在清单里声明过的包,模块没有声明 <queries>,于是 PackageManager 查不到这些系统组件,界面把已经安装的组件当成了「本机未安装」。

修复

  • AndroidManifest.xml 增加 <queries>,按 scope.list 逐个声明 19 个包名,查询恢复正常
  • 受同一判断影响的三处一并恢复:
    • 「自检」里给已安装组件误加的「(未安装)」标注
    • 组开关点击时被误判为「本机未安装」而拒绝发作用域请求(表现为点了没反应)
    • 「全部启用」跳过已安装组件
  • 用精确包名声明,不用 QUERY_ALL_PACKAGES

说明

  • 1.8.1 的正确部分保留:真的没安装的组件仍会标「本机未安装该组件」,点击只提示不发请求
  • 如果你在 1.8.1 上遇到「模块里点不了作用域、LSPosed 管理器里却能开」,升级到本版即可

全部提交:v1.8.1...v1.8.2

HyperPGuard 1.8.1

Choose a tag to compare

@github-actions github-actions released this 12 Nov 05:26

感谢您使用 HyperPGuard。

这一版修的是「作用域加了又自动关掉」这个反馈:当某台设备上并不存在某个预装组件时,之前界面仍然让你去加作用域,加了必然失败、开关回滚,看着像被 LSPosed 反复移除。

修复

  • 分组里的提示按本机实际情况区分:没安装的组件显示「本机未安装该组件」(灰色、不可点),不再显示「未在作用域,点此加入」
  • 点击这类分组的组开关时只弹一条提示,不再向 LSPosed 发作用域请求,避免「生效一下又回滚」
  • 未安装的组件保持常显标注,切页或重进界面不会消失
  • 「全部启用」本来就会跳过未安装的包,现在与界面提示一致

说明

  • 作用域声明本身没变(scope.list 仍是 19 个包),只是把「本机没有这个组件」如实说出来,跨机型共用同一份清单
  • 如果你确认某个机型上该组件换了包名,欢迎在 issue 里给出 pm list packages | grep 的结果,我加进清单

全部提交:v1.8.0...v1.8.1

HyperPGuard 1.8.0

Choose a tag to compare

@github-actions github-actions released this 12 Nov 00:31

感谢您使用 HyperPGuard。

这一版在组件拦截页顶端加了搜索框:开关一多,翻页找某一项很费劲,现在输两个字就只剩相关的几行。

新增

  • 组件拦截页标题下新增搜索框:48dp 胶囊、左侧放大镜,输入即时过滤
  • 匹配开关的名称与描述,不区分大小写
  • 未命中的行连同它前面的分隔线一起收起;一张卡片全部未命中时连分组标题一起隐藏,不会留下一排空标题
  • 全部未命中时显示「没有匹配的开关」
  • 搜索词在深浅色切换后保留,切回来不用重新输

说明

  • 搜索只影响显示,不改任何开关状态;「全部启用 / 全部停用 / 全部重启」始终在搜索框下方
  • 放大镜为 Canvas 绘制,不引入 drawable 资源与第三方库
  • 文案已补英文(Search / No matching switches)

全部提交:v1.7.1...v1.8.0

HyperPGuard 1.7.1

Choose a tag to compare

@github-actions github-actions released this 11 Nov 15:32

感谢您使用 HyperPGuard。

这一版修的是「界面上的开关状态和实际拦截行为不一致」:默认值原先在界面与 hook 两处各写一份,1.6.12 改搜狗剪贴板默认值、1.6.11 加百度语音时都只改了一处,结果界面显示关闭、进程里却仍然装着 hook。

修复

  • 默认值收敛到 Config.DEFAULTS 一处(90 项),界面与 hook 侧统一从 Config.def(key) 取,调用点不再写字面默认值
  • 搜狗「剪贴板采集」与百度「语音上传」在 1.6.11–1.6.13 上界面显示关闭、hook 仍然生效;本版起两侧一致
  • 1.6.12 的三个旧键(block_sogou_kpi2、block_sogou_instant、block_mitype_hosts)补上迁移:旧键任一为关则新键取关,新键已写过值时不动;迁移标记单独存放,不随 pg 同步
  • hookBySignature 补记跳过的类名(前 5 个),allByName 兜住 getDeclaredMethods() 的异常,AutoValue 类里的运行时缺失类型不再冒到调用方

文档

  • docs/RULES.md、README.md:小米输入法的击键统计据第三方静态分析经 OneTrack#track 发出,由 OneTrack 方法层覆盖;原来写的「无稳定域名,未覆盖」会让人去找一个不存在的独立上报通道

说明

  • 除上述默认值与迁移外,开关划分、拦截规则与作用域逻辑未改动
  • 结构自查新增三项(默认值表与引用双向核对、调用点不许写字面默认值、I18n 同一个中文键只能登记一次),CI 改用 --strict

致谢

  • @KANGKKKKKKK
    • PR #20:默认值收敛到 Config.DEFAULTS、1.6.12 三个旧键的迁移、Hooks.allByName 兜住反射异常、自查脚本新增三项检查
    • PR #21:CI 增加 pull_request 触发,改动分支在合并前也能拿到构建结果
    • Issue #22:定位到小米输入法击键统计经 OneTrack#track 发出,据此更正了文档里「未覆盖」的说法

全部提交:v1.7.0...v1.7.1

HyperPGuard 1.7.0

Choose a tag to compare

@github-actions github-actions released this 11 Nov 15:01

感谢您使用 HyperPGuard。

这一版把单页长列表拆成三页,底部换成悬浮玻璃导航栏,支持点底栏、拖底栏、左右滑页面三种切页方式。

界面

  • 底部三个入口:主页、组件拦截、关于;「全部启用 / 全部停用 / 全部重启」移到组件拦截页顶端
  • 底栏为 64dp 悬浮圆角容器,左右各 26dp 内缩:40% 半透明底 + 下层背景模糊 + 上下渐变高光描边,浅色 / 深色两套配色
  • 指示器是一枚玻璃胶囊:用 BitmapShader 取底栏模糊图对应区域,再叠 10% 黑(深色为 10% 白)与渐变描边
  • 图标为 Canvas 自绘:房子(主页)、拼图块(组件拦截)、圆圈感叹号(关于),选中态在实心与描边之间切换
  • 关于页去掉卡片内多余的「关于」小标题,免责声明入口保留;「版本」行与其余行左右对齐

交互

  • 三种切页方式共用同一条弹簧曲线:点底栏、在底栏上拖动、左右滑动页面
  • 胶囊位置的弹簧与 KernelSU 的 DampedDragAnimation 一致(spring 刚度 1000、临界阻尼);页面吸附用 miuix 的 PagerNavigationSpringSpec(stiffness 322.2、dampingRatio 0.9、阈值 0.5px)
  • 滑动页面过半即切换底栏选中态;点底栏切页的动画期间不回改选中态,胶囊与图标不会来回跳
  • 按住底栏时胶囊放大 1.07 倍并淡出,手指未松开前保持放大,松手且胶囊到位后才缩回
  • 拖动底栏时胶囊跟手,快速拖动有横向拉伸,松手按速度或距离吸附到最近一页
  • 三页各自保留滚动位置;深浅色切换后停在当前页

说明

  • 开关、规则、作用域联动、弹窗逻辑均未改动,只是重新分页
  • 「清理日志缓冲」的说明改为准确表述:只清 logcat 文本缓冲,不涉及模块配置与行为库
  • 底栏与图标均为纯 Canvas 绘制,不引入 drawable 资源与第三方运行时依赖
  • 胶囊的放大倍率取 1.07,上限由「胶囊宽 = 满格、左右各只剩 4dp 内边」算出,任何屏宽下都不会越出底栏
  • 界面参数参考了 KernelSU 与 compose-miuix-ui / miuix 的公开实现,逐项对照后重写,未复制源码,来源与许可见 NOTICE 与 README 的「参考来源」

全部提交:v1.6.13...v1.7.0

HyperPGuard 1.6.13

Choose a tag to compare

@github-actions github-actions released this 11 Nov 11:21

感谢您使用 HyperPGuard。

这一版把 1.6.12 拆得过细的输入法开关合并回来:影响同一件事的拦截归为一类,开关描述里写明可能的后果。

调整

  • 搜狗输入法:kpi2 与 instantpb 合回「统计上报」一个开关,与「剪贴板采集」共两项
  • 小米输入法:OneTrack 方法层与 tracking/sdkconfig 域名合回「统计埋点」一个开关
  • 百度输入法:统计 SDK 与语音 ASR 上传保持两项
  • 讯飞输入法:统计 SDK 一项
  • 每个开关的描述补上「后果」:只停统计 / 关闭后剪贴板历史可能不可用 / 语音仍可用但不再上传 ASR 数据

说明

  • 默认值不变:百度语音上传、搜狗剪贴板采集默认关闭,其余默认开启
  • 拦截规则未改动,只调整开关划分与文案
  • 1.6.12 的 block_sogou_kpi2、block_sogou_instant、block_mitype_hosts 三个键不再使用,回退到 block_sogou_pingback 与 block_mitype_track

全部提交:v1.6.12...v1.6.13

HyperPGuard 1.6.12

Choose a tag to compare

@github-actions github-actions released this 11 Nov 11:13

感谢您使用 HyperPGuard。

这一版把输入法的拦截拆成逐项开关:每个域名、每类方法层、剪贴板各占一个开关,可以只开需要的那一项。

调整

  • 搜狗输入法:kpi2 统计、instantpb 统计、剪贴板采集拆成三个开关
  • 小米输入法:OneTrack 方法层与 OneTrack 域名拆成两个开关
  • 百度输入法:统计 SDK、语音 ASR 上传保持两个开关
  • 讯飞输入法:统计 SDK 一个开关
  • 默认值按「影响功能的默认关」:百度语音上传、搜狗剪贴板采集默认关闭,其余默认开启

说明

  • 关闭某一项只停对应链路,不影响同组其它项
  • 剪贴板开关关闭后,搜狗的剪贴板历史可能不可用;语音开关关闭后,语音输入仍可用,只是不再上传 ASR 数据
  • 拦截规则本身未改动,只调整开关粒度与默认值

全部提交:v1.6.11...v1.6.12

HyperPGuard 1.6.11

Choose a tag to compare

@github-actions github-actions released this 11 Nov 11:06

感谢您使用 HyperPGuard。

这一版加入三组新拦截:MSA 开屏广告、网络管理服务与 AI 内容识别的 OneTrack 埋点、四个预装输入法的统计与搜狗剪贴板采集。规则与实现由 @KANGKKKKKKK 提交(#18、#19),本地合并时补了两处调整。

新增

  • MSA 开屏广告:requestSplashScreen 系列返回空 Intent,应用自身的启动页不受影响
  • 网络管理服务(com.miui.wmsvc):OneTrack 埋点 + tracking.*.miui.com / sdkconfig.*.xiaomi.com
  • AI 内容识别(com.xiaomi.aicr):OneTrack 埋点 + 同上域名,本地识别与推理不受影响
  • 搜狗输入法:kpi2 / instantpb 统计域名,以及 ClipboardLogHelper 的剪贴板内容记录
  • 小米输入法:OneTrack 埋点(自研击键统计类名混淆且无稳定域名,未覆盖)
  • 百度输入法:com.baidu.stats 统计 SDK、com.baidu.speech.utils.analysis 的 ASR 采集上传
  • 讯飞输入法:com.iflytek.statssdk 统计 SDK
  • 新增公共 TrackHooks,MSA / wmsvc / aicr / 输入法共用同一套 OneTrack 收口

调整

  • 输入法的埋点拦截改为「整包 void 方法,排除 init / set / start / register 等控制方法」,避免统计 SDK 带坏状态运行
  • 百度「语音采集上传」默认关闭:影响语音链路,需要时手动开
  • 组开关点击方向修复并入本版(1.6.10 已单独发过,此处只影响从 1.6.9 及更早升级的用户)

说明

  • 作用域由 13 个包增加到 19 个;新包需要在 LSPosed 管理器勾选,首次点开对应组开关时 LSPosed 会发「作用域请求」通知
  • 拦截规则只停埋点与上报,不影响输入、候选、词库与语音输入本身的可用性
  • 免责声明、界面与授权逻辑未改动

全部提交:v1.6.10...v1.6.11

HyperPGuard 1.6.10

Choose a tag to compare

@github-actions github-actions released this 11 Nov 10:37

感谢您使用 HyperPGuard。

这一版修复组开关的点击方向:开启状态点一下会把应用移出作用域,关闭状态点一下会请求加入,不再是反的。

修复

  • PgSwitch 的点击回调在切换后取反,导致上报的目标状态与用户点击相反:开着的组点「关」发出的是「加入作用域」,关着的组点「开」发出的是「移出作用域」
  • 改为点击时只上报 !isChecked(),自身不翻转,等作用域确认后再落位;子项开关与组开关状态保持一致(组关时子项禁用)
  • 无障碍点击(ACTION_CLICK)与手指触摸走同一路径,不再出现「无障碍点一下只翻转、不请求作用域」

说明

  • 影响 1.6.5 至 1.6.9:组开关在作用域内的组上表现为「关不掉」,在作用域外的组上表现为「打不开」
  • 首次点开一个不在作用域的组时,LSPosed 会发「作用域请求」通知,需要在通知或管理器里允许后才会生效
  • 拦截规则、默认值与作用域范围未改动

全部提交:v1.6.9...v1.6.10