Skip to content

Repository files navigation

HyperRefine 是一个 LSPosed 模块项目,基于 libxposed API 102 与 Miuix Compose 组件库构建,使用 MiuixGuiTemplate 脚手架(Based on MiuixGuiTemplate 0.4.1)创建,提供完整的 Hook 二次封装接口与可复用 UI 组件。当前 Hook 目标为系统界面(com.android.systemui):控制中心音量条 / 亮度条与侧边音量条的百分比数值显示;以及安全服务(com.miui.securitycenter):隐藏快充加速通知;另预留系统桌面(com.miui.home)占位。


功能

模块功能(目标应用 com.android.systemui / com.miui.securitycenter)

  • 音量条 / 亮度条百分比数值显示(适配 HyperOS 4)— 控制中心音量条 / 控制中心亮度条(含二级亮度条)/ 侧边音量条三处独立显示百分比数值
    • 三处各自独立配置:开关、字号、字重、颜色
    • 字号 8–24(默认 13);字重:细体 / 常规 / 中等 / 半粗 / 粗体 / 特粗(默认特粗)
    • 颜色跟随图标:低值灰色、高值彩色;关闭跟随则固定灰色
    • 侧边音量条附加:百分比位置(音量区域上方悬浮 / 音量条内部上方)、长按打开音量面板并隐藏三个点按钮(默认关闭)
  • 隐藏快充加速通知(适配 HyperOS 4,目标 com.miui.securitycenter)— 隐藏 90W 及以上快充机型在快充加速时由安全服务发布的快充加速通知(「省电与电池重要通知」类别);「进入提醒」与「退出提醒」各自独立开关
  • 多级页面搜索 — 功能页搜索支持多级嵌套(「系统界面 → 外观 → 各位置」),摘要显示父 / 子路径,命中直接打开对应页面

底层框架(构建于脚手架 MiuixGuiTemplate)

  • Hook 封装 — hookBefore / hookAfter / hookReplace / intercept / findAndHook* / hookAll* / hookClassInitializer / invokeOriginal,统一句柄管理
  • 原生 Hook 封装 — NativeHookHelper / BaseNativeHook / BaseLoad.initNativeHook,与 JavaHook 对称的一键接入(声明、加载、开关、状态、安全兜底);面向 Rust 应用(flutter_rust_bridge / 纯 Rust 库),详见原生 Hook 指南
  • 版本 / 设备筛选 — 统一的 HookVersionGate 与 deviceScope:版本支持 > <、多重规则(AND/OR),可按 Android / HyperOS / MIUI / 应用版本;设备支持手机 / 平板 / 折叠屏区分,默认各设备通用,并可在设置中手动覆盖当前设备类型
  • 安全模式 — 设置页「模块」分区声明安全模式状态并提供入口,二级页逐应用开关安全模式并查看崩溃计数
  • 主动申请作用域 — 启用选项时自动为未授权目标申请作用域
  • DexKit 缓存 — 带 JSON 持久化、版本失效校验与文件锁的 DexKit 缓存,支持 Root 清空
  • 统一配置系统 — 自定义键名、默认值、持久化、跨进程镜像、JSON 导出导入
  • 组件与 Hook 绑定 — 开关 / 箭头 / 下拉 / 滑块 / 复选框 / 单选 / 文本卡片,标题接入全局搜索
  • Hook 状态展示 — 规则生效时标题显示为绿色、失败为红色,未应用时保持默认色(零额外占位)
  • 二级页面模板 — 独立 Activity,自动套用主题与背景模糊配置
  • 应用内检查更新 — 设置页「更新」分区支持「启动时自动检查」与手动检查;发现新版本弹窗展示版本对比与 Release 更新说明,确认后跳转 GitHub Release 下载页

系统要求

  • 已安装 LSPosed(支持 libxposed API 102)
  • Android 15+(minSdk 35)
  • 音量条 / 亮度条百分比功能面向 HyperOS 4 系统界面
  • 清空 DexKit 缓存需要 Root 权限

构建

# 克隆项目
git clone https://github.com/Ianzb/HyperRefine
cd HyperRefine

# 设置 JDK 25(CI 使用 temurin 25)和 Android SDK
# 编辑 local.properties 指向你的 SDK 路径

# 构建 Debug APK
./gradlew assembleDebug

# APK 输出位置(仅 arm64-v8a)
# app/build/outputs/apk/debug/app-arm64-v8a-debug.apk

发布与 CI

仓库内置 GitHub Actions 工作流:

  • .github/workflows/ci.yml — 推送到 master(改动 app/**、hook/**、Gradle 文件)或提交 PR 时构建 Debug APK,上传为 Actions Artifacts(保留 7 天)。
  • .github/workflows/release.yml — 推送 v*.*.* 标签或手动触发时构建签名 Release APK,发布到 GitHub Release(Release Notes 取自 changelog.md 对应版本段落)并上传 Artifact(保留 30 天);配置 Telegram 后可自动推送。

Release 签名配置(二次开发须自行配置)

Release 构建通过 signingConfigs.release 读取环境变量(见 app/build.gradle.kts),keystore 固定为根目录 release.keystore(已加入 .gitignore,切勿提交):

环境变量 / Secret 说明
KEYSTORE_PASSWORD keystore 密码
KEY_ALIAS 密钥别名(未设置时默认 release)
KEY_PASSWORD 密钥密码

1. 生成本地 keystore(alias 换成你自己的):

keytool -genkeypair -v -keystore release.keystore \
  -alias release -keyalg RSA -keysize 2048 -validity 10000

2. 本地构建签名包(PowerShell):

$env:KEYSTORE_PASSWORD="你的keystore密码"
$env:KEY_ALIAS="release"
$env:KEY_PASSWORD="你的密钥密码"
./gradlew assembleRelease
# 输出:app/build/outputs/apk/release/app-arm64-v8a-release.apk

3. 配置 GitHub Secrets(仓库 Settings → Secrets and variables → Actions):

Secret 内容
KEYSTORE_BASE64 release.keystore 的 Base64:[Convert]::ToBase64String([IO.File]::ReadAllBytes("release.keystore"))
KEYSTORE_PASSWORD keystore 密码
KEY_ALIAS 密钥别名
KEY_PASSWORD 密钥密码
CHANNEL_ID / BOT_TOKEN (可选)Telegram 推送;不需要时删除 release.yml 的「上传到Telegram」步骤
MESSAGE_THREAD_ID (可选)多话题群(Forum)指定话题的 message_thread_id;不填则发到默认 / General 话题

4. 发布:手动运行 Release Build 工作流并填写版本号(会自动 versionCode +1 并提交),或先改好 versionName 再推送 v1.0.0 形式的标签。

只开发 / 只构建 Debug 时无需上述配置,assembleDebug 不受影响;未放置 release.keystore 或未设置环境变量时请勿运行 assembleRelease。


开发

  1. 在 :hook 模块 META-INF/xposed/scope.list 中声明作用域包名(当前为 com.android.systemui、com.miui.home)。
  2. 新建 BaseLoad 并在 HookEntryRegistry 中登记目标包(当前为 SystemUiLoad → com.android.systemui;HomeLoad → com.miui.home 为占位)。
  3. 新建 BaseHook 实现具体 Hook 逻辑,必要时用 DexKit 定位成员。
  4. 在 featureSpecs()(或自定义注册处)声明 OptionSpec,UI 会自动渲染对应组件;子页面功能可用 HookSubPage 并入功能页搜索。
  5. 构建并在 LSPosed 中验证,页面标题变绿即生效。

需要修改的完整清单(图标、链接、模块元数据、Hook、配置项等)见 二次开发指南。

实现指定应用的 Hook、或参考其他模块复刻功能时的完整流程(含真机 adb 扫描授权、隐私边界与开源合规)见 模块开发工作流。

详细接口说明见 接口文档。


第三方库


参考与致谢

HyperRefine 基于个人 Android 模块开发脚手架 MiuixGuiTemplate 创建,开发过程中参考了若干开源项目与其他模块项目,谨向相关作者与贡献者致谢。具体致谢清单统一维护在应用内「关于 → 第三方许可证与致谢」页面,文档不再逐一展开;参考或复刻第三方项目时的合规流程见 模块开发工作流。


赞助支持

如果 HyperRefine 对你有帮助,欢迎通过 爱发电 赞助支持作者,你的支持是项目持续维护与更新的动力。


许可证

本项目以 GNU Lesser General Public License v3.0(LGPL-3.0)开源。

本仓库同时包含 Apache-2.0 许可的第三方代码(自 miuix 等引入的文件保留其原始版权与许可声明)。按照 LGPL-3.0 的传染性要求,本项目整体以 LGPL-3.0 授权分发;衍生作品须以 LGPL-3.0 或 GPL-3.0 授权公开,并保留应用内「参考与致谢」与 Based on 标注。

About

No description, website, or topics provided.

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages