GeckoView:Mozilla面向移动浏览器打造的渲染引擎

2019 年 7 月 2 日 开源中国

Mozilla 现已推出面向 Android 的全新移动浏览器 Firefox Preview。与大多数浏览器所采用的 Bink 渲染引擎不同,Firefox Preview 的渲染引擎 GeckoView 由 Mozilla 自行开发。

Mozilla 认为,这种独立性一定程度上避免了互联网被单一的科技巨头控制。


根据 Mozilla 工程师的介绍,他们开发 GeckoView 的原意是希望将 Firefox 的渲染引擎作为一个可重用库引入 Android 平台。

通过将 GeckoView 引擎与 Firefox 应用程序相分离,开发团队创建了一种更新、更快和更容易维护的方式来开发 Android 应用程序。这种方法利用了 Gecko 卓越的性能、隐私和对最新 Web 标准的支持。


下面我们来看看关于 GeckoView 的一些介绍和应用案例。

背景

我们都知道 Android 系统提供了内置的 WebView,应用程序可通过 hook 的方式以在 app 的上下文中显示网页。不过 Android 的 WebView 并非真正用于构建浏览器,所以它禁用了许多高级 Web API。另外,它的目标平台也不是统一的,不同的手机可能有不同版本的 WebView。

在这样的背景下,GeckoView 诞生了。

功能

作为一个渲染引擎,GeckoView 提供了完整的功能:

  • 功能齐全:GeckoView 旨在通过简单的 API 向应用程序暴露 Web 的全部功能。可以把它想象为利用了 Gecko(支持 Firefox 的引擎)的全部功能,而它的 API 类似于 WebView 并且易于使用。

  • 适用于应用程序和浏览器:GeckoView 特别适合构建移动浏览器,同时可以把它作为 Web 引擎组件嵌入到任何类型的应用程序中。

  • 自包含:GeckoView 是一个与应用程序捆绑在一起的独立库

  • 符合标准:与 Firefox 一样,GeckoView 为现代 Web 标准提供了出色的支持

使用 GeckoView 的其他项目

Mozilla 在许多其他的产品都使用了 GeckoView,列举几个如下(Firefox Preview 除外)。

Firefox Focus

Focus 的简洁性有助于进行实验测试,Mozilla 目前正利用它在 GeckoView 和 Android 的内置 WebView 之间进行隔离测试。这有助于确保 GeckoView 的稳定性和性能。

虽然 Firefox Focus 十分出色,但它不是一款通用的浏览器。设计之初它就不会跟踪历史记录和书签,也不支持 WebRTC 等 API。

Reference Browser

和 Firefox Preview 一样,Reference Browser 也是一款使用 GeckoView 引擎和 Mozilla Android 组件构建的完整浏览器。不过它不是面向普通用户推出,其目标受众是浏览器开发者。事实上,Reference Browser 更像是一个“试验基地”,用来测试 GeckoView 和组件是否合适并按预期运行 —— 并不受市场产品的限制。

Firefox Reality

这是一款专为独立虚拟现实头戴设备而设计的浏览器。除了利用 Gecko 对沉浸式网络技术的出色支持外,Firefox Reality 还展示了 GeckoView 的多功能性。

Firefox for Android

虽然 Firefox for Android (“Fennec”) 不使用 GeckoView 进行渲染,但它使用 GeckoView 来提供对 Progressive Web Apps 和 Custom Tabs 的支持。此外,由于 GeckoView 和 Fennec 都基于 Gecko,因此他们都受益于这个通用基础架构的改进。

Mozilla 将 GeckoView 视作为 Mozilla 下一代移动产品的基础。为了更好地支持这一未来,他们已停止 Firefox Focus 的开发,以将精力集中在 GeckoView 的开发上。

过去六个月,Mozilla 对 GeckoView 的内部实现进行了许多改进,特别是在编译器级优化和对其他 CPU 架构的支持方面。亮点包括:

  • 现已启用 Android 上的配置文件引导优化(PGO),使得编译器通过实际运行和观察 GeckoView 收集的数据来生成更高效的代码。

  • IonMonkey JavaScript 的 JIT 编译器已面向 GeckoView 的 64 位 ARM 架构启用

  • 现在正在为 x86_64 架构生成 GeckoView 的构建

实现这些功能除了满足在 Google Play 的上架要求外,支持 64 位架构还可以进一步提高 GeckoView 的稳定性(减少内存崩溃)和安全性。

由于 Firefox Preview 尚处于测试阶段,对于即将发布的 Firefox Preview 正式版本,Mozilla 正致力于添加对 Web 推送和“添加到主屏幕”等功能的支持。

开源中国征稿啦!


开源中国 www.oschina.net 是目前备受关注、具有强大影响力的开源技术社区,拥有超过 400 万的开源技术精英。我们传播开源的理念,推广开源项目,为 IT 开发者提供一个发现、使用、并交流开源技术的平台。


现在我们开始对外征稿啦!如果你有优秀的技术文章想要分享,热点的行业资讯需要报道等等,欢迎联系开源中国进行投稿。投稿详情及联系方式请参见:我要投稿

推荐阅读

MongoDB:有人敢像我一样说出开源的真实用意吗?

微软正式开源 WSL 2 的内核源码

迈向 Go 2 的下一步

Raspberry Pi 4 发布,性能飙升

谷歌想实现自己的 curl,为什么?

登录查看更多
0

相关内容

是由 Mozilla 基金会从 Mozilla Application Suite 独立出来采用开放源代码与社群共通开发的网页浏览器。
【新书】Java企业微服务,Enterprise Java Microservices,272页pdf
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
83+阅读 · 2019年11月25日
重磅!Flutter 2019年最新进展和未来展望
前端之巅
4+阅读 · 2019年6月20日
美团:基于跨平台框架Flutter的动态化平台建设
前端之巅
14+阅读 · 2019年6月17日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
已删除
将门创投
10+阅读 · 2019年3月6日
爱奇艺基于AI的移动端自动化测试框架的设计
前端之巅
18+阅读 · 2019年2月27日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
微软发布Visual Studio Tools for AI
AI前线
4+阅读 · 2017年11月20日
Arxiv
24+阅读 · 2020年3月11日
Video-to-Video Synthesis
Arxiv
9+阅读 · 2018年8月20日
Learning Blind Video Temporal Consistency
Arxiv
3+阅读 · 2018年8月1日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关资讯
重磅!Flutter 2019年最新进展和未来展望
前端之巅
4+阅读 · 2019年6月20日
美团:基于跨平台框架Flutter的动态化平台建设
前端之巅
14+阅读 · 2019年6月17日
从webview到flutter:详解iOS中的Web开发
前端之巅
5+阅读 · 2019年3月24日
已删除
将门创投
10+阅读 · 2019年3月6日
爱奇艺基于AI的移动端自动化测试框架的设计
前端之巅
18+阅读 · 2019年2月27日
Python 杠上 Java、C/C++,赢面有几成?
CSDN
6+阅读 · 2018年4月12日
微软发布Visual Studio Tools for AI
AI前线
4+阅读 · 2017年11月20日
相关论文
Top
微信扫码咨询专知VIP会员