WebKitGTK +,GTK2,GTK3

时间:2013-10-30 20:06:47

标签: webkit gtk webkitgtk

我很难理解WebKit,WebKitGTK,GTK与不同版本的关系。以下是我到目前为止的情况:

  • WebKit是一个包含WebKit1和WebKit2的库。使用此方法调用哪一个包括#include <webkit/webkit.h>

  • WebKitGTK 1.10.2是依赖GTK2的最后一个版本。是否仍然保持/发展?

  • 是否始终需要GTK,Qt或其他工具包支持?或者可以单独使用它吗?

3 个答案:

答案 0 :(得分: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 :(得分: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。该选项应该是最具前瞻性的。

答案 2 :(得分:0)

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

是的,WebKit2 API的功能不那么强大。那无关紧要。如果您卡在WebKit1上,请抛弃它,并选择以下一种方法:

  • 以自己的方式生成浏览器
  • 切换到Chromium嵌入式框架。