Wie lege ich die von einem WebView verwendete WebKit-Version fest ...?

8

Ich benutze WebKit in einer OS X App über die JUCE WebBrowserComponent , einen leichten Wrapper um Apples WebView Ziel-C-Klasse.  Ich kompiliere unter OS X 10.12 mit einem Implementierungsziel von 10.7.

Das Problem, das ich habe, ist, dass unter OS X 10.8 die Version von WebKit, die von WebView verwendet wird, anders zu sein scheint als die von Safari und ich kann nicht herausfinden, wie die WebKit-Version ausgewählt ist oder < em> warum sie sind anders.

Das Ausführen von otool -L in Safari gibt mir:

%Vor%

Das Ausführen von otool -L auf der Juce-Demo gibt mir:

%Vor%

Erstens, warum unterscheiden sich die Zahlen der "aktuellen Version" für scheinbar das gleiche verknüpfte Framework?

Wenn ich die entsprechenden Anwendungen auch auf Ссылка zeige, bekomme ich eine AppleWebKit-Version von 600.8.9 für Safari und eine Version von 536.30.1 für JUCE Demo.

Was macht diese unterschiedlichen Versionsnummern aus? Und wie kann ich meine Anwendung so konfigurieren, dass mein WebView die von Safari verwendete "600.8.9" Version von WebKit verwendet?

    
Jamie Bullock 21.02.2017, 17:48
quelle

1 Antwort

2

Otool-Version

Die aktuelle Version , die otool ausgibt, ist die Version, die beim Erstellen der App verwendet wurde.

Safari, WebKit und alles

Bei der neuesten Mac OS-Version verwendet Safari die System-WebKit-Version. So verwendet macOS Sierra 10.12 mit Safari 10 / System / Library / Frameworks / WebKit .

Safari unterstützt auch ältere Mac OS Versionen. Und wird unabhängig vom System aktualisiert. Zum Beispiel läuft Safari 10 auf macOS 10.10, 10.11 und 10.12. Jetzt wurde macOS 10.11 mit Safari 9 veröffentlicht, aber wenn Safari 10 installiert ist, verwendet es nicht das System WebKit. Stattdessen wird eine Version in / System / Library / StagedFrameworks / Safari verwendet.

Warum?

Neue Safari-Hauptversionen fügen nicht nur glänzende neue Eigenschaften und Fehler hinzu, sie entfernen manchmal auch Sachen. Irgendetwas schlechtes Webkit-Präfix kommt mir in den Sinn. WebKit ist Teil des SDK, das Ihnen garantiert, dass Ihre App bei solchen Updates nicht bricht.

Testen

Hier die Versionsausgabe einer Test-App von WebView und WKWebView:

macOS 10.8.5 (12F2560):

  

Safari Version 6.2.8 (8537.85.17.9.1)
  WebKit Version 600.8.9

     

Kakao-App
  WebView WebKit Version 536.30.1

macOS 10.9.5 (13F1911):

  

Safari Version 9.1.3 (9537.86.7.8)
  WebKit Version 601.7.8

     

Kakao-App
  WebView WebKit Version 537.78.2

macOS 10.10.5 (14F2009):

  

Safari Version 10.0.1 (10602.2.14.0.7)
  WebKit Version 602.2.14

     

Kakao-App
  WebView WebKit Version 600.8.9
  WKWebView WebKit Version 600.8.9

macOS 10.11.6 (15G1108):

  

Safari Version 10.0.1 (11602.2.14.0.7)
WebKit   Version 602.2.14

     

Kakao-App
  WebView WebKit Version 601.7.8
  WKWebView WebKit Version 601.7.8

Antwort

Es wird nicht unterstützt, Ihre App mit der Safari WebKit-Version zu verknüpfen.

Sie können Ihren eigenen WebKit-Build hinzufügen. Aber ich denke, es ist einfacher, Ihren Webcode für die alte Version Ihres Implementierungsziels zu schreiben.

    
catlan 07.03.2017, 21:06
quelle

Tags und Links