pengchujin:小米电视改用 Aerial 后短按电源键失效的原因与恢复方法
在 Aerial issue #848 中,pengchujin 记录一台 Android 9 小米电视改用 Aerial 默认桌面后短按电源键无法息屏:小米设置应用按 home 栈处理息屏时崩溃,原因是 PatchWall 被放进普通任务栈。现场通过 set-home-activity 恢复 PatchWall、重启后息屏恢复;后续计划是识别受影响机型并调整安装脚本与恢复文档。
作者原文@pengchujin现象
一台小米电视(Android 9,具体型号待补)装好 Aerial 后,遥控器短按电源键不再息屏(以前短按就息屏),只能长按电源键、再选「关机」。
排查(来自用户那边代理的现场记录)
- 用
adb shell input keyevent POWER注入电源键同样没反应,排除遥控器问题。- 日志里的失败链条:
短按电源键 → PowerManagerService.goToSleep(系统收到了) → 广播 mitv.goto.xiaoai_mode(小米的「小爱息屏」) → com.xiaomi.mitv.settings 调用息屏 → WindowManager 抛异常:removeChild: container=Task=1 is not a child of container=... → 设置应用崩溃 → 息屏没执行com.xiaomi.mitv.settings是系统应用(3.0,/system/priv-app,未更新过),与之前的批量回退无关。原因
安装时按
site/agent.md第 7 步(tools/install.sh里也是同样的cmd role add-role-holder→cmd package set-home-activity)把默认桌面改成了 Aerial。这台机器上这一步真的生效了(不像 MFTR0 / MFFU0 / MTSU0 那样被固件无视)。之后 PatchWall(com.mitv.tvhome)被当成普通 App 启动,进了普通任务栈(Stack #4),而不是 home 栈(Stack #0)。小米的小爱息屏流程按 home 栈找桌面,找不到就让com.xiaomi.mitv.settings崩溃,息屏不执行。现场的修复
- 把默认桌面还给小米桌面:
adb shell cmd package set-home-activity --user 0 com.mitv.tvhome/.MainActivityUserMode→ Success- 重启电视,
Stack #0: type=home里重新是小米桌面- 注入电源键后
mWakefulness=Asleep、Display Power: state=OFF,息屏正常- 唤醒后前台回到
app.orchard.tv/.MainActivity,桌面守护在运行,开机 / 唤醒由守护接管正常要做的
- ☐ 补齐机型信息(
ro.product.model、MIUI TV / PatchWall 版本),确认是哪些小米机型上 set-home-activity 会生效- ☐
tools/install.sh和site/agent.md第 7 步:小米(存在com.mitv.tvhome)上不要把默认桌面改成 Aerial,交给守护接管;或者设完后检查短按电源键能否息屏- ☐
restore.sh/ 文档里写明:小米上默认桌面被改过、息屏失效时,用上面的命令改回 PatchWall 并重启- ☐ 在我们的 MFTR0 上确认:现在的安装流程不会触发这个问题(那台固件无视 set-home-activity)