Gander Android 檔案檢視器 – 零權限離線文件閱讀器
零權限離線檢視解決真實的隱私缺口
Gander 提供一個 15 MB 的單一 APK,能在 Android 上開啟 PDF、Word、Excel、PowerPoint、圖片、影片、音訊、Markdown 與程式碼,且不需要任何權限、廣告或網路存取。 這很重要,因為大多數 Android 裝置預裝多個專有檢視器,會將文件上傳至雲端服務,暴露使用者資料。
核心功能集(先結論)
- All‑in‑one viewer – 一個應用程式處理文件、試算表、簡報、照片、影片、音訊、Markdown 與原始碼。
- Zero permissions – 此應用程式未宣告
INTERNET或儲存權限;它透過儲存存取框架(SAF)與Open withIntent 接收檔案,確保它無法存取其他檔案或網路。 - Offline rendering – 所有渲染函式庫皆內建於本機執行:Pdfium 用於 PDF,SheetJS 用於試算表,docx‑preview 用於 Word,PPTXjs 用於簡報,Media3 ExoPlayer 用於媒體。
- Modern UI – Material 3 設計、深色模式、全螢幕佈局、捏合縮放與順暢捲動,並支援大型圖片的分割深度縮放。
- File discovery – 最近檔案提供縮圖預覽,且一次性資料夾授權讓使用者在不持續授予儲存權限的情況下瀏覽。
- Search inside documents – 文字搜尋支援 Word、Excel、PowerPoint、Markdown、純文字與程式碼檔案。
- Share integration – 檔案可從任何應用程式分享至 Gander,且開啟的檔案可傳送至其他應用程式或在檔案管理員中開啟其資料夾。
支援的格式(先結論)
Gander 可以直接開啟以下格式:
| 類別 | 格式 | 渲染引擎 |
|---|---|---|
| 文件 | Pdfium(本機) | |
Word .docx |
docx‑preview 於沙盒 WebView 中 | |
| 試算表 | .xlsx, .xls, .xlsm, .xlsb, .csv, .ods |
SheetJS(離線) |
| 簡報 | PowerPoint .pptx |
PPTXjs(離線) |
| 圖片 | 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, most source extensions |
純文字檢視器 |
舊版二進位 .doc 與 .ppt 不受支援;應用程式會說明此限制並建議轉換為現代格式。
零權限技巧的運作方式(先結論)
Gander 利用 Android 的 Storage Access Framework 與 ACTION_OPEN_DOCUMENT_TREE 取得使用者所選檔案或資料夾的 一次性 URI 授權。由於應用程式從未宣告 READ_EXTERNAL_STORAGE 或 INTERNET,系統不會授予更廣泛的檔案系統或網路存取權限。Office 文件在受限的 WebView 中渲染,其資源透過 WebViewAssetLoader 提供,確保所有 JavaScript 函式庫皆從應用程式資產載入,且不會發出網路請求。
安裝與更新(先結論)
- Install: 從 GitHub 發行頁面下載最新的 APK(例如
Gander‑x.y‑arm64.apk)。啟用「安裝未知來源」並側載。 - Automatic updates: 使用開源更新器 Obtainium(將
https://github.com/mokshablr/gander加入為來源)以在沒有 Play 商店的情況下接收新版本。 - Compatibility: 可在 Android 8.0(API 26)及以上版本執行;提供通用 APK 以支援非常舊的或 x86 裝置。
社群回饋精華(先結論)
- 使用者讚揚 privacy‑first design(隱私優先設計)以及在不安裝臃腫套件或追蹤器的情況下開啟檔案的能力。
"太棒了。你打造了一個優秀的工具來解決現實世界的問題:能即時開啟檔案而不授予網路存取權限,也不必安裝 400 MB 的臃腫套件來追蹤所有資訊。" – chesscoachx
- 多位評論者請求 F‑Droid 發行 與 額外格式支援(例如 ODT、ODS、RTF)。
"請在說明文件中加入簽章,以便使用者在透過 Obtainium 安裝前驗證…" – aand16
- 有人提出對 absolute isolation(絕對隔離)的疑慮:即使沒有
INTERNET權限的應用程式無法自行開啟 socket,但仍可能啟動其他應用程式(例如瀏覽器)傳輸資料。"沒有 INTERNET 權限的 Android 應用程式並不保證能與外部世界完全隔離…" – TekMol
- 效能回饋指出 PDF 渲染的 responsiveness(回應速度)以及 Markdown preview(Markdown 預覽)與 plain‑text wrapping(純文字換行)的實用性。
"我真的很喜歡的兩件事:1. Markdown 以預覽方式載入 2. 純文字檔案會自動換行,而不是向右捲動" – collabs
從原始碼建置(先結論)
若要自行編譯 Gander,請安裝 JDK 17+ 與 Android SDK platform 35,然後執行:
./gradlew assembleRelease # produces an unsigned APK
本機金鑰庫 (keystore/gander.jks) 為簽署發行版所必需;此儲存庫特意未包含它。
路線圖與貢獻(先結論)
計畫中的改進包括 F‑Droid 列表、文件內容的可選 dark‑mode rendering(深色模式渲染),以及 iOS QuickLook companion(iOS QuickLook 伴隨應用)。 歡迎透過 GitHub issue 與 pull request 進行貢獻;在儲存庫上加星可提升能見度。
授權條款(先結論)
Gander 以 MIT License(MIT 授權)釋出。所有內建的 JavaScript 函式庫皆使用寬鬆授權(MIT、Apache‑2.0、BSD),與 MIT 相容。