使用 GeckoView 的 Firefox Focus

Firefox Focus 是一个专注于私密浏览的应用程序:它会自动屏蔽广告和追踪器,让您能够安心浏览网页。 完成浏览后,只需轻触一次即可完全清除您的历史记录、Cookie 和其他本地数据。

保护您免受入侵式追踪是 Mozilla 非营利使命的一部分,Focus 内置的追踪保护功能有助于保障您的安全。 它还能让网站加载速度更快!

A screenshot of Firefox Focus, showing the main menu open with the heading "26 Trackers Blocked"

使用 Focus,您无需担心您的浏览历史记录会在其他网站上的重定向广告中被重新利用。

将 Gecko 带入 Focus

在接下来的几周内,我们将发布一个新版本的Focus for Android,并且 Focus 将首次捆绑 Gecko,Gecko 是为Firefox Quantum提供动力的浏览器引擎。 这是一个重大的架构改变,因此虽然每个 Focus 版本都将包含 Gecko(因此下载文件较大),但我们计划逐步启用它以确保顺利过渡。 您今天可以帮助我们测试 Focus 中的 Gecko,方法是安装Focus Beta

Diagram of Firefox Focus 7, showing how the app now contains GeckoView, instead of just relying on the WebView component provided by Android

注意:在发布时,Focus Beta 在旧引擎和新引擎之间进行 A/B 测试。 在您的用户代理字符串中查找“Gecko/62.0”以确定您的副本是否使用 Gecko。

到目前为止,Focus 始终由 Android 内置的 WebView 提供支持。 这样做在最初的开发阶段是有意义的,因为 WebView 已经存在于每台 Android 设备上,但我们很快就遇到了局限性。 最重要的是,它并非为构建浏览器而设计。 尽管基于 Chromium,但 WebView 仅支持部分网页标准,因为 Google 期望应用程序开发者使用原生 Android API 而不是 Web 来实现高级功能。 相反,我们希望应用程序能够访问整个开放的、基于标准的网页平台。

在 Focus 的情况下,如果我们想要构建下一代隐私功能,就需要深入访问浏览器内部,这意味着我们需要自己的引擎。 我们需要 Gecko。 幸运的是,Firefox for Android 已经使用 Gecko,只是不是以一种容易在其他应用程序中重复使用的方式。 这就是 GeckoView 的用武之地。

GeckoView:让 Gecko 可重复使用

GeckoView 是一个以可重复使用的 Android 库形式打包的 Gecko。 我们努力将引擎本身与其用户界面分离,并使其易于嵌入其他应用程序。 由于 GeckoView 的简洁架构,我们对新 Focus 的初始基准测试显示,与 Firefox for Android 相比,中位数页面加载速度提高了 20%,使 GeckoView 成为我们迄今为止在 Android 上最快的 Gecko 版本。

Screenshot of the GeckoView AAR (Android Library) file. It is about 37 MB large.

我们去年首次将 GeckoView 投产,为 Firefox for Android 中的渐进式网页应用程序(PWA)和自定义标签提供支持。 这些最小、自包含的功能是不错的初始项目,但 Focus 的目标远不止于此。 Focus 将是我们首次使用 GeckoView 来完全支持现有、成功且独立的产品。

我们还在全新的产品中使用 GeckoView,例如Firefox Reality,它是一款专为虚拟现实和增强现实头戴设备设计的浏览器。 我们将在今年晚些时候分享更多关于这款产品的信息。

使用 Android 组件构建浏览器

要构建网页浏览器,您需要的不仅仅是引擎。 您还需要常见的功能,例如选项卡、自动完成、搜索建议等。 为了避免不必要的重复工作,我们还创建了Android Components,这是一个包含独立、随时可用的库的集合,用于在 Android 上构建浏览器和类似浏览器的应用程序。

对于 Mozilla 而言,GeckoView 意味着我们可以利用我们在构建更引人入胜、更安全、更强大的在线体验方面的所有 Firefox 专业知识,而 Android Components 则确保我们可以继续尝试新的项目(例如 Focus 和 Firefox Reality),而无需重新造轮子。 在很多方面,这些项目为下一代 Firefox 浏览器系列在 Android 上的布局奠定了基础。

对于 Android 开发者而言,GeckoView 意味着控制。 它是一个生产级引擎,具有稳定且广泛的 API,既可以单独使用,也可以通过 Android Components 使用。 由于 GeckoView 是一个自包含库,因此您无需自行编译。 此外,使用 GeckoView 为您的应用程序提供支持,可以让您使用特定的网页引擎版本。 与之相比,WebView 的版本之间差异很大,这取决于设备上可用的操作系统和 Chrome 版本。 使用 GeckoView,您始终知道您将获得什么,并且可以从 Gecko 针对网页标准的出色跨平台支持中获益。

参与进来

我们对 GeckoView 对于 Android 上浏览器未来的意义感到非常兴奋,我们希望您能参与进来。

请在下面的评论中告诉我们您对 GeckoView 和新 Focus 的看法!

关于 Dan Callahan

Mozilla 开发者关系工程师,前 Mozilla Persona 开发者。

更多由 Dan Callahan 撰写的文章…

关于 Andreas Bovens

更多由 Andreas Bovens 撰写的文章…


10 条评论

  1. PhistucK

    首先,祝贺 GeckoView 诞生。

    > 由于 GeckoView 是一个自包含库,因此您无需自行编译,也不需要担心 Android 更新会更改应用程序的底层内容。

    是的,应用程序可以使用旧版本的 GeckoView,而无需担心用户的安全。 是的…… 这样做有意义。 更新是件坏事,毕竟。 漏洞是件好事。 是的。
    (或者,GeckoView 永远不会出现漏洞)

    (我是否将这段话的荒谬性传达得足够准确,还是需要更多解释?)

    能力越大,责任越大,许多开发者拒绝承认这一点。
    您应该确保更新变得非常容易和无痛(但这永远不可能实现,因为人类会犯错误 :()。

    2018 年 9 月 13 日 下午 11:03

    1. Dan Callahan

      这是一个合理的观点;我们应该改写这段话。

      使用 GeckoView,开发者可以确保他们的应用程序始终使用最近的、已知的现代引擎版本。 使用 WebView,您必须使用用户手机上可用的任何版本,即使它很久没有更新。 这可能会增加相当大的复杂性,带来安全风险或导致难以重现的错误。

      GeckoView 可以避免这种情况,但开发者必须使他们的应用程序依赖项保持最新状态。 这本来就应该这样做。 :)

      我们正在尽力确保 GeckoView 在各版本之间提供封装良好、稳定的 API,以便更新尽可能容易和无痛。

      2018 年 9 月 13 日 下午 2:03

      1. Colin Lee

        我在 Mozilla 工作,负责 GeckoView 项目。能够用全新的引擎进行创新真是太棒了!我为能够将这项技术应用到我们的浏览器中并将其提供给独立开发者而感到自豪。

        不过,请谨慎对待我们的说法。自从 Lollipop 之后,WebView 就没有以不可升级的方式内置到 Android 中。这已经很久了,没有可升级 WebView 的手机不再被现代应用程序支持。WebView 会在 Google Play 商店中单独更新,更新方式是发布新的 WebView(Android L-M)和 Chrome 浏览器(Android N+)版本。

        2018 年 9 月 13 日 下午 6:39

  2. Jens

    > 由于 GeckoView 的干净架构,我们对新 Focus 的初步基准测试显示,与 Firefox for Android 相比,中位数页面加载速度提升了 20%,这使得 GeckoView 成为我们目前在 Android 上最快的 Gecko 版本。

    你猜到了问题 ;) GeckoView 与 Android 的 WebView 相比如何?或者说基于 GeckoView 的 Focus 与之前基于 WebView 的 Focus 相比如何?如果 GeckoView 性能更差(并且会改进),这也没关系,但不要给出任何数字,只告诉我它一定很差……

    2018 年 9 月 13 日 上午 11:07

    1. Dan Callahan

      说实话,我们仍在努力在不同引擎之间获得可靠的测量结果(这出奇地棘手!)。

      从量化角度来看,由于引擎之间的差异,它最初可能有点参差不齐,但我们致力于与 WebView 竞争。

      主观上,在过去两个月中,我并未使用 Focus 的两个版本并行测试,因此没有发现任何性能问题。

      2018 年 9 月 13 日 下午 2:32

  3. Christopher Anthony

    GeckoView 仍然无法正确渲染 Google 搜索结果。看起来像是 80 年代的 Google 搜索。我已经在过去几天的 Firefox Focus 论坛上报告了这个问题,但提到了一个正在测试修复程序的 Firefox nightly 版本。希望在 Firefox 和 Focus 中尽快修复这个问题。

    2018 年 9 月 13 日 下午 1:57

    1. Dan Callahan

      不幸的是,Google 本身会在移动设备上为 Firefox 和基于 Gecko 的浏览器提供降级体验。我们希望这种情况会在未来改变。

      2018 年 9 月 13 日 下午 2:10

      1. Nav

        有证据表明这一点吗?这听起来像是一种极其反竞争的做法。

        2018 年 9 月 13 日 下午 2:16

        1. Dan Callahan

          在 google.com 上嗅探用户代理已经至少五年了:https://bugzil.la/975444

          我们这里有一些选择,但总的来说,这就是 GeckoView 和 Firefox for Android 等项目对 Web 健康发展至关重要的原因。拥有多个竞争引擎可以保证公平竞争:确保兼容性的唯一方法是按照标准进行编码。没有这种竞争,Web 就会消亡。

          2018 年 9 月 13 日 下午 2:53

    2. Andreas Bovens

      今天再试一次。Google 搜索现在应该看起来好多了。

      2018 年 9 月 17 日 上午 4:35

本文评论已关闭。