【问题标题】:WebKitGTK+, GTK2, GTK3WebKitGTK+、GTK2、GTK3
【发布时间】:2013-10-30 20:06:46
【问题描述】:

我很难理解不同版本的 WebKit、WebKitGTK、GTK 是什么。这是我到目前为止所拥有的:

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

  • WebKitGTK 1.10.2 是最后一个依赖 GTK2 的版本。它是否仍在维护/开发中?

  • 是否总是需要 GTK、Qt 或其他工具包支持?还是可以单独使用?

【问题讨论】:

    标签: webkit gtk webkitgtk


    【解决方案1】:

    你要区分版本号和api级别。

    • 版本号类似于 1.10.22.2.1 - 仅此而已,只是版本号 - 它与 GTK 版本或 api 级别无关。
    • 有两种不同的 api: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 验证)
    • 网络通信(处理 dns 和 http)
    • ...

    如果你想避免任何可用的 webkit 端口,你需要自己实现这一切。

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

    【讨论】:

    • 我还是有点困惑……“WebKitGTK+ 2.x.x 仍然支持 GTK+2”。这是否意味着我可以使用 GTK+3 编译 WebKitGTK+ 2.x.x 并期望它仍然与 GTK+2 应用程序兼容?
    【解决方案2】:

    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。该选项应该是最面向未来的。

    【讨论】:

      【解决方案3】:

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

      是的,WebKit2 API 没有那么强大。那是无关紧要的。如果您卡在 WebKit1 上,请放弃它,然后:

      • 在自己的进程中生成浏览器
      • 切换到 Chromium 嵌入式框架。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-06-19
        • 2018-08-04
        • 1970-01-01
        • 2021-09-24
        • 1970-01-01
        • 2017-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多