Skip to content

[Bug] 1.0.15 / REDMI K100 Pro Max (HyperOS, Android 17):用 pm install 覆盖安装后卡「引擎或遗留进程尚未确认停止」,实际无任何引擎进程 #1124

Open

Description

@qq1375828505

环境

项 值
App 1.0.15(versionName 1.0.15 / versionCode 11101246 / targetSdk 28)
设备 REDMI K100 Pro Max(ro.product.model=M098FE,ro.product.device=songyuan,Redmi / Xiaomi)
系统 小米 HyperOS · Android 17(SDK 37,security patch 2026-10-01) · arm64-v8a
升级路径 1.0.13(11080135)→ 1.0.15(11101246),用 shell 覆盖安装(原因见 #812:HyperOS 安装器把 1.0.15 判高风险,禁止安装且无放行入口)
安装方式 Shizuku v13(无线调试 adb 模式)→ pm install -r -d /data/local/tmp/dsh.apk

现象

覆盖安装完成后打开 1.0.15,直接进入「安装未完成」页,更新根本没开始:

引擎或遗留进程尚未确认停止,更新未开始。请先停止本机引擎,等待清理完成后重试;不要重置环境。

按钮:查看日志 / 重试 / 导出诊断包 / 改用远程主机。

点「重试」无效,页面不变。

关键点:根本没有任何引擎进程可以「停止」

出问题时实测的系统状态(shell 侧,Shizuku):

# ps -A 里属于该 App 的进程只有一条
u0_a157  23501  2182  20593380  302920  S  io.github.ccch1mneyyy.dsh_app
# 没有 libproot.so / node / dsh 任何子进程(另一条 libproot.so 属于另一个 App,非本 App)
# ss -lntup 里也没有该 App 的监听端口

也就是说:上一版 App 进程在 pm install -r 覆盖时被系统杀掉,留下的是锁 / 标记文件(对应 #1121 里的「中途被杀留下的空锁和空标记」与「自更新残留」),而 UI 把「读到残留标记」等同于「引擎还在跑」,于是给出一条用户无法执行的指令——让人去停止一个不存在的引擎,还禁止重置环境。

我用 am force-stop 强杀并冷启动过一次 App,进程表里依旧只有主进程一条,因此这不是「进程真的没退干净」,而是标记没有接管逻辑。

与已有 issue 的关系

建议(供参考)

  1. 判定「遗留进程」时用 uid 级进程快照交叉验证:没有任何匹配进程就直接判定无残留、接管空锁,而不是让用户去"停止引擎"。
  2. 真残留时给一个可执行的入口:「强制清理残留标记并重试」,比"不要重置环境"实用。
  3. 自更新 / 外部覆盖安装后主动做一次标记自检,别把这种状态留给用户。
  4. 如果暂时不修,至少把文案改成能指导操作的说法(例如"检测到上次升级中断的残留标记,点这里清理")。

关联:#812(本机安装被 HyperOS 禁止,才走了这条路径)、#1121、#907、#913

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions