Gander Android 文件查看器 – 零权限离线文档阅读器

零权限离线查看解决真实隐私缺口

Gander 提供一个 15 MB 的 APK,能够在 Android 上打开 PDF、Word、Excel、PowerPoint、图像、视频、音频、Markdown 和代码,且不需要任何权限、广告或网络访问。 这很重要,因为大多数 Android 设备预装了多个专有查看器,这些查看器会将文档上传到云服务,泄露用户数据。


核心功能集(先看结论)

  • 全能查看器 – 一个应用处理文档、电子表格、幻灯片、照片、视频、音频、Markdown 和源代码。
  • 零权限 – 应用未声明 INTERNET 或存储权限;它通过存储访问框架(SAF)和 Open with 意图接收文件,确保它无法访问其他文件或网络。
  • 离线渲染 – 所有渲染库均已打包并本地运行:Pdfium 用于 PDF,SheetJS 用于电子表格,docx‑preview 用于 Word,PPTXjs 用于幻灯片,Media3 ExoPlayer 用于媒体。
  • 现代 UI – Material 3 设计,暗模式,边到边布局,捏合缩放和平滑滚动,包括大图像的瓦片深度缩放。
  • 文件发现 – 最近文件带缩略图预览,一次性文件夹授权让用户在不持久存储权限的情况下浏览。
  • 文档内搜索 – 文本搜索适用于 Word、Excel、PowerPoint、Markdown、纯文本和代码文件。
  • 分享集成 – 文件可以从任何应用共享到 Gander,打开的文件也可以发送到其他应用或在文件管理器中打开其所在文件夹。

支持的格式(先看结论)

类别 格式 渲染引擎
文档 PDF Pdfium (native)
Word .docx docx‑preview in sandboxed WebView
电子表格 .xlsx, .xls, .xlsm, .xlsb, .csv, .ods SheetJS (offline)
幻灯片 PowerPoint .pptx PPTXjs (offline)
图像 JPG, PNG, WebP, BMP, HEIC/HEIF, GIF, SVG, AVIF, ICO 光栅图像使用瓦片视图,动画/矢量使用 WebView
视频 MP4, M4V, MOV, MKV, WebM, 3GP, AVI, FLV, MPEG‑TS Media3 ExoPlayer
音频 MP3, M4A, AAC, FLAC, WAV, OGG, Opus, AMR Media3 ExoPlayer
Markdown .md marked + DOMPurify (HTML)
文本与代码 .txt, .json, .xml, 大多数源代码扩展名 Plain text viewer

不支持传统的二进制 .doc.ppt;应用会解释此限制并建议转换为现代格式。

零权限技巧的工作原理(先看结论)

Gander 利用 Android 的 Storage Access FrameworkACTION_OPEN_DOCUMENT_TREE 获取 一次性 URI 授权,用于用户选择的确切文件或文件夹。由于应用从未声明 READ_EXTERNAL_STORAGEINTERNET,系统不会授予更广泛的文件系统或网络访问权限。Office 文档在受限的 WebView 中渲染,其资源通过 WebViewAssetLoader 提供,确保所有 JavaScript 库均从应用资产加载,且不发起网络请求。

安装与更新(先看结论)

  • 安装:从 GitHub releases 页面下载最新的 APK(例如 Gander‑x.y‑arm64.apk)。启用“安装未知应用”并侧载。
  • 自动更新:使用开源更新器 Obtainium(将 https://github.com/mokshablr/gander 添加为源)即可在没有 Play 商店的情况下接收新版本。
  • 兼容性:运行于 Android 8.0(API 26)及以上;为非常老旧或 x86 设备提供通用 APK。

社区反馈要点(先看结论)

  • 用户赞扬 隐私优先设计 以及无需臃肿套件或追踪器即可打开文件的能力。

    "太棒了。你构建了一个优秀的工具来解决现实问题:能够即时打开文件而无需授予互联网访问权限,也不必安装 400 MB 的臃肿套件来追踪一切。" – chesscoachx

  • 多位评论者请求 F‑Droid 分发额外格式支持(例如 ODT、ODS、RTF)。

    "请在 README 中添加签名,以便用户在使用 Obtainium 安装前进行验证…" – aand16

  • 有人担心 绝对隔离:没有 INTERNET 权限的应用无法自行打开套接字,但仍可能启动其他应用(例如浏览器)来传输数据。

    "没有 INTERNET 权限的 Android 应用并不能保证与外部世界完全隔离…" – TekMol

  • 性能反馈指出 PDF 渲染的 响应性 以及 Markdown 预览纯文本换行 的实用性。

    "我真的很喜欢两件事:1. Markdown 以预览方式加载 2. 纯文本文件会自动换行,而不是向右滚动" – collabs

从源码构建(先看结论)

要自行编译 Gander,请安装 JDK 17+ 和 Android SDK platform 35,然后运行:

./gradlew assembleRelease   # produces an unsigned APK

本地密钥库 (keystore/gander.jks) 是签名发布所必需的;仓库有意未包含它。

路线图与贡献(先看结论)

计划的改进包括 F‑Droid 列表、文档内容的可选 暗模式渲染,以及 iOS QuickLook 伴侣。欢迎通过 GitHub issue 和 pull request 进行贡献;在仓库上加星有助于提升可见度。

许可证(先看结论)

Gander 在 MIT License 下发布。所有打包的 JavaScript 库均使用宽松许可证(MIT、Apache‑2.0、BSD),与 MIT 兼容。

Sources