Ingesloten Chromium of Webkit in Android-app

Voor onze Android-app willen we onze eigen browser/weergave-engine insluiten. De meest waarschijnlijke kandidaat hiervoor is Webkit/Chroom. We zijn in wezen op zoek naar iets dat lijkt op WebView, maar ondersteund door een browser (versie) die wij beheren.

Achtergrond

Belangrijke onderdelen van onze app bestaan ​​uit webpaginafragmenten die zijn ingesloten in de weergave (bediend door de app zelf). We proberen dit zo transparant mogelijk te doen (vanuit het oogpunt van visuele/gebruikerservaring). Tot nu toe hebben we hiervoor WebViewgebruikt en dat werkt voor de het grootste deel. Behalve wanneer dat niet het geval is.

Sommige telefoonleveranciers hebben helaas besloten om de standaard Android-browser hier en daar aan te passen. In sommige gevallen verbreekt dit onze app of maakt het meer opvallen dat we een webpagina insluiten.

Ons idee

We willen graag een component hebben die lijkt op WebViewmaar waar we bepalen welke versie van Webkit/Chromium (of een andere rendering-engine) wordt gebruikt. Het hoeft niet per se de nieuwste en beste versie te zijn. Het is belangrijker dat we onze app consistentkunnen laten werken op zoveel mogelijk Android-apparaten.

Tot nu toe

Ons onderzoek heeft tot nu toe niets bruikbaars opgeleverd. We hebben drie dode pogingen gevonden om Webkit te porten naar NDK(de kale Webkit voor Android-poort maakt gebruik van functionaliteit die niet beschikbaar is in de NDK en dus niet voor app-ontwikkelaars):

Als we op StackOverflow kijken, hebben we ook een aantal vergelijkbare vragen gevonden, waarvan de meeste worden opgelost door te verwijzen naar WebView (dat doen we al, en het is niet goed genoeg)

We onderzoeken momenteel of Chromium voor Android(of delen daarvan) kan worden omgezet in een bibliotheek die onze app zou kunnen gebruiken. Heeft iemand anders dit gedaan?

Bijwerken

Na een blik te hebben geworpen op het chromeview-project op GitHub (geaccepteerd antwoord), hebben we besloten dat we liever wachten tot Google een op Chrome gebaseerde WebView uitbrengt op toekomstige Android-apparaten. De Chromium-renderingengine blijkt vrij groot te zijn (~ 40 MB), wat niet veel ruimte overlaat voor de eigenlijke app 🙁


Antwoord 1, autoriteit 100%

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

ChromeView werkt als Android’s WebView, maar wordt ondersteund door de nieuwste Chromium-code.


Antwoord 2, autoriteit 77%

Jullie zouden allemaal het Crosswalk-project eens moeten bekijken. Gesponsord door Intel en in actieve ontwikkeling. Ze halen de Chromium-bronnen binnen en beloven binnen zes weken alle nieuwe Chromium-functies beschikbaar te maken in Crosswalk.

Crosswalk is een webruntime voor ambitieuze HTML5-toepassingen. Het biedt alle functies van een moderne browser, gecombineerd met diepe apparaatintegratie en een API voor het toevoegen van inheemse extensies. Het is vooral geschikt voor mobiele apparaten.

Crosswalk ondersteunt Android 4.0 en nieuwere, op arm- en intel-architecturen.

Binnen één uur van het vinden van dit project, had ik mijn Cordova / Phonegap-app op een Android-telefoon met zebrapad. Ik ben blij dat ik mijn JavaScript-code niet hoef aan te passen om de tekortkomingen van de (pre-4.4) Android.webkit.webview te respecteren.

https://crosswalk-project.org


Antwoord 3, Autoriteit 31%

Zonder webkit is er een Geckoview . Natuurlijk voegt het meer dan 20 MB van Libs toe aan het project.


Antwoord 4, Autoriteit 23%

Tegenwoordig lijkt Gekoview een alternatief om rekening te houden met


Antwoord 5, Autoriteit 15%

Ik heb geprobeerd de laatste codeversie van Chroomium te gebruiken om een ​​aangepaste Webview te bouwen en het is succesvol.

Ik zal mijn aanpak geven, maar niet de broncode hier nu.

Uiteindelijk is de grootte van aangepaste Webview-bibliotheek ongeveer 30 MB, vrij groot voor een kleine app. Maar het is geweldig omdat het perfect kan ondersteunen van Android 4.0.

Hieronder is mijn methode:

  • FETCH SOURCE CODE VAN CHROMIUM EN BOUW WEB_VIEW_APK (Androidwebview-testshell) Volg deze instructie https://www.chromium.org/developers/how-tos/android-build-instructions

  • Gebruik APKTOOL om het APK-bestand van AW-schaal hierboven te decompileren. https://ibotpeaches.github.io/apktool/

  • Maak uw project met Res, Lib-map zo hetzelfde als decompileerproject.

  • Manifest-bestand bevindt zich in / src / android_webview / test / src / org / chroom / shell

  • SRC-map: u vindt de lessen in Chromium Project Source-code die de respectieve de bestanden in Smali-map van decompileerproject hebben.

Ik zal mijn code later bijwerken, maar je kunt mijn gids nu proberen als je niet wilt wachten.


Antwoord 6

Ik zou overwegen chroom aangepaste tabbladen:

https://developer.chrome.com/multidEvice/android/customtabs

Other episodes