Releases: Xposed-Modules-Repo/com.wayne.statusbarforceclose
Releases · Xposed-Modules-Repo/com.wayne.statusbarforceclose
Release list
0.3.0
新增
- 新增原生设置界面,可查看 SystemUI 连接、RootService、SystemUI 后端能力和最近一次成功执行的后端与耗时。
- 新增自动、Root 优先、系统界面优先、仅 Root、仅系统界面五种执行模式。
- 新增“后台保护”,由模块记录并可逆管理自己实际修改的 Doze 白名单和后台 AppOps。
- 新增“隐藏桌面图标”。默认保持显示;隐藏后仍可从 LSPosed 模块设置入口打开,覆盖安装会保留当前选择。
执行与恢复
- SystemUI 持续绑定带协议版本、进程 generation 和随机 session token 的 Bridge,拒绝旧会话及非 SystemUI 调用。
- Bridge 使用 libsu 6.0.0 预连接 RootService,减少双击后的等待时间。
- 在任务切换、亮屏和解锁事件中按 5 秒冷却恢复可恢复的 root 连接,不建立常驻重试循环。
- SystemUI 启动时一次性判断自身强停能力;权限拒绝后对当前进程熔断,避免重复尝试无效路径。
兼容性
- Xiaomi 17 Ultra for Leica:HyperOS 4、Android 17 / SDK 37。
- OnePlus 13T (
PKX110):ColorOS 16、Android 16 / SDK 36。 - 继续使用 libxposed API 102,静态作用域只有
com.android.systemui。 - 不修改、重签、替换或重新打包任何厂商 APK,也不修改系统分区文件。
升级说明
- 可以从正式签名的
0.2.0直接覆盖安装。 - 升级后请重启 SystemUI 或重启设备,使新的 Hook 代码载入。
- 首次打开设置页时会请求一次 root 连接;KernelSU 可能仍需在管理器中手动授权。
- Debug 构建保留结构化诊断;正式 Release 在编译期关闭诊断并由 R8 移除相关分支。
0.2.0
新增
- 新增 OnePlus 13T (
PKX110) / ColorOS 16 支持。模块在检测到已验证的 Oplus SystemUI 结构时,HookPhoneStatusBarView.onFinishInflate()并附加不消费触摸事件的监听器。 - 保留 Xiaomi 17 Ultra for Leica / HyperOS 4 已验证的
dispatchTouchEventHook。两种入口共用同一套双击检测、前台任务解析、用户 ID 传递和动态 Toast。
强制停止后端
- 将主执行路径统一为 libsu 6.0.0 RootService。SystemUI 只负责发送目标包名和真实 Android 用户 ID;模块进程启动 root 进程,由 root 进程取得 ActivityManager Binder 并调用
forceStopPackage(packageName, userId)。 - 模块桥接 Service 根据 Binder 调用 UID 查询包名,只接受
com.android.systemui,不向其他应用开放强制停止能力。 - 保留 SystemUI Binder 作为 RootService 失败后的兼容回退,但跨厂商稳定使用需要设备已 root,并向本模块授予 root 权限。
- 删除已证明在 ColorOS SystemUI 中不可用的直接
su执行路径和 ContentProvider 实验路径。
实机验证
- Xiaomi 17 Ultra for Leica (
nezha/25128PNA1C):HyperOSOS4.0.0.10.XPACNXM、Android 17 / SDK 37,选择MIUI_DISPATCH,RootService root 进程记录为uid=0,成功强制停止微信并显示“已强制关闭微信”。 - OnePlus 13T (
PKX110):ColorOS 16、PKX110_16.0.10.500(CN01)、Android 16 / SDK 36,选择OPLUS_INFLATE_LISTENER,RootService 成功强制停止微信并显示同名 Toast。 - 两台设备使用同一个
0.2.0Debug APK 分别覆盖安装并重启 SystemUI;验证期间lspd和system_server保持稳定。 - 真实用户 ID 会原样传递到 root 后端。用户
999等多用户输入已由单元测试覆盖,本次说明不把它描述为新增实机验证。
包装与安全边界
- 最低系统版本由 SDK 37 调整为 SDK 36,
targetSdk保持 37,继续使用 libxposed API 102。 - APK 仍然没有桌面图标、Activity、设置界面、Provider、Receiver 或 Android 权限;新增的唯一组件是 SystemUI 显式绑定的
ForceStopBridgeService。 - 未识别的 SystemUI 类结构会 fail closed,不安装模糊 Hook。
- 不修改、重签、替换或重新打包任何厂商 APK,也不修改系统分区文件。
- Debug 构建保留完整分层日志;正式 Release 关闭诊断并由 R8 移除相关分支。
升级说明
- 可以从正式签名的
0.1.0或0.1.1直接覆盖安装。 - 首次使用
0.2.0时,请向模块授予 root 权限。 - 升级后需要重启 SystemUI 或重启设备,使新 Hook 与 RootService 桥接代码载入。
- 从早期 Android Debug 证书 APK 切换到正式签名版本时,通常需要先卸载 Debug 版。
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日志。