OEM 关联启动
在 小米 (MIUI / HyperOS)、华为 (EMUI / HarmonyOS)、OPPO (ColorOS)、vivo (OriginOS / FuntouchOS)、荣耀、realme 等国产定制 ROM 上,系统默认会阻止应用通过 bindService 等方式启动其他应用的进程,称为「关联启动」或「自启动」管控。
影响
若主程序无法启动插件进程,插件中的输入方案在主程序中 将不会显示,即使插件 APK 已正确安装。
症状
- 安装了 Rime 或 chinese-addons 插件 APK,但主程序「添加输入法」列表里没有相应方案
- 之前可用,重启手机后又不可用
- 切换输入法时偶发崩溃或卡顿
解决方法
必须为两个应用同时开启
- ✅ Fcitx5 主程序
- ✅ 每一个已安装的 Fcitx5 插件(Rime / chinese-addons / 五笔 / ……)
小米 (MIUI / HyperOS)
- 设置 → 应用设置 → 应用管理 → Fcitx5
- 权限管理 → 自启动:开启
- 省电策略:选择「无限制」
- 同样操作每一个 Fcitx5 插件
华为 (EMUI / HarmonyOS)
- 设置 → 应用和服务 → 应用启动管理
- 找到 Fcitx5 主程序,关闭「自动管理」
- 在弹出的对话框中勾选「允许自启动」、「允许关联启动」、「允许后台活动」
- 同样操作每一个 Fcitx5 插件
OPPO (ColorOS)
- 设置 → 电池 → 应用电量管理
- 找到 Fcitx5 主程序,关闭「智能控制后台活动」
- 设置 → 隐私 → 启动管理:允许 Fcitx5 自启动
- 同样操作每一个 Fcitx5 插件
vivo (OriginOS / FuntouchOS)
- i 管家 → 应用管理 → 自启动管理
- 开启 Fcitx5 主程序 与 所有插件 的开关
- 设置 → 电池 → 后台高耗电 中允许其后台活动
一加 / 荣耀 / realme 等
机制大同小异,关键词:自启动、后台活动、关联启动、省电策略 → 无限制。
验证是否生效
- 设置完成后,重启手机(重要)
- 打开 Fcitx5 主程序
- 配置 → 全局选项 → 输入法 → 添加 中应能看到插件提供的方案
原理说明(可选阅读)
Fcitx5 主程序通过 Android 的 bindService 与每个插件中的 IPC 服务通信,注册插件提供的方案到主程序的方案列表。国产 ROM 的关联启动管控会拦截这一 bindService 调用,使得插件中的 ContentProvider / Service 永远不会被实例化,主程序也就无法识别其方案。
授予「自启动 / 关联启动」权限后,bindService 才能跨进程成功唤起插件,方案才会注册。
仍然不行?
请到 反馈问题 提交 issue,并附上:
- ROM 名称与版本(如 MIUI 14、HarmonyOS 4.0)
- 已安装的 Fcitx5 主程序与插件版本
- 已为哪些应用开启了哪些权限
- 是否重启过设备