[Bug] Android 15 模拟器上 fastinput_ime_enable 的 xpath 无法匹配,装备码输入无限卡死

Author: Lsbcy-xueCreated Sep 14, 2026Updated Sep 14, 2026
Labelsbug / 缺陷

在提问之前...

  • 我已经搜索了现有的 issues
  • 我在提问题之前至少花费了 5 分钟来思考和准备
  • 我已经阅读了 Wiki 中的 常见问题(FAQ)
  • 我正在使用最新版的 Alas

描述你的问题

紧急委托换旗舰装备(MOUNT FLAGSHIP EQUIPMENTS)时,在 Code input 之后卡住,没有任何后续日志,也不会触发 GameStuckError,只能手动停止。历史日志中每次出现 trying to enable it in settings 后都会卡几十分钟到数小时。

原因分析

  1. MuMu 12 的 Android 15 镜像屏蔽了 ime enable / ime set / ime resetsettings put secure default_input_method 也会被立即还原,因此进入 EquipmentCodeHandler.fastinput_ime_enable() 的设置页 fallback。
  2. 该页面(Settings$AvailableVirtualKeyboardActivity)在 Android 15 下开关的 resource-id 是 com.android.settings:id/switchWidget,而代码中的 xpath 写的是 android:id/switch_widget。Alas 使用的 uiautomator dump --compressed 结果如下(开关与 title 仍是 sibling,只有 id 不同):
LinearLayout (clickable)
├── TextView  android:id/title                       text="FastInputIME"
└── Switch    com.android.settings:id/switchWidget   checked="true"
LinearLayout (clickable)
├── TextView  android:id/title                       text="SogouIME-chuizi"
└── Switch    com.android.settings:id/switchWidget   checked="true"

四个 xpath 都匹配不到,while 1 循环中既不点击也不 break,且没有超时,导致无限空转。 实测:在该模拟器上直接调用 EquipmentCodeHandler.fastinput_ime_enable()(仅将 device.click 替换为记录),连续 15 次 dump_hierarchy_adb()(约 29 秒)4 个 xpath 匹配数均为 0,未发生任何点击;把 id 换成 com.android.settings:id/switchWidget 后可以匹配。 3. 即使在设置页手动关闭搜狗输入法(只保留 FastInputIME),IMMS 仍保持绑定搜狗(mCurId 不变);重启模拟器后 MuMu 会自动重新启用搜狗并设为默认。因此在该环境下,仅靠设置页开关也无法让 FastInputIME 成为当前输入法。

如何复现

  1. MuMu 12(Android 15)模拟器,默认输入法为自带的搜狗输入法(SogouIME-chuizi)
  2. 开启紧急委托,旗舰使用装备码换装
  3. 运行到 MOUNT FLAGSHIP EQUIPMENTS 输入装备码
  4. adb 设置输入法失败,进入设置页 fallback 后无限卡住

预期行为

无法切换到 FastInputIME 时应超时退出或跳过换装,而不是无日志卡死;最好能兼容 Android 15 的设置页结构。

相关 Logs

INFO     03:01:48.190 │ MOUNT FLAGSHIP EQUIPMENTS
INFO     03:01:49.190 │ Click ( 985,  106) @ EQUIPMENT_CODE_ENTRANCE
INFO     03:01:49.460 │ Langley detected
INFO     03:01:49.468 │ Click (1094,  506) @ EQUIPMENT_CODE_CLEAR
INFO     03:01:49.593 │ Code input: R0o4LzAvMC80SU9ML1FMXDA=
WARNING  03:01:49.619 │ Unable to enable FastInputIME: The ime enable command is disabled for security reasons.
WARNING  03:01:49.627 │ Unable to set FastInputIME: The ime set command is disabled for security reasons.
WARNING  03:01:49.627 │ FastInputIME not enabled by adb shell, trying to enable it in settings
(之后无输出,持续数小时,直到手动停止)

截图

No response

还有别的吗?

环境

  • Alas:master @ 46fe341db(已与上游同步)
  • 模拟器:MuMu 12(nx_main),Android 15,1280x720
  • 截图 nemu_ipc,控制 minitouch,服务器 cn_android-10

建议

  • fastinput_ime_enable() 的循环加超时,失败时退出/跳过换装
  • xpath 兼容 com.android.settings:id/switchWidget(例如 contains(@resource-id, "id/switch")
  • 当 FastInputIME 无法设为当前输入法时,提供不依赖输入法的回退方案,例如点击输入框后 adb shell input text <code>(装备码仅含 Base64 字符)

相关:#5804 #5901

Source: LmeSzinc/AzurLaneAutoScript