Mihon 扩展系统架构解析 — 为什么装个仓库就能用所有源
三层架构
Mihon 的扩展系统由三层组成,从下到上依次是:
┌─────────────────────────────────────────┐
│ 漫画源(实际数据) │
│ MangaDex / Batoto / Mangapark / ... │
├─────────────────────────────────────────┤
│ 扩展 APK(桥接层) │
│ 解析源站结构 → 返回章节列表/图片 URL │
├─────────────────────────────────────────┤
│ 扩展仓库(索引层) │
│ JSON 列表:有哪些扩展、版本号、下载地址 │
├─────────────────────────────────────────┤
│ Mihon 主 App │
│ 统一的阅读界面、书架、追踪、备份 │
└─────────────────────────────────────────┘
扩展仓库
扩展仓库是一个可公开访问的 JSON 文件(通常托管在 GitHub),内容是所有可用扩展的索引:
- 每个扩展的名称、包名、版本号
- 扩展 APK 的下载地址
- 支持的语言/地区
- 更新日志
Mihon 从仓库拉取这个索引,然后展示给用户"可安装的扩展列表"。
扩展 APK
扩展是一个独立的 Android APK 文件,安装过程完全在 Mihon 内部完成(不通过系统包管理器)。每个扩展:
- 处理一个或多个漫画源(比如 MangaDex 扩展只处理 MangaDex 的 API)
- 实现统一的接口:搜索漫画、返回章节列表、返回图片 URL
- 可以独立更新——漫画源改了页面结构,只需要更新对应的扩展,主 App 不需要动
漫画源
漫画源本身是独立运营的网站,Mihon 通过扩展抓取其内容。扩展"适配"源站的页面结构和 API,把抓取到的数据转成统一格式交给 Mihon 主 App 处理。
扩展生命周期
- 添加仓库 → Mihon 拉取 JSON 索引,展示可用扩展列表
- 安装扩展 → 下载 APK,安装到 Mihon 的私有空间
- 信任扩展 → 用户手动点盾牌图标授权(安全机制)
- 正常使用 → 扩展在漫画源 Tab 里可用,浏览、搜索、阅读
- 更新扩展 → 仓库里有新版本时,Mihon 提示更新
- 删除/禁用 → 不需要时可以卸载或临时禁用
扩展为什么会失效?
扩展失效("装了但加载不出章节")最常见的原因:
| 原因 | 解释 |
|---|---|
| 漫画源改了页面结构 | 扩展的解析逻辑不匹配了 |
| 漫画源停服 | 网站没了 |
| 仓库有更新 | 扩展有新版本修复了 bug,但你没更新 |
| 网络问题 | 你的网络访问不了源站(需要代理/镜像) |
| 被标记为弃用(Deprecated) | 维护者宣布不再更新,迟早坏掉 |
安全模型
Mihon 对扩展做了两层安全防护:
- 非 Play Store 分发:扩展不通过 Google Play,避免 Play 的审核限制
- 信任机制:安装后不会自动激活,必须用户手动点盾牌图标信任——用户知道自己在用什么扩展
注意:Mihon 主 App 本身是开源的,可以审计。但第三方扩展各自独立,质量参差不齐。建议只安装社区推荐的热门扩展,避免不明来源的仓库。
扩展 vs 本地源
扩展是连接在线漫画源的;如果你有自己的漫画文件(CBZ/ZIP 压缩包、散图文件夹),应该用 Mihon 的本地源(Local source)功能,不需要任何扩展。具体见 本地漫画源。
本章小结
扩展系统的三层架构(仓库索引 → 扩展 APK → 漫画源)是理解 Mihon 的关键。主 App 负责统一界面,扩展负责适配各种漫画源,仓库负责索引和分发。扩展失效 90% 是源站结构变了或扩展没更新——先看仓库里有没有新版本,没有就只能等社区修复或找替代源。