it-swarm.com.de

Eingebettetes Chromium oder Webkit in der Android-App

Für unsere Android-App möchten wir unseren eigenen Browser/Renderer einbinden. Der wahrscheinlichste Kandidat dafür ist Webkit / Chromium . Wir suchen etwas Ähnliches wie WebView , im Wesentlichen, aber durch einen Browser (Version) gesichert, den wir steuern.

Hintergrund

Wesentliche Teile unserer App bestehen aus in die Ansicht eingebetteten Webseitenfragmenten (die von der App selbst bereitgestellt werden). Wir versuchen dies so transparent wie möglich zu machen (aus Sicht der Sichtbarkeit/Benutzererfahrung). Bisher haben wir WebView dafür verwendet und das funktioniert größtenteils. Außer wenn es nicht so ist. 

Einige Telefonanbieter haben sich leider entschieden, den Standard-Android-Browser hier und dort zu verändern. In einigen Fällen bricht dies unsere App oder macht die Tatsache, dass wir eine Webseite einbetten, auffälliger.

Unsere Idee

Wir möchten eine ähnliche Komponente wie WebView , bei der wir jedoch steuern, welche Version von Webkit/Chromium (oder eine andere Rendering-Engine) verwendet wird. Es muss nicht unbedingt die neueste und beste Version sein. Es ist wichtiger, dass unsere App konsistent auf so vielen Android-Geräten wie möglich funktioniert.

Bisher

Unsere Forschung hat bisher nichts Nützliches ergeben. Wir haben drei tote Versuche gefunden, Webkit nach NDK zu portieren.

In Bezug auf StackOverflow haben wir auch eine Reihe ähnlicher Fragen gefunden, von denen die meisten durch das Zeigen auf WebView gelöst werden (das tun wir bereits, und das ist nicht gut genug).

Wir untersuchen derzeit, ob Chromium für Android (oder Teile davon) in eine Bibliothek umgewandelt werden kann, die unsere App verwenden könnte. Hat das noch jemand gemacht?

Aktualisieren

Nachdem wir uns das Chromeview-Projekt auf GitHub (akzeptierte Antwort) angesehen haben, entschieden wir uns, dass wir lieber warten würden, bis Google ein Chrome-basiertes WebView auf zukünftigen Android-Geräten veröffentlicht. Die Chromium-Rendering-Engine ist relativ groß (~ 40 MB), was für die eigentliche App nicht viel Platz lässt :(

47

pwnall/chromeview · GitHub https://github.com/pwnall/chromeview

ChormeView funktioniert wie Android WebView, wird jedoch durch den neuesten Chromium-Code unterstützt.

12
Satoshi Deguchi

Sie sollten alle das Crosswalk-Projekt überprüfen. Gesponsert von Intel und in aktiver Entwicklung. Sie nutzen die Chromium-Quellen und versprechen, alle neuen Chromium-Funktionen in Crosswalk innerhalb von 6 Wochen verfügbar zu machen.

Crosswalk ist eine Web-Laufzeitumgebung für anspruchsvolle HTML5-Anwendungen. Es bietet alle Funktionen eines modernen Browsers, kombiniert mit einer umfassenden Geräteintegration und einer API zum Hinzufügen nativer Erweiterungen. Es ist besonders für mobile Geräte geeignet.

Crosswalk unterstützt Android 4.0 und neuer auf ARM - und Intel-Architekturen.

Innerhalb einer Stunde, nachdem ich dieses Projekt gefunden hatte, konnte ich meine Cordova/Phonegap-App auf einem Android-Handy mit Crosswalk ausführen. Ich bin froh, dass ich meinen Javascript-Code nicht anpassen muss, um die Mängel der (vor 4.4) Android.webkit.WebView zu berücksichtigen.

https://crosswalk-project.org

10
flo von der uni

Ohne WebKit gibt es ein GeckoView . Sicher, es fügt dem Projekt mehr als 20 MB Libs hinzu.

3
Gintas

Ich habe versucht, die neueste Codeversion von Chromium zu verwenden, um ein benutzerdefiniertes WebView zu erstellen, und es ist erfolgreich.

Ich werde hier zwar meinen Ansatz, aber nicht den Quellcode angeben.

Die Größe der benutzerdefinierten WebView-Bibliothek beträgt etwa 30 MB, was für eine kleine App recht groß ist. Aber es ist wunderbar, weil Android 4.0 perfekt unterstützt wird.

Dies ist meine Methode:

  • holen Sie sich den Quellcode von Chrom und bauen Sie web_view_apk (AndroidWebView-Test-Shell). Folgen Sie dieser Anweisung https://www.chromium.org/developers/how-tos/Android-build-instructions

  • verwenden Sie apktool, um die apk-Datei von Aw Shell oben zu dekompilieren. https://ibotpeaches.github.io/Apktool/

  • erstellen Sie Ihr Projekt mit dem Ordner res, lib wie ein dekompiliertes Projekt.

  • Die Manifest-Datei befindet sich in/src/Android_webview/test/src/org/Chrom/Shell

  • src-Ordner: Sie finden die Klassen im Quellcode des Chrom-Projekts, die Dateien im smali-Ordner des dekompilierten Projekts.

Ich werde meinen Code später aktualisieren, aber Sie können meine Anleitung jetzt ausprobieren, wenn Sie nicht warten möchten.

2
Ken

Heutzutage scheint GeckoView eine Alternative zu sein

0
Javier Antón

Ich würde die benutzerdefinierten Registerkarten von Chrome in Betracht ziehen:

https://developer.chrome.com/multidevice/Android/customtabs

0
Oded Breiner