Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何设置WebView使用的WebKit版本。。。?_Macos_Cocoa_Webview_Webkit_Linkage - Fatal编程技术网

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

Macos 如何设置WebView使用的WebKit版本。。。?,macos,cocoa,webview,webkit,linkage,Macos,Cocoa,Webview,Webkit,Linkage,我通过苹果WebViewObjective-C类的轻量级包装,在OSX应用程序中使用WebKit。 我在OS X 10.12上编译,部署目标为10.7 我遇到的问题是,在OS X 10.8上,WebView使用的WebKit版本似乎与Safari使用的版本不同,我无法理解WebKit版本是如何选择的,也无法理解它们为何不同 在Safari上运行otool-L,给了我: otool -L /System/Library/PrivateFrameworks/Safari.framework/Vers

我通过苹果
WebView
Objective-C类的轻量级包装,在OSX应用程序中使用WebKit。 我在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)
otool -L JuceDemo | grep WebKit
    /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 602.2.14)
在Juce演示上运行
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)
otool -L JuceDemo | grep WebKit
    /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 602.2.14)
首先,对于显然相同的链接框架,“当前版本”编号为何不同?

另外,如果我将相应的应用程序指向它,它将为Safari提供一个AppleWebKit版本600.8.9,为JUCE Demo提供一个版本536.30.1

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

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/stagedframes/Safari中的版本

为什么?

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

测试 以下是WebView和WKWebView测试应用程序的版本输出:

macOS 10.8.5(12F2560):

Safari版本6.2.8(8537.85.17.9.1)
WebKit版本600.8.9

可可应用程序
WebView WebKit版本536.30.1

macOS 10.9.5(13F1911):

Safari版本9.1.3(9537.86.7.8)
WebKit版本601.7.8

可可应用程序
WebView WebKit版本537.78.2

macOS 10.10.5(2009年第14期):

Safari版本10.0.1(10602.2.14.0.7)
WebKit版本602.2.14

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

macOS 10.11.6(15G1108):

Safari版本10.0.1(11602.2.14.0.7)
WebKit 版本602.2.14

可可应用程序
WebView WebKit版本601.7.8
WKWebView网络工具包版本601.7.8

答复 不支持将应用程序链接到Safari WebKit版本


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

谢谢。回复:“据我所知,你无法将你的应用程序链接到Safari WebKit版本”-除非Safari静态链接到WebKit(我对此表示怀疑),否则这不可能是真的,不是吗?大概是
/System/Library/PrivateFrameworks
中的版本为Safari提供了更新的功能?作为一个实验,我尝试用
install\u name\u tool
将我的应用程序指向这个位置,但我得到了
dyld:Symbol not found:\u OBJC\u CLASS\u$\ u WebView
。所以,我想Safari链接到这两个版本的事实在某种程度上是重要的。你知道怎么做吗?老实说,当我调查此事时,我自己也很惊讶。我希望Safari包含自己版本的WebKit,就像Safari技术预览一样。但这并没有改变任何事情:SDK为您提供了WebView和带有特定WebKit版本的WKWebView。不一定是最新和最好的Safari WebKit版本。好的,我已将此标记为已接受,因为我认为你是对的,我在问题中所问的是不可能的,或者至少不受支持。如果我弄清楚如何做到这一点,我会让你知道。你的部署目标似乎太老了,我三个月前才降低了10.8,所以我知道这是怎么回事。也许重新考虑一下这会让webkit版本不再是个问题。谢谢,是的。我们目前不支持10.8,但我们有用户请求它,这是showsupper