WebKitGTK +,GTK2,GTK3

问题描述 投票:7回答:3

我有点难以理解WebKit,WebKitGTK,GTK与不同版本的关系。这是我到目前为止:

  • WebKit是一个包含WebKit1和WebKit2的库。用这个叫做#include <webkit/webkit.h>
  • WebKitGTK 1.10.2是依赖GTK2的最后一个版本。它仍然保持/发展?
  • 它总是需要得到GTK,Qt或其他工具包的支持吗?或者可以单独使用它吗?
webkit gtk webkitgtk
3个回答
6
投票

您必须区分版本号和api级别。

  • 版本号类似于1.10.22.2.1 - 就是它,只是版本号 - 它与GTK版本或api级别无关。
  • 有两种不同的apis:webkit(webkit/webkit.h)和webkit2(webkit2/webkit2.h)。主要区别在于webkit2使用多进程架构进行渲染,javascript和插件,​​而不是webkit的单进程架构。

WebKitGTK +可以针对GTK + 2或GTK + 3进行编译。这将导致库文件名分别如libwebkitgtk-1.0.solibwebkitgtk-3.0.so。 (这与WebKit本身的版本无关。)但是,webkit2 api依赖于GTK + 3,库文件名类似于libwebkit2gtk-3.0.so

WebKitGTK +和其他端口实现如下内容:

  • 绘制ui元素(复选框,选择框,...)
  • 对话框(文件选择,下载,http auth)
  • 网络通信(处理dns和http)
  • ...

如果要避免任何可用的webkit端口,则需要自己实现所有这些。

PS:WebKitGTK + 2.x.x仍支持GTK + 2


1
投票

WebKitGTK是一个“端口”,是的,你实际上需要选择几个端口中的一个,单独使用webkit基本上意味着编写自己的端口,这是一项庞大的工作。在linux上我建议使用WebKitGTK或QtWebKit。

WebKit和WebKit2是两个完全不同的Web引擎API,它们恰好位于同一个源代码树中(整体上也称为WebKit)并使用相同的核心组件。最大的区别在于WebKit2将Web内容处理拆分为不同的流程 - 我相信它也是唯一一个正在进行严肃开发的流程。您实际上不需要在这两者之间进行选择,因为端口通常已经做出了选择:您只需使用端口提供的API。 GTK +端口曾经在Webkit上,但现在应该使用WebKit2(但Webkit API现在可能仍然存在)。

如果1.10.2确实是支持GTK2的最后一个版本(注意我不知道这是否属实),那么我很确定它没有进一步发展。

编辑:在debian上,库选项是:

  • libwebkitgtk-1.0 2.2.0:Webkit1,GTK + 2
  • libwebkitgtk-3.0 2.2.0:Webkit1,GTK + 3
  • libwebkit2gtk-3.0 2.2.0:Webkit2,GTK + 3

所以看起来GTK + 2仍然至少在某种程度上受到支持,但是(至少在debian上)你只能得到带有GTK + 3的WebKit2 API。这个选项应该是最具前瞻性的。


0
投票

WebKit的唯一Linux端口是WebKit2-GTK3。所有其他人都死了,没有收到安全更新,这使得他们成为黑客的琐碎目标。如果您的应用程序依赖于Linux上其他版本的WebKit,请将其卸载。故事结局。

是的,WebKit2 API功能不强。那是无关紧要的。如果你被困在WebKit1上,请抛弃它并且:

  • 在自己的进程中生成浏览器
  • 切换到Chromium Embedded Framework。
© www.soinside.com 2019 - 2024. All rights reserved.