Android 文件查看器 Gander 这种“零权限”设计真的能解决隐私焦虑吗
在 Android 应用生态里,权限申请几乎成了一种“明抢”。一个简单的计算器可能要求访问通讯录,一个手电筒可能要读取地理位置。在这种背景下,最近刷到的 Gander 这个文件查看器给我的启发很大,它走了一条极其激进的路线:直接把所有权限全部砍掉,甚至连最基本的 INTERNET 权限都不要。
很多开发者习惯于在 AndroidManifest.xml 里把能申请的权限全写上,以防止后期功能迭代时忘记添加。但 Gander 的逻辑是利用 OS 层面的物理隔离来建立信任。如果一个应用在清单文件中没有声明网络权限,那么在 Android 系统底层,它在物理上就无法建立 TCP/UDP 连接。这意味着无论应用内部怎么写,它都无法将你的 PDF 或私密文档偷偷上传到某个服务器。对于处理高度敏感文件的用户来说,这种“物理级”的安心比任何隐私协议都管用。
目前 Android 上的文件查看方案非常碎片化。如果你想看一个 PDF,得装个 Adobe 或 WPS;想看个 Word 或 PPT,可能得下载一个 400MB 且强制要求登录的 Office 全家桶。更糟糕的是,很多轻量级查看器在渲染文件时,实际上是将文件流传到云端服务器进行解析再回传,这在处理公司内部文档时简直是灾难。
Gander 尝试通过全本地化渲染来解决这个问题。它在技术实现上采用了三种不同的方案来覆盖常见格式:PDF 采用了 Pdfium 渲染引擎;音视频则依赖于 Media3 框架;而最麻烦的 Office 格式(Word、Excel、PPT),它采取了将 JS 渲染库打包进 WebView 的方案,在本地完成解析。
不过,这种完全脱离云端的本地渲染方案在实际体验中确实存在局限性。在使用过程中,我发现它对复杂 PowerPoint 演示文稿的还原度只能说“大体正确”,无法做到像素级的精准对齐。更关键的一点是,它不支持旧版本的二进制格式(如 .doc 和 .ppt),这些老旧格式的解析成本极高,在本地实现起来非常吃力。此外,如果你打开一个包含复杂图表的 Excel 表格,你会发现图表部分是空白的,它只能输出纯数据结构。
但即便有这些缺陷,Gander 的产品定位依然非常清晰。它只有 14MB 左右的体积,采用 MIT 协议开源,不搞任何功能冗余,就是一个纯粹的“查看器”。
从 Android 系统的演进来看,这种设计其实是顺势而为。从 Android 10 引入的 Scoped Storage(分区存储)到 Android 11 之后对存储权限粒度的进一步收紧,谷歌一直在试图把文件访问权从“应用级”转移到“文件级”。Gander 这种不需要存储权限、通过系统文件选择器(Storage Access Framework)直接获取单文件访问权的思路,正好契合了系统演进的方向。
对于独立开发者来说,Gander 提供了一个很有意思的参考方向:在用户被过度索权搞得心烦意乱时,将“权限最小化”本身做成一个核心卖点。用 OS 原生机制代替承诺,用技术上的限制换取用户的信任,这种产品逻辑在目前的出海应用市场中可能比堆功能更有竞争力。
最怕PDF内嵌字体缺失,离线渲染出来直接乱码,这隐私代价有点大