如何设置WebView使用的WebKit版本......?

时间:2017-02-21 17:48:47

标签: macos cocoa webview webkit linkage

我通过JUCE WebBrowserComponent在OS X应用程序中使用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它为Safari提供了一个 600.8.9 的AppleWebKit版本以及 536.30.1 的版本为JUCE演示。

这些不同版本号的原因是什么,以及如何配置我的应用,以便我的WebView使用" 600.8.9" Safari使用的WebKit版本?

1 个答案:

答案 0 :(得分:3)

otool version

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的测试应用程序的版本输出:

macOS 10.8.5 (12F2560):

  

Safari Version 6.2.8(8537.85.17.9.1)
  WebKit版本 600.8.9

     

Cocoa App
  WebView WebKit版本 536.30.1

macOS 10.9.5 (13F1911):

  

Safari版本9.1.3(9537.86.7.8)
  WebKit版本 601.7.8

     

Cocoa App
  WebView WebKit版本 537.78.2

macOS 10.10.5 (14F2009):

  

Safari版本10.0.1(10602.2.14.0.7)
  WebKit版本 602.2.14

     

Cocoa App
  WebView WebKit版本 600.8.9
  WKWebView WebKit版本 600.8.9

macOS 10.11.6 (15G1108):

  

Safari Version 10.0.1(11602.2.14.0.7)
WebKit   版本 602.2.14

     

Cocoa App
  WebView WebKit版本 601.7.8
  WKWebView WebKit版本 601.7.8

答案

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

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