公开仓库可以匿名克隆 —— 这条路验证过。私有仓库需要凭据,FoldRender 提供两种:GitHub 的 OAuth 设备码流程,或者存在 Android 硬件密钥库里的个人访问令牌。这里两种都是根据已发布的实现来描述的;哪一种都没有在干净设备上完整跑通过,本页在要紧的地方就直接说出来,而不是放在页面底部的小字里。
FoldRender 在 Play 商店上的名字是 FoldRender: Git Repo Reader,包名 dev.foldrender.app,免费,面向全球发行。照常安装即可 —— 不会弹出要你打开「允许来自此来源的应用」的提示,更新也会自动送达。应用声明了 minSdk 30,所以需要 Android 11 或更新的版本;如果设备低于这个版本,Play 会直接告诉你,而不是让你装上一个跑不起来的版本。
点顶栏里的分支图标。登录在面板最上方的 GitHub 标题下,位于克隆输入框上面,因为这是克隆之前、而不是之后要做的事。
点使用 GitHub 登录。应用会申请一个设备码,显示一个短码和一个打开 GitHub 按钮,按钮会带你到 github.com/login/device;你在那里输入短码、授权,令牌就会自己到达 —— 面板会轮询,不用你再回来操作。令牌到了以后,面板显示「已登录为 your-login」,旁边有一个退出登录按钮。只提供设备码流程,是因为它是 GitHub 唯一不需要 client secret 就能完成的 OAuth 流程,而一个分发到设备上的应用保管不了 client secret。Google Play 上的版本已经编译进了 OAuth client id,所以你看到的是这个按钮,而不是让你粘贴 client id 的输入框。
点克隆按钮旁边的 Credentials & identity。表单要填主机(预填 github.com)、用户名和个人访问令牌,点保存令牌后会提示「已为 <host> 保存」。GitLab、Bitbucket、自建的 Forgejo 或其他任何不是 GitHub 的托管平台都走这条路 —— 设备码流程是 GitHub 专用的,令牌表单不是。
同一个表单在提交身份下面还有姓名和邮箱两栏。它们写在应用私有存储里的一个 .gitconfig 中,因为 Android 的 user.home 是 /,不可写 —— 没有一个真正的 home 目录,JGit 加载配置的行为在不同 ROM 上不一样。只有以后要走提交那条路时,设置身份才有意义,而那条路没有验证过。
把 HTTPS 地址粘贴到 筛选,或输入 owner/repo,点 获取代码。凭据按主机查找,所以存好的同一个令牌可以用于这个主机上的所有仓库。只支持 HTTPS —— SSH 远程地址用不了,因为带上一个密钥代理的代价,应用有意不去承担。
从这里开始,就和克隆公开仓库完全一样:仓库作为工作区打开,文件树开始列出(大仓库会慢,只显示一个没有进度提示的转圈),每个文件都在右边那一栏渲染。私有仓库在阅读方式上没有任何不同。
保存的令牌用一个存在 Android 硬件密钥库里的 AES-GCM 密钥加密,永远不会再读回任何输入框。填写它的界面会自己清空,应用里也没有任何界面显示已保存的令牌 —— 所以截图或旁边偷看的人什么都拿不到。
GitHub 的文档写明,浏览器流程的 access token 端点必须带 client_secret,而 code_verifier 只是它的补充,不是替代。不带 secret 的应用会收到 incorrect_client_credentials —— 而那时用户已经在浏览器里授权过了。一个注定在最后一步失败的按钮比没有按钮更糟,所以界面上哪里都不提供浏览器登录。
GitHub OAuth 应用拿到的 client id 本来就是公开的;它编译在版本里,不需要向你要。如果某个版本没有带上它,就会退回到一个一次性的输入框让你粘贴 client id;两者都没有的话,面板会直接说这个版本没有配置 GitHub 登录。
如实列出的清单 —— 包括已随版本发布但没有验证过的行为 —— 让你在安装前就能判断,这个版本能不能做你要做的那件事。
大家真正会用的四个应用,以及把它们区分开的那一条:仓库最后在不在手机上,到了手机上有没有东西把它渲染出来。
| 工具 | 下载价格 | 从哪里获取 | 克隆到设备上 | 渲染 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。