我通过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版本?
答案 0 :(得分:3)
otool 输出的当前版本是用于在构建应用程序时链接的版本。
在最新的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.9Cocoa App
WebView WebKit版本 536.30.1
macOS 10.9.5 (13F1911):
Safari版本9.1.3(9537.86.7.8)
WebKit版本 601.7.8Cocoa App
WebView WebKit版本 537.78.2
macOS 10.10.5 (14F2009):
Safari版本10.0.1(10602.2.14.0.7)
WebKit版本 602.2.14Cocoa 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.14Cocoa App
WebView WebKit版本 601.7.8
WKWebView WebKit版本 601.7.8
不支持将您的应用链接到Safari WebKit版本。
您可以包含自己的WebKit构建。但我认为为旧版本的部署目标编写Web代码更简单。