【问题标题】:How do I set the WebKit version used by a WebView...?如何设置 WebView 使用的 WebKit 版本...?
【发布时间】:2017-07-11 11:51:54
【问题描述】:

我在 OS X 应用程序中通过 JUCE WebBrowserComponent 使用 WebKit,这是一个围绕 Apple 的 WebView Objective-C 类的轻量级包装器。 我正在 OS X 10.12 上编译,部署目标为 10.7。

我遇到的问题是在 OS X 10.8 上,WebView 使用的 WebKit 版本似乎与 Safari 使用的不同,我无法弄清楚如何选择 WebKit 版本或 为什么他们是不同的。

在 Safari 上运行 otool -L,给了我:

otool -L /System/Library/PrivateFrameworks/Safari.framework/Versions/A/Safari | grep WebKit
    /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 536.30.1)
    /System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/WebKit2 (compatibility version 1.0.0, current version 536.30.1)

在 Juce 演示中运行 otool -L 给了我:

otool -L JuceDemo | grep WebKit
    /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 602.2.14)

首先,对于明显相同的链接框架,为什么“当前版本”编号不同?

另外,如果我将各自的应用程序指向http://browserspy.dk/webkit.php,它会给我一个 AppleWebKit 版本的 600.8.9 用于 Safari 和一个版本的 536.30.1 用于 JUCE演示。

是什么导致了这些不同的版本号,以及如何配置我的应用程序以使我的WebView 使用 Safari 使用的“600.8.9”版本的 WebKit?

【问题讨论】:

    标签: macos cocoa webview webkit linkage


    【解决方案1】:

    otool 版本

    otool 输出的当前版本 是构建应用程序时用于链接的版本。

    Safari、WebKit 和一切

    在最新的 macOS 版本上,Safari 使用系统 WebKit 版本。所以带有 Safari 10 的 macOS Sierra 10.12 使用 /System/Library/Frameworks/WebKit

    Safari 还支持旧的 macOS 版本。并且独立于系统进行更新。例如 Safari 10 在 macOS 10.10、10.11 和 10.12 上运行。现在 macOS 10.11 随 Safari 9 一起发布,但在安装 Safari 10 时,它不使用系统 WebKit。而是使用 /System/Library/StagedFrameworks/Safari 中的版本。

    为什么?

    新的主要 Safari 版本不仅添加了闪亮的新功能和错误,有时还删除了一些东西。我想到了一些褪色的 -webkit 前缀。 WebKit 是 SDK 的一部分,它保证您的应用不会因此类更新而中断。

    测试

    这里是来自 WebView 和 WKWebView 的测试应用程序的版本输出:

    ma​​cOS 10.8.5 (12F2560):

    Safari 版本 6.2.8 (8537.85.17.9.1)
    WebKit 版本 600.8.9

    可可应用
    WebView WebKit 版本 536.30.1

    ma​​cOS 10.9.5 (13F1911):

    Safari 版本 9.1.3 (9537.86.7.8)
    WebKit 版本 601.7.8

    可可应用
    WebView WebKit 版本 537.78.2

    ma​​cOS 10.10.5 (14F2009):

    Safari 版本 10.0.1 (10602.2.14.0.7)
    WebKit 版本 602.2.14

    可可应用
    WebView WebKit 版本 600.8.9
    WKWebView WebKit 版本 600.8.9

    ma​​cOS 10.11.6 (15G1108):

    Safari 版本 10.0.1 (11602.2.14.0.7)
    WebKit 版本 602.2.14

    可可应用
    WebView WebKit 版本 601.7.8
    WKWebView WebKit 版本 601.7.8

    回答

    不支持将您的应用链接到 Safari WebKit 版本。

    您可以包含自己的 WebKit 构建。但我认为为旧版本的部署目标编写 Web 代码更简单。

    【讨论】:

    • 谢谢。回复:“据我所知,您无法将您的应用程序链接到 Safari WebKit 版本”——除非 Safari 静态链接到 WebKit(我对此表示怀疑),否则这不可能是真的,对吗?大概/System/Library/PrivateFrameworks 中的版本是为 Safari 提供更新功能的版本?作为一个实验,我尝试使用install_name_tool 将我的应用程序指向它,但我得到了dyld: Symbol not found: _OBJC_CLASS_$_WebView。所以,我想 Safari 链接到这两个版本的事实在某种程度上很重要。知道该怎么做吗?
    • 老实说,当我调查它时,我自己也很惊讶。我希望 Safari 包含它自己的 WebKit 版本——比如 Safari 技术预览版。但这并没有改变任何东西:SDK 为您提供了具有特定 WebKit 版本的 WebView 和 WKWebView。并不总是最新最好的 Safari WebKit 版本。
    • 好的,我已将此标记为已接受,因为我认为您是对的,我在问题中提出的问题是不可能的,或者至少不支持。跨度>
    • 如果我知道这是怎么做到的,我会告诉你的。您的部署目标似乎超级旧,好吧,我三个月前才降 10.8,所以我知道这是怎么回事。也许重新考虑这会使 webkit 版本不再是一个问题。
    • 谢谢,是的。我们目前不支持 10.8,但我们有用户要求它,这是最重要的
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-12
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-10
    • 2021-11-27
    相关资源
    最近更新 更多