简体中文 | English
面向 HyperOS 1 / Android 14 的 CustoMIUIzer 独立维护版。
本项目以 MonwF/customiuizer v24.10.12 作为 Android 14 功能语义参考,但使用独立包名、版本线、签名、现代 libxposed API 和 发布流程,不是上游官方版本。
| 项目 | 状态 |
|---|---|
| 稳定版本 | r14.12.0 |
| 支持系统 | HyperOS 1 / Android 14(SDK 34) |
| ABI | arm64-v8a |
| applicationId | tv.withaibuild.customiuizer.r14 |
| libxposed API | min 101 / target 102 |
| Hot Reload | 关闭 |
| 构建 | Kotlin DSL / version catalog / R8 |
| 下载 | GitHub Release |
- API 101/102 单 APK 双兼容:以 API 102 编译,API 101 作为最低运行基线。
- 保守 Kotlin 化:核心 Hook、设置 UI 和工具代码迁移到 Kotlin,保留必要 Java/JVM 入口和反射边界。
- 生命周期治理:SystemUI 重建时避免重复 Hook、Receiver、Observer、Listener、 Coroutine 和动画任务。
- 热路径收敛:反射、DexKit 和资源查找移到初始化路径,绘制与高频回调减少临时对象、 重复格式化和重复状态计算。
- 功能关闭低成本:不需要的功能尽量不注册 Hook 或长期监听,不增加轮询和永久后台任务。
- 可复现发布:固定 Gradle 与直接依赖版本,Release 启用 R8、资源压缩、zipalign 和 APK Signature Scheme v2。
- APK:
CustoMIUIzer-A14-r14.12.0.apk - 大小:3,020,253 bytes
- SHA-256:
7E488C4ED011F68321A8A2E5911B61D1C35659C98CA0116500855F79F05ED80E - 签名证书 SHA-256:
3061A3DA1C2FC46B44E215D024B1BFE3A012CB4D70B90B0214FA9FC896CEF60D
仅从本项目 Release 或对应的 LSPosed 模块仓库下载。不同签名可能无法覆盖安装,处理旧 安装前请先备份设置。
- 状态栏、图标、电池、信号、网速、日期和温度;
- 控制中心、音量面板、亮度与通知行为;
- 锁屏、充电信息、媒体界面和快捷操作;
- Launcher、最近任务、文件夹、图标和桌面手势;
- 导航栏、按键、自定义动作、电源菜单和系统动画;
- 应用、权限、安装、分享、隐私应用和应用锁行为。
具体功能是否可用仍取决于 ROM 与系统应用版本。厂商更新可能改变 Hook 目标。
模块运行在 SystemUI、Launcher 和 system_server 等长驻进程中,额外成本主要取决于:
触发频率 × 单次成本 × 进程数量 × 存活时间
下表是相对于上游或早期 r14 实现的代码路径理论评估,不是实验室功耗跑分:
| 场景 | 早期实现风险 | 当前处理 | 理论影响 |
|---|---|---|---|
| 功能关闭 | Hook 或监听仍可能进入回调 | 按开关和进程决定是否注册 | 降低无效 Hook 分发与常驻开销 |
| SystemUI 重建 | Receiver/Observer/任务可能重复 | 注册幂等,资源随 owner detach | 降低重复回调、泄漏和后台工作 |
| 绘制与动画 | 重复资源查找、格式化、临时对象 | 冷路径缓存,热路径复用状态 | 降低 CPU、分配和 GC 压力 |
| 音频与周期事件 | 任务所有权不清或重复调度 | 生命周期取消,优先响应系统事件 | 降低空唤醒与残留任务概率 |
| 设置列表 | 重复遍历、过滤和去重 | 使用稳定缓存和常数时间去重 | 降低页面加载时的主线程工作 |
| 兼容失败 | 重复反射探测或日志刷屏 | 冷路径探测,单项安全停用 | 降低异常重试和重启风暴风险 |
理论上,收益最明显的场景是:关闭大量功能、SystemUI 多次重建、长时间待机,以及频繁 触发状态栏/控制中心绘制。省电潜力主要来自减少无效回调、线程调度、轮询、重复注册和 异常重试,而不是代码行数变少。
项目没有宣称固定的续航、CPU 或内存提升百分比。实际收益会受启用功能、ROM、框架、 使用习惯和系统应用版本影响,需要在同设备、同设置下用 Perfetto、Batterystats 和 内存工具对照测量。
- 仅支持 HyperOS 1 / Android 14(SDK 34)和
arm64-v8a。 - 框架必须实现现代 libxposed API 101 或 API 102。
- 不支持 Android 15、Android 16,也不保证其他 MIUI/HyperOS 版本。
- 不要与上游版或其他 CustoMIUIzer 派生模块同时启用。
targetApiVersion=102在 API 101 管理器中可能显示“面向较新 API”的提示;应以实际 加载日志和功能行为判断,不把提示本身当作错误。- API 102 Hot Reload、hook ID 和原子 replacement 当前未启用。
完整边界见 libxposed API 101/102 双兼容说明。
- 下载并安装 APK。
- 在 LSPosed/Vector 中启用模块并确认推荐作用域。
- 打开模块设置一次。
- 完整重启设备。
- 检查
system_server、SystemUI、Launcher 和常用功能。
旧包名版本不会自动迁移到当前独立包名。卸载旧模块前请先备份配置。
- 单元测试、Debug/Release、Lint、
lintRelease、lintVitalRelease通过; - R8、资源压缩、zipalign、v2 签名与 APK 元数据通过;
- API 101 依赖回编译与 API 102 正式构建通过;
- API 101 实机完成安装、整机重启和完整
full.log审计; - 未发现可归因于模块的崩溃、ANR、入口、Hook 或 API 链接错误;
- API 102 实机运行仍需在对应框架环境独立验证。
构建成功只证明静态和产物边界,不替代不同 ROM、框架与功能组合的实机测试。 完整证据、APK 摘要和未验证边界见验证记录。
需要 JDK 17 和 Android SDK:
.\gradlew.bat --no-daemon test assembleDebug
.\gradlew.bat --no-daemon clean test lint lintRelease lintVitalRelease assembleRelease签名配置位于仓库外部的 ../keystore.properties。不得提交 keystore、密码、日志、缓存
或本地构建状态。
工程方法和来源说明:
| 维度 | 本项目 | 上游参考 |
|---|---|---|
| 定位 | HyperOS 1 / Android 14 独立维护线 | Android 14 功能语义参考 |
| 包名 | tv.withaibuild.customiuizer.r14 |
上游包名 |
| Xposed API | 现代 API 101/102 单 APK | v24.10.12 使用 API 100 |
| 实现 | Kotlin-first,保留稳定 JVM 边界 | 以 Java 为主 |
| 生命周期 | 显式 owner、注销和防重复 | 保留上游实现 |
| 构建 | Kotlin DSL、version catalog、R8 | 上游独立流程 |
上游只用于核对功能原意和历史 Hook 行为,不会用旧代码覆盖当前 Kotlin/API 101/102 实现。
公开 Release 固定保留四个关键版本:
| 版本 | 定位 |
|---|---|
r14.12.0 |
当前稳定版 |
r14.8.0 |
Kotlin 基础设施回退点 |
r14.7.4 |
r14.7.x Kotlin/Coroutine 合并版 |
r14.5.0 |
独立包名、签名与发布路径基线 |
Release 标题只使用版本号。其余版本保留于 CHANGELOG、历史归档和 Git tag 中。
项目派生自 Mikanoshi/CustoMIUIzer,并参考 MonwF/customiuizer 的 Android 14 工作。 感谢 LSPosed/libxposed、DexKit 及相关开源项目维护者。