笔记本渲染是在干净设备上验证过的四种格式之一。FoldRender 直接读 .ipynb 文件 —— 没有内核,没有服务器,也没有转换步骤 —— markdown 单元格按正文显示,代码单元格带执行计数,保存在文件里的输出也会显示出来,包括保留原始 ANSI 颜色的 traceback。
FoldRender 在 Play 商店上的名字是 FoldRender: Git Repo Reader,包名 dev.foldrender.app,免费,面向全球发行。照常安装即可 —— 不会弹出要你打开「允许来自此来源的应用」的提示,更新也会自动送达。应用声明了 minSdk 30,所以需要 Android 11 或更新的版本;如果设备低于这个版本,Play 会直接告诉你,而不是让你装上一个跑不起来的版本。
把它所在的仓库克隆下来 —— 分支图标、筛选,或输入 owner/repo、获取代码,公开仓库可以匿名 —— 或者用打开文件通过系统选择器选一个 .ipynb,或者用打开文件夹把一个放笔记本的目录授权为持久保存的工作区。
在文件标签页里点这个笔记本。识别靠扩展名和 application/x-ipynb+json MIME 类型,而且笔记本在渲染器注册表里的得分足够高,.ipynb 永远不会被当成普通 JSON。如果文件格式有问题,这一栏会明确说出来 —— 「无法读取此 .ipynb」,后面跟着解析错误 —— 而不是渲染出半个笔记本。
markdown 单元格和其他文档走同一条 Markdown 管线,按正文渲染 —— 标题、表格、callout、公式全都有。代码单元格带高亮渲染,每个都显示执行计数 [n],从没运行过的单元格显示 [ ]。正是这个计数告诉你,正在读的笔记本是从上到下执行的,还是按别的顺序执行的。
输出块可以收起。收起的块显示 ▸ output (N hidden)(中文界面为「▸ 输出(已隐藏 N 项)」);展开后显示 ▾ output(中文界面为「▾ 输出」)和输出本身。这一点在手机上比在电脑上更要紧 —— 一个每个单元格都有上百行 stdout 的笔记本,不收起就没法读。
stdout 和 stderr 渲染成等宽字体块;错误渲染成 Name: value,后面跟着 traceback,ANSI 颜色真正解码 —— 16 色、256 色和真彩色的转义序列都支持 —— 所以带颜色的 traceback 依然好读,而不会变成一片转义码。Matplotlib 的 PNG 渲染成图片。HTML 输出(包括 dataframe 的显示)渲染成表格。应用显示不了的 MIME 类型的输出会显示 [unreadable <mime> output](中文界面为「[无法读取的 … 输出]」),而不是悄悄消失。
放大镜会在笔记本的文字上打开查找栏 —— 占位文字在文档中查找…,实时匹配计数,上下箭头。查找范围包括单元格源代码和文字输出。
笔记本是有「导出」面板的两种格式之一。「打印 / 存为 PDF」走 Android 打印框架;「分享为 HTML」生成一个自包含的文件,字体、公式、图表和图片都以 data URI 内嵌;「分享为 PNG」把整页截成一张长图。三者都来自应用渲染用的同一份 HTML,所以导出的结果和你看到的一致。
笔记本解析器是按现实中存在的笔记本写的,而不是按 schema 描述的那种 —— nbformat 版本混杂、源代码是字符串或按行的列表、不认识的输出类型,都能扛住。读不了的,它会说读不了,并给出原因。
一个 .ipynb 和它导入的模块、解释它的 README 在同一棵文件树里、同一个栏里打开。这才是在手机上读笔记本的真正理由:周围的仓库就在手边。
traceback 能保留颜色,是因为应用正确解码了 SGR 转义序列,包括 256 色和真彩色的形式。在笔记本里,pytest 或 IPython 的 traceback 是少数几种颜色本身带着信息的东西。
如实列出的清单 —— 包括已随版本发布但没有验证过的行为 —— 让你在安装前就能判断,这个版本能不能做你要做的那件事。
大家真正会用的四个应用,以及把它们区分开的那一条:仓库最后在不在手机上,到了手机上有没有东西把它渲染出来。
| 工具 | 下载价格 | 从哪里获取 | 克隆到设备上 | 渲染 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。