0.1.0
主要功能
- 双击状态栏后强制停止当前前台普通应用。
- 优先尝试
su -c am force-stop;SystemUI 的 SELinux 域不能执行su时,自动回退到 ActivityManager Binder。 - 成功后显示
已强制关闭<应用名>,应用名来自实际被停止应用,不写死具体软件。 - 保持单一职责:没有桌面图标、Activity、设置界面、Service、Receiver 或 Provider,静态作用域仅包含
com.android.systemui。 - 不修改、重签、替换或重新打包任何小米 APK,也不修改系统分区文件。
项目缘起
我以前很依赖 CustoMIUIzer 的“双击状态栏关闭当前应用”功能。升级到 HyperOS 4 后,原功能因 SystemUI Hook 点变化而失效,因此单独实现了这个 API102 模块,避免与综合模块的其他功能和后续适配进度耦合。
实机验证
在 Xiaomi nezha(25128PNA1C)、HyperOS OS4.0.0.10.XPACNXM、Android 17(SDK 37)、LSPosed 2.1.1-it(libxposed API 102)上验证:
- SystemUI Hook 正常安装,双击识别正常。
- 前台应用名称和包名解析正常。
su路径因 SystemUI SELinux 限制返回失败后,Binder 回退成功强制停止应用商店。- 动态 Toast 正确显示“已强制关闭应用商店”。
- 操作过程中 SystemUI 没有崩溃或重启。
- 16 个单元测试全部通过,Android lint 无问题。
以上结果只证明当前实机与系统构建;其他 HyperOS 4、Android 或 SystemUI 版本尚未宣称兼容。
安装
- 安装
StatusBarForceClose-0.1.0.apk。 - 在支持 libxposed API 102 的 LSPosed 实现中启用模块。
- 保持作用域为“系统界面” (
com.android.systemui)。 - 重启 SystemUI 或重启设备,使首次 Hook 生效。
早期测试使用 debug 证书;从 debug APK 切换到本次正式签名版本时需要先卸载旧包。后续正式版本将持续使用同一证书,可以直接覆盖升级。
兼容性与日志
- 当前最低和目标 SDK 均为 37。
- 当前 Hook 点依赖 HyperOS 4 SystemUI 的
PhoneStatusBarView类层级;结构不匹配时会停止安装 Hook,不对未知实现做模糊尝试。 - release 构建已在编译期关闭诊断,并由 R8 移除 debug 日志分支。
- 需要排障时请使用对应提交的 debug Actions artifact,并提交完整的同一次
requestId日志。