F-Droid 2.0 体验重写:赶在 Android 强制注册前拿到原生安装权

F-Droid 2.0 体验重写:赶在 Android 强制注册前拿到原生安装权

Android开源F-Droid

数据源:HN + web research

2026 年 9 月 24 日,开源 Android 应用商店 F-Droid 释出十年来最大的一次改版。在 Hacker News 上,这条消息迅速斩获 1263 分和 364 条评论,登顶当日第一。经过 14 个测试版本,开发团队将整个客户端用 Kotlin 和 Jetpack Compose 整体重写。但这并非一次常规的代码翻新。由于底层接入了 Android 统一的安装器 API,F-Droid 第一次在安装体验上,拿到了连 Google 自己都不愿轻易让出的特权:不用等下载完,不用被系统安全提示反复卡脖子,用户点下安装的那一刻,授权就已经完成。

抛弃扩展插件,拿回原生安装授权

在过去十几年中,第三方应用商店在 Android 上的安装体验始终处于二等公民的尴尬境地。用户每次通过 F-Droid 安装或更新应用,都必须忍受系统弹出的安全警告和二次确认窗口。为了绕过这个限制,F-Droid 曾长期依赖 F-Droid Privileged Extension (FPE) 这类插件来实现后台更新,而这往往需要设备具备 root 权限或由定制系统在底层提供支持。这种极客向的门槛,将大量普通用户挡在了开源生态的门外。

F-Droid 2.0 终结了这一现状。借由欧盟《数字市场法案》(DMA)和全球反垄断调查施加的巨大压力,Android 在系统层面开放了新的 pre-approval API。2.0 版本迅速接入了这套统一的 session 安装器机制,用户在决定下载应用之前,就可以一次性完成安装授权。当下载流结束时,应用会直接完成安装流程。第三方商店第一次在系统级授权流程中拿到了和官方商店并无二致的工程能力。

对比维度F-Droid 1.x 时代F-Droid 2.0 重构后
底层架构Java 老旧代码库Kotlin + Jetpack Compose
安装机制需配置 FPE 插件或 root 权限实现后台更新原生 session 安装器,接通 pre-approval API
安全审查依赖社区测试与内建隐藏功能引入 Security Lab 的独立代码审计
界面交互层级深,包含 6 个以上分类标签页压缩为 Discover、Search、My Apps 三区
系统支持兼容 Android 6 及更低版本最低要求 Android 7(依赖底层修复)

这一底层机制的打通,直接导致 FPE 扩展在 2.0 版本中被弃用。后台自动更新不再需要与系统权限进行复杂的博弈,也不再需要用户刷入特定的扩展包。开源应用的分发不再是一项需要专业知识来克服障碍的挑战,而是真正符合了现代智能手机操作系统的体验标准。

重写底层架构,抛弃旧系统包袱

底层安装机制的平权,伴随着技术栈的全面更迭。2.0 版本放弃了旧版的 Java 代码库,全面转向 Kotlin 与 Jetpack Compose。项目组自述这次重构的核心目标是「降低贡献门槛、减少技术债」。在这个过程中,团队做出了硬性的系统兼容割舍。由于新架构强依赖 Android 7 中的一个系统级修复,F-Droid 2.0 明确放弃了对 Android 6 及更低版本系统的支持。老旧设备依然可以运行旧版客户端,但新特性的迭代已经将它们排除在外。放弃对旧系统的兼容包袱,开发团队终于把工程演进的优先级排到了无条件支持所有设备的前面。

F-Droid 2.0 新版 Discover 界面 图:F-Droid 2.0 新版 Discover 与 My Apps 界面展示。来源:F-Droid 官方博客

在界面布局上,新版向 Material Design 规范靠拢,原本深不见底的层级被强制压缩为 Discover、Search、My Apps 三个核心区域。原有的分类页面被直接并入 Discover 中,而 Settings 与 Nearby Swap 功能则被移到了顶栏。连老用户熟悉的 pull-to-refresh 下拉刷新手势也被取消,这个手势现在仅仅用于页面滚动。更新检查被改成了强制默认在后台自动执行。正如官方博客所言:「最好的刷新按钮,是你永远不需要按的那一个。」这种对自动化流程的推行,显示出开源应用商店开始承担起定义产品交互的责任,不再单纯把选择权抛给用户。

F-Droid 2.0 新版 My Apps 界面 图:My Apps 把已安装应用、更新与潜在问题集中到一处,后台自动更新不再依赖 FPE 特权扩展。来源:F-Droid 官方博客

放弃深度伪装,引入独立代码审计

在安全与隐私保护的取舍上,F-Droid 2.0 表现出强烈的工程实用主义倾向。旧版本中备受部分硬核用户推崇的「伪装成计算器」功能被大幅削弱,现在只保留了修改图标和名称的浅表伪装。同样被移除的,还有通过 Ripple 等触发应用来调用「擦除已安装应用」的机制。官方甚至专门提醒依赖此功能的用户暂缓升级。

这些深层伪装和自毁功能维护成本极高,但在现代操作系统的底层取证面前往往不堪一击,应用依然会毫无保留地出现在系统设置的已安装列表中。放弃这层伪装,团队在安全错觉和工程现实之间做出了选择:让用户看清隐私欺骗的真实边界,比用低级伪装维持一个虚假的安全幻象更负责任。

取而代之的是更加现代化的安全审计机制。在 NLnet 等资金支持下,Torsten Grote 主导的新版代码接受了 Open Technology Fund 下属 Security Lab 联合 Convocation 机构的独立代码审查,所有与新应用相关的隐患均已分析处理。从奇技淫巧式的本地隐藏转向标准化安全审计,F-Droid 正在成长为一个成熟的基础设施。对于匿名网络的需求,应用内虽然保留了 Tor 支持和代理设置,但自动探测功能被移除,官方更推荐用户使用全局系统级的 TorVPN 方案。

细分游戏类别,暴露视觉审美分歧

在高达 1263 分的社区热度背后,开发者群体对 F-Droid 2.0 的 UI 细节呈现出明显的态度分化。Hacker News 用户 comex 尖锐地指出,官方发布的宣传截图中竟然直接出现了「Syncthing-For / k」这样灾难性的文本断行。在一篇宣告十年最大重构的文档中,排版瑕疵显得格外刺眼。

一部分用户对此毫不在意,HN 评论区用户 Accacin 直言不讳:「新设计也行、旧设计也行,我只想搜到应用并且搜得到。」在纯粹的实用主义者眼中,商店的唯一价值是把二进制包推送到设备上。但另一派则坚持 @frereubu 提出的观点:「好设计本身就是功能的一部分。」搜索功能在此次更新中不仅支持了应用描述、分类及翻译内容的全面检索,更显著改善了中日韩(CJK)字符集的查询能力,并加入了最近查询记忆。对多语言搜索体验的优化,反映出开源软件生态的用户盘早已跨出了单一英语开发圈。

分类体系也迎来了重组。新增了 VPN、防火墙、密码管理器等专用安全类别,并引入了更高的 meta 分类层级。曾经被统统塞进单一列表的游戏区,被硬性切分成了 17 种明确的子类型。一个商店需要 17 种分类来安放游戏,凸显出开源应用的体量逼近了甚至超过了传统分类架构的承载极限。

倒计时揭示系统底层控制权危机

客户端体验升级带来的喜悦,正被另一重迫在眉睫的系统级危机所笼罩。F-Droid 在客户端内挂出了一条指向 keepandroidopen.org 网站的倒计时横幅,揭示了一个名为「Darth Android」的系统级威胁:Google 计划从 2027 年起,强制所有 Android 应用开发者必须进行中心化注册。

这项政策的覆盖范围异常霸道,不仅针对 Play Store 的商业开发者,还波及了通过 F-Droid 分发、个人自用编译、甚至朋友之间通过蓝牙互传的应用开发者。所有人发布应用前,必须付费同意相关条款、提交政府身份证明、证明私钥归属,并列出全部应用 ID。针对未完成注册流程的应用,Android 操作系统将在全世界所有的设备上进行底层级别的静默阻断。这项举措已经引发了超过 10 万人的联名请愿。

一旦这项强制注册政策落地,第三方商店今天借由 DMA 争取到的所有安装通道特权,都将被系统底层直接切断。F-Droid 2.0 不遗余力地重写架构、追平系统安装体验,本质上是在这道闸门落下之前,尽可能多地留存用户并扩大开源生态的抵抗力量。

F-Droid 2.0 证明了开源分发渠道借助监管红利,有能力重构出与 Google Play 同级的核心工程体验。但只要操作系统的最终解释权还掌握在商业巨头手里,这套在应用层夺回的体验权随时会被没收。当 2027 年中心化注册的倒计时结束时,再高效的 session 安装器也跨不过底层的阻断墙。这场关于 Android 生态自由的抗争,客户端重构只是前哨战,真正的决战永远在系统内核的访问权上。

参考链接:

  • F-Droid 2.0: A new chapter for Android freedom
  • Keep Android Open
  • Hacker News 讨论