Skip to content

About

No description, website, or topics provided.

Resources

Stars

24 stars

Watchers

1 watching

Forks

Repository files navigation

HyperRefine 是一个 LSPosed 模块项目,基于 libxposed API 102 与 Miuix Compose 组件库构建,使用 MiuixGuiTemplate 脚手架创建,内置完整的 Hook 二次封装接口与可复用 UI 组件,当前包含百种hook功能,不仅合并了一些实用小型模块的功能,还添加了很多原创新功能。


功能

底层框架(构建于脚手架 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 绑定 — 开关 / 箭头 / 下拉 / 滑块 / 复选框 / 单选 / 文本卡片,标题接入全局搜索
  • 设备独占控制 — 配置项声明 deviceScope(手机 / 平板 / 折叠屏)后,非白名单设备上禁用灰显不隐藏,切换「当前设备类型」实时生效;hook 侧同步跳过
  • 二级页面模板 — 独立 Activity,自动套用主题与背景模糊配置
  • 应用内检查更新 — 设置页「更新」分区支持「启动时自动检查」与手动检查;发现新版本弹窗展示版本对比与 Release 更新说明,确认后跳转 GitHub Release 下载页

系统要求

  • 已安装 LSPosed(支持 libxposed API 102,Native Hook等现代特性)
  • Android 17+(minSdk 35)
  • 所有Hook功能默认仅支持 HyperOS 4(Android 17) 系统
  • 需要给予应用 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 天);配置 Telegram 后可自动推送到测试版分区。
  • .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 话题
TEST_MESSAGE_THREAD_ID (可选)测试版推送的话题 message_thread_id(同一群的另一个话题),与 CHANNEL_ID / BOT_TOKEN 配合使用;不填则跳过 CI 的「上传到Telegram」步骤

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

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


开发

  1. 在 :hook 模块 META-INF/xposed/scope.list 中声明作用域包名(当前覆盖 system、android、com.android.systemui 及多款小米系统应用,完整列表以该文件为准)。
  2. 新建 BaseLoad 并在 HookEntryRegistry 中登记目标包。
  3. 新建 BaseHook 实现具体 Hook 逻辑,必要时用 DexKit 定位成员。
  4. 在 featureSpecs()(或自定义注册处)声明 OptionSpec,UI 会自动渲染对应组件;子页面功能可用 HookSubPage 并入功能页搜索。
  5. 构建并在 LSPosed 中验证功能生效(启用开关并重启目标应用)。

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

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

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


第三方库


参考与致谢

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

通知功能独立实现,未引入参考模块的代码、资源或原生库;参考项目的来源与许可证已登记到应用内参考项目分组。

状态栏的 Wi-Fi 活动指示器隐藏、移动网络类型隐藏与双排堆叠信号同样独立实现,参考来源统一登记在应用内致谢页;功能范围与验证见 状态栏功能说明。

状态栏图标自定义的预览资源(ic_stat_sys_*)复用自 GPL-3.0 的 XiaomiHelper / HyperHelper,原始版权与许可见 资源说明;功能与交互为独立实现。


赞助支持

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


许可证

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

本仓库同时包含 Apache-2.0 许可的第三方代码(自 miuix 等引入的文件保留其原始版权与许可声明)。AGPL-3.0 与 GPL-3.0 兼容(AGPL-3.0 §13):参考或移植 GPL-3.0 项目(如 SoundMan)时,本项目整体以 AGPL-3.0 授权分发;衍生作品须以 AGPL-3.0 授权公开,并保留应用内“参考与致谢”。

About

No description, website, or topics provided.

Resources

Stars

24 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages