# Mixed Bug Method **Repository Path**: nlxxai/mixed-bug-method ## Basic Information - **Project Name**: Mixed Bug Method - **Description**: 不过回到正经的APK包名,千万别把 Bug 写进去,否则用户一看还以为是个半成品哦。你是想走严肃路线,还是真打算玩这个“Bug”梗?😄 - **Primary Language**: Kotlin - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-17 - **Last Updated**: 2026-08-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Mixed Bug Method (MBM) — 多引擎融合输入法 > 代号 MBM = **M**ixed **B**ug **M**ethod —— 在多元方法中混合最优解。 MBM 是一款**功能全集**的 Android 输入法:底层同时集成 **Fcitx5** 插件化框架与 **Rime** 可定制引擎,一个 APK,两种灵魂;覆盖拼音(全拼/双拼/九宫格)、五笔(86/98/混输)、仓颉、笔画、手写、语音等输入方案,并配备悬浮键盘、动态主题(Material You 兼容)、剪贴板管理与物理键盘支持。 ## 兼容范围 - **Android 7.0 (API 24) ~ Android 16 (API 36)**(全量 AndroidX 兼容,禁止直接使用 API 26+ 独有 API) - **ABI**: `armeabi-v7a` + `arm64-v8a`(另含 `x86_64` 供模拟器调试) ## 架构总览(基于 fcitx5-android 插件化架构) ``` :app 输入法服务 / 悬浮键盘 / 设置 / 主题 / 插件运行时 (Kotlin, GPL-3.0) :lib:fcitx5 Fcitx5 核心(addon 框架,静态打包进 app) (C++, LGPL-2.1+) :plugin:rime Rime 引擎插件 APK(librime.so addon + rime-data) (C++, GPL-3.0) —— 主 app 运行时发现插件、合并数据、加载 addon :engine-hwr 手写引擎(规划) :engine-voice 语音输入(规划) ``` Rime 以**独立插件 APK**形态交付(非打进主 app),主 app 通过 intent 发现插件、 合并其 assets(descriptor.json 清单)、以 `FCITX_ADDON_DIRS` 加载 `librime.so`; 方案切换 UI 为 status-area 原生菜单(`rime_get_api()->get_schema_list()`)。 ## 许可与合规(重要) - 本项目整体采用 **GPL-3.0**(librime 为 GPL-3.0,合并作品必须 GPL-3.0;Fcitx5 核心库为 LGPL-2.1+ 按 LGPL 条款单独保留)。 - 所有上游代码以 vendored / submodule 方式引入并**完整保留**各自 License 与版权声明,见 `docs/upstream.md` 与 `NOTICE`。 - **合规红线**:不反编译、不并入任何闭源 APK 的代码;`com.yuyan.pinyin.offline.release`、`com.kingzcheung.xime` 等仅作为功能对照参考。 ## 里程碑 | 阶段 | 内容 | 状态 | |---|---|---| | M0 | 仓库/许可/架构文档 | ✅ 完成 | | M1 | 构建环境(NDK/CMake)+ Fcitx5 最小可构建 APK | ✅ 完成(见 `docs/build.md`) | | M2 | librime 双引擎集成 + 方案切换 UI | ✅ 构建完成(插件 APK,见 `docs/m2.md`;待真机验证) | | M3 | 功能全集(悬浮键盘/剪贴板/主题/物理键盘/九宫格) | ✅ 完成(见 `docs/m3.md`;手写/语音另立规划) | | M4 | 语音(Vosk 离线)/手写(笔画键盘) | ✅ 完成(见 `docs/m4.md`;兼容性测试与屏幕书写识别列后续) | | D1 | 全流程诊断日志与崩溃转储 | ✅ 完成(见 `docs/diagnostics.md`) | ## 构建环境 - JDK 17、Gradle 9.3.1、AGP 9.1.0、Kotlin 2.3.x、compileSdk 36 - NDK r28、CMake 3.31.6、ECM 5.103、gettext 0.22.5(含 ITS rules) - 完整步骤与本地补丁见 [`docs/build.md`](docs/build.md)(含镜像下载、ECM/gettext 安装、Gradle 9 兼容修复) ## 安装 先装主 app(`MBM-M1-APKs` release APK),再装 Rime 插件(`MBM-M2-APKs`, 两包同签名同版本);主 app 检测到插件后在插件页启用。激活方式: 设置 → 系统输入法 → Mixed Bug Method。