一个轻量、纯粹的 Android Markdown 查看器。装上之后,在任意文件管理器里点击 .md / .markdown / .mdown 文件,即可用本应用打开并查看渲染后的内容。
无联网权限、无广告、无后台行为——只做一件事:把 Markdown 漂亮地显示出来。
- 📂 系统级关联:注册为
.md / .markdown / .mdown文件的默认打开方式(大小写扩展名均可),支持content://与file://两种来源;pathPattern对a.b.md这类多点文件名逐级枚举,按扩展名 / 按 MIME 的文件管理器均有兜底 - 🔗 多入口:从文件管理器「打开」(
ACTION_VIEW)、接收其他应用「分享」(ACTION_SEND,纯文本EXTRA_TEXT亦可直接渲染),以及从桌面图标启动进入首页自选文件 - 🔙 分级返回:从外部应用直接打开的文档,按系统返回直接退出回到来源应用;应用内打开的文档、设置页则逐级退回上一页
- 🕘 最近文档:主页右上角可一键重开刚关闭的文档(仅保留在本次运行的内存中,退出 App 即清空)
- 🎨 主题:跟随系统 / 浅色 / 深色;「暖纸 / 深炭」双配色取自正文排版主题,应用外壳与内容同一视觉语言
- 🔤 可调字号:12sp – 28sp
- 📏 正文宽度:240dp – 1100dp,适配手机与平板;设置值超过当前屏幕宽度时设置页会提示(该档位面向更宽设备)
- 📑 目录(TOC):自动提取标题,点击快速跳转
- 🔍 页内搜索:实时高亮匹配,显示命中数量
- 🖼️ 相对图片解析:支持
这类同级目录引用(file:// 与树形 DocumentsProvider 的 content:// 均可) - 💬 GitHub 风格提示框:行首
> [!NOTE]/> [!TIP]等 callout 语法渲染为提示框(仅行首匹配,行内代码中的同款文本不误判) - 🌏 编码检测:BOM 嗅探 → UTF-8 严格校验 → GB18030 回退(覆盖 GBK / GB2312),中文老文件不乱码
- 📄 导出 PDF:另存为 .pdf 文件(纸张 A4/A5/B5/Letter/Legal、页边距、矢量文字可选中、可选整页背景色、导出后自动打开),自动展开折叠内容,智能分页且支持
---分割线强制分页 - 🧩 代码高亮:GitHub 风格(浅 / 深双主题),基于 highlight.js
- 🔎 检查更新:设置页显示当前版本,一键跳转 GitHub Releases 查看并下载最新版(应用本体保持零联网权限)
在 GitHub Releases 下载最新 APK,签名固定,可直接覆盖安装。
iOS 版不走 App Store,面向侧载场景:从 Releases 的 ios-v* 预发布版(或 Actions 运行页产物)下载 MD-Opener-ios-*.ipa,用 AltStore / Sideloadly / TrollStore 等工具以自己的 Apple ID 重签安装。功能与安卓版对齐;相对路径图片因 iOS 沙盒需在提示时授权所在文件夹(仅需一次)。
- Kotlin + Jetpack Compose(Material 3)
- 渲染引擎:WebView + marked + highlight.js
- 设置持久化:Jetpack DataStore (Preferences)
- 最低支持:Android 7.0(API 24)
- 目标 SDK:Android 14(API 34)
单仓库多平台(monorepo):web/ 为双端共享的渲染资产唯一来源,android/ 与 ios/ 分别为两端原生壳。
├── android/src/main/ # 安卓工程(模块 :android)
│ ├── AndroidManifest.xml # 文件关联 intent-filter
│ └── java/…/md_opener/app/
│ ├── MainActivity.kt # 入口,处理 VIEW/SEND Intent
│ ├── MainViewModel.kt
│ ├── core/ # JsBridge / Store / UriHelpers / SiblingResolver
│ └── ui/ # AppRoot / Home / Viewer / Settings / 组件 / 主题
├── web/ # ★ 渲染资产(安卓打包为 assets,iOS 打包为 bundle 资源)
│ ├── viewer.html # 渲染模板(含 callout 等 marked 扩展,运行时探测 Android/iOS 桥)
│ ├── marked.min.js
│ ├── highlight.min.js
│ ├── typewriter.css # 正文排版
│ ├── hljs-github.css # 代码高亮(浅色)
│ └── hljs-github-dark.css # 代码高亮(深色)
├── ios/ # iOS 工程(XcodeGen:project.yml 为源,xcodeproj 生成物不入库)
│ └── MDOpener/
│ ├── MDOpenerApp.swift # 入口、onOpenURL
│ ├── Screens/ # Home / Viewer / Settings
│ └── Core/ # WebView 封装 / 编码检测 / mdres:// 图片解析 / PDF 导出
├── docs/ # 官网(GitHub Pages 静态站)
├── plans/ # 开发计划与施工日志
└── tools/ # keygen 等工具
项目已配置国内镜像(Gradle 走腾讯云、Maven 走阿里云),国内网络可直接同步。 合并到 main 后 GitHub Actions 会自动构建,使用固定发布密钥签名,产物可直接覆盖安装。 没有本地构建环境(无 Mac / 无 SDK)也能参与开发,方法见 DEVELOPMENT.md。
./gradlew assembleRelease产物路径:android/build/outputs/apk/release/android-release.apk
要求:JDK 17+、Android SDK 34。
官网「下载 APK」按钮直链指向
releases/latest/download/MD-Opener-latest.apk,始终落到最新 Release。发布 Release 时 CI 会自动附上MD-Opener-<tag>.apk与MD-Opener-latest.apk两个资产,只需写好说明点发布;旧 Release 里的同名资产无需删除。
当前版本 1.2.4(versionCode 12)。
MIT