Repository navigation
Releases
HyperPGuard 1.8.3
感谢您使用 HyperPGuard。
这一版没有改动拦截逻辑,改的是公开描述与界面文案:把过于具体的实现细节收回来,只说明「能做什么」,不在公开文档里逐条列出目标组件、包名与上报地址。
调整
- 「覆盖组件」表改为按能力分类(统计与埋点 / 设备与位置 / 行为记录 / 诊断与反馈 / 运营商侧 / 输入法 / 广告与商店),不再列出包名
- 「拦截层次」按四层重写(采集入口 / 本地存储 / 对外接口 / 网络出口,方法层作兜底),不再写具体 API 与数据库表名
- 「参考来源」保留致谢与项目名,去掉其中的域名与包名细节
- 移除界面预览截图——截图里含组件名与上报地址
- 界面文案收敛两处:路径规则说明不再出现具体路径,行为库状态说明不再出现数据库文件名
免责声明更新到 1.15
- 新增一条:权利人认为本项目某项描述或实现不当,可通过 Issues 或公开渠道提出,核实后调整或移除
- 条款版本变更,升级后首次打开会再展示一次摘要,点「我已阅读」即可
说明
- 拦截行为、开关默认值、作用域声明全部未变,实际拦截效果与 1.8.2 一致
- 精确的拦截判据仍保留在仓库的
docs/RULES.md,README 只描述能力与边界
全部提交:v1.8.2...v1.8.3
HyperPGuard 1.8.2
感谢您使用 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
感谢您使用 HyperPGuard。
这一版修的是「作用域加了又自动关掉」这个反馈:当某台设备上并不存在某个预装组件时,之前界面仍然让你去加作用域,加了必然失败、开关回滚,看着像被 LSPosed 反复移除。
修复
- 分组里的提示按本机实际情况区分:没安装的组件显示「本机未安装该组件」(灰色、不可点),不再显示「未在作用域,点此加入」
- 点击这类分组的组开关时只弹一条提示,不再向 LSPosed 发作用域请求,避免「生效一下又回滚」
- 未安装的组件保持常显标注,切页或重进界面不会消失
- 「全部启用」本来就会跳过未安装的包,现在与界面提示一致
说明
- 作用域声明本身没变(
scope.list仍是 19 个包),只是把「本机没有这个组件」如实说出来,跨机型共用同一份清单 - 如果你确认某个机型上该组件换了包名,欢迎在 issue 里给出
pm list packages | grep的结果,我加进清单
全部提交:v1.8.0...v1.8.1
HyperPGuard 1.8.0
感谢您使用 HyperPGuard。
这一版在组件拦截页顶端加了搜索框:开关一多,翻页找某一项很费劲,现在输两个字就只剩相关的几行。
新增
- 组件拦截页标题下新增搜索框:48dp 胶囊、左侧放大镜,输入即时过滤
- 匹配开关的名称与描述,不区分大小写
- 未命中的行连同它前面的分隔线一起收起;一张卡片全部未命中时连分组标题一起隐藏,不会留下一排空标题
- 全部未命中时显示「没有匹配的开关」
- 搜索词在深浅色切换后保留,切回来不用重新输
说明
- 搜索只影响显示,不改任何开关状态;「全部启用 / 全部停用 / 全部重启」始终在搜索框下方
- 放大镜为 Canvas 绘制,不引入 drawable 资源与第三方库
- 文案已补英文(Search / No matching switches)
全部提交:v1.7.1...v1.8.0
HyperPGuard 1.7.1
感谢您使用 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
致谢
全部提交:v1.7.0...v1.7.1
HyperPGuard 1.7.0
感谢您使用 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
感谢您使用 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
感谢您使用 HyperPGuard。
这一版把输入法的拦截拆成逐项开关:每个域名、每类方法层、剪贴板各占一个开关,可以只开需要的那一项。
调整
- 搜狗输入法:
kpi2统计、instantpb统计、剪贴板采集拆成三个开关 - 小米输入法:OneTrack 方法层与 OneTrack 域名拆成两个开关
- 百度输入法:统计 SDK、语音 ASR 上传保持两个开关
- 讯飞输入法:统计 SDK 一个开关
- 默认值按「影响功能的默认关」:百度语音上传、搜狗剪贴板采集默认关闭,其余默认开启
说明
- 关闭某一项只停对应链路,不影响同组其它项
- 剪贴板开关关闭后,搜狗的剪贴板历史可能不可用;语音开关关闭后,语音输入仍可用,只是不再上传 ASR 数据
- 拦截规则本身未改动,只调整开关粒度与默认值
全部提交:v1.6.11...v1.6.12
HyperPGuard 1.6.11
感谢您使用 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
感谢您使用 HyperPGuard。
这一版修复组开关的点击方向:开启状态点一下会把应用移出作用域,关闭状态点一下会请求加入,不再是反的。
修复
PgSwitch的点击回调在切换后取反,导致上报的目标状态与用户点击相反:开着的组点「关」发出的是「加入作用域」,关着的组点「开」发出的是「移出作用域」- 改为点击时只上报
!isChecked(),自身不翻转,等作用域确认后再落位;子项开关与组开关状态保持一致(组关时子项禁用) - 无障碍点击(ACTION_CLICK)与手指触摸走同一路径,不再出现「无障碍点一下只翻转、不请求作用域」
说明
- 影响 1.6.5 至 1.6.9:组开关在作用域内的组上表现为「关不掉」,在作用域外的组上表现为「打不开」
- 首次点开一个不在作用域的组时,LSPosed 会发「作用域请求」通知,需要在通知或管理器里允许后才会生效
- 拦截规则、默认值与作用域范围未改动
全部提交:v1.6.9...v1.6.10