FoldRender 的每个渲染器都读本地文件,就连图表和公式那一层也从 APK 自带的资源里运行,网络访问被直接封锁。所以只要你事先克隆好,航班上、隧道里、没信号的地方都还能读仓库。下面讲怎么有意地把这件事准备好,而不是到了登机口才发现。
FoldRender 在 Play 商店上的名字是 FoldRender: Git Repo Reader,包名 dev.foldrender.app,免费,面向全球发行。照常安装即可 —— 不会弹出要你打开「允许来自此来源的应用」的提示,更新也会自动送达。应用声明了 minSdk 30,所以需要 Android 11 或更新的版本;如果设备低于这个版本,Play 会直接告诉你,而不是让你装上一个跑不起来的版本。
这是唯一需要联网的一步。点分支图标,填 筛选,或输入 owner/repo,点 获取代码。公开仓库可以匿名克隆。在 Wi-Fi 下做,别等到站台上。
大仓库第一次完整列出要很久 —— 大约 4,600 个文件这个量级,是真要等一会儿,界面上只有一个转圈,没有进度显示。列出文件是本地操作,所以离线时也会进行;只是最好在登机前就把它做完。
打开过的文件会进入快捷标签页,在文件树里长按可以把文件固定为收藏。每个文档的滚动位置都会记住。起飞前花两分钟固定几个文件,之后半睡半醒时,才能在文件树里一下找到要看的文件。
飞行模式下:Markdown 照样渲染,源代码带高亮和行号,PDF 带页码计数和缩略图,笔记本带单元格和保存下来的输出,JSON 和 YAML 以树形打开,CSV 是表格,日志按严重级别着色,图片可以双指缩放。这些都不是远程服务;没有任何东西要来回传输。
大家通常以为这部分需要联网。其实不需要:mermaid 和 KaTeX 连同字体都打包在 APK 的资源里,负责渲染的 WebView 禁止了网络加载,它的客户端对任何不是打包资源或 data URI 的请求都返回 403。打开飞行模式,带图表的文档渲染起来没有任何变化。
两种搜索都是本地的。查找栏搜索当前打开的文档;搜索标签页在整个工作区里 grep,按字面或正则,path:line 结果陆续出现。两者都不连接任何地方。
重新连上网络后,Git 面板里的 Pull 按钮会更新克隆,面板标题栏显示分支以及领先和落后的提交数,你能看出远程走了多远。
仓库一旦在应用私有存储里,每个渲染器都从磁盘读文件。这个应用没有服务器端,渲染只在设备上进行。
应用里唯一可能连网的部分 —— 画图表和公式的 WebView 隔离区 —— 被拒绝了两次:一次是它设置里的 blockNetworkLoads,一次是对任何非资源地址都返回 403 的客户端。没有会过期的缓存,也不需要先联网运行一次。
应用用一个带防抖的文件观察器监视打开文件所在的目录,文件一变就原地重新渲染,滚动位置不变 —— 监视目录而不是文件本身,是因为编辑器保存时是先写临时文件再重命名。在内屏的一半用终端应用编辑,另一半就能看到它重新渲染。
如实列出的清单 —— 包括已随版本发布但没有验证过的行为 —— 让你在安装前就能判断,这个版本能不能做你要做的那件事。
大家真正会用的四个应用,以及把它们区分开的那一条:仓库最后在不在手机上,到了手机上有没有东西把它渲染出来。
| 工具 | 下载价格 | 从哪里获取 | 克隆到设备上 | 渲染 PDF / Jupyter 笔记本 / Markdown | 编辑器或 shell |
|---|---|---|---|---|---|
| FoldRender | US$0 | Google Play,全球 | 能 —— HTTPS,公开仓库可匿名 | 能 —— 原生 Compose 渲染器 | 没有,有意为之:它是阅读器,不是 IDE |
| GitHub Mobile | US$0 | Google Play 和 App Store | 不能 —— 它读的是托管在 GitHub 上的仓库 | 只有 GitHub 自己渲染的内容,需联网 | 可在 PR 里编辑文件 |
| Termux + git | US$0 | F-Droid 或 GitHub | 能 —— 真正的 git 命令行 | 不能 —— 只有终端文本 | 有,完整的 shell,任何命令行编辑器都能用 |
| MGit 1.7.0 (2023) | US$0 | 只在 F-Droid | 能 —— 克隆、拉取、推送,HTTPS 或 SSH 密钥 | 不能 | 没有 —— 它自己的页面写明不带文本编辑器 |
价格指的是下载价格。GitHub Mobile 的功能取决于你的 GitHub 套餐;Termux 和 MGit 都是自由软件。MGit 的版本和日期来自它在 F-Droid 上的页面。
这里的每个数字都是从正式发布的版本里读出来的,或者来自本页底部列出的一手资料 —— 没有为了好看往上凑整。
minSdk 30,也就是 2020 年随 Android 11 发布的 API 级别;编译和目标版本都是 API 36。上面这些数字背后的一手文档,任何一条你都可以自己核对,不必听我们说。
git-clone 参考文档 —— 获取代码执行的操作,由定义它的项目自己来说明minSdk 定为最低要求的那个版本本页最后核对于 2026-08-27。