重启后功能失效:配置持久化问题
旧版本的配置存储问题
HyperCeiler 2.10.165 及以前版本使用 XSharedPreference 来存储功能开关的配置——XSharedPreference 是 Xposed 框架提供的一个跨进程配置读写机制,设计用于让模块 App(UI)写的配置在被 Hook 的作用域进程里可读。
但 XSharedPreference 有一个已知的兼容性问题:当作用域进程以非 root 用户身份运行时(大多数系统进程都是这样),有时会读不到配置文件里的最新值。表现就是:你在 HyperCeiler App 里明明打开了开关,也重启了作用域,但功能还是不生效——或者第一次重启生效、第二次重启又失效了。
2.10.166 起的修复
HyperCeiler 2.10.166 在 Release Notes 里明确提到:
舍弃 XSharedPreference 并使用全新的配置存储逻辑
新版本把配置存储从 XSharedPreference 换成了一种更可靠的跨进程方案,解决了这个持久化问题。同时还:
舍弃使用 prop 存储 HyperCeiler 内容,避免一些过时且无用的检测
所以如果你还在用 2.10.165 或更早版本,升级到 2.10.166 是解决配置持久化问题的最直接方法。
升级前的临时 workaround
如果暂时不能升级(比如等 OS3 分支更稳定),可以试试:
- 把 HyperCeiler App 和所有作用域进程都终止
- 手动用 root shell 进入
/data/user/0/com.sevtinge.hyperceiler/shared_prefs/目录,确认配置文件确实写入了 - 重启设备而不是单个作用域进程
升级后还是失效怎么办
如果升级到 2.10.166 还是有"重启后失效"的情况,按以下顺序排查:
- LSPosed 作用域里是不是漏勾了某个进程?
- 是不是主动安全模式已经触发(App 右上角有安全模式徽章)?
- 同时装了其他 Xposed 模块吗?冲突模块会相互覆盖配置
- 你的设备上有没有什么清理类 App(比如"手机清理"、"内存清理")会定期清空
/data分区的临时文件?