web-dev-qa-db-fra.com

Chrome intégré ou Webkit dans une application Android

Pour notre application Android, nous aimerions intégrer notre propre moteur de navigateur/rendu. Le candidat le plus probable pour cela est Webkit / Chromium . Nous recherchons quelque chose de similaire à WebView , essentiellement, mais soutenu par un navigateur (version) que nous contrôlons.

Contexte

Les parties importantes de notre application sont constituées de fragments de page Web intégrés dans la vue (servis par l'application elle-même). Nous essayons de le faire de la manière la plus transparente possible (du point de vue de l'expérience visuelle/utilisateur). Jusqu'à présent, nous utilisions WebView pour cela et cela fonctionne pour la plupart. Sauf quand ça ne marche pas. 

Certains fournisseurs de téléphones ont malheureusement décidé de modifier le navigateur Android standard ici et là. Dans certains cas, cela casse notre application ou rend plus visible le fait que nous intégrons une page Web.

Notre idée

Nous aimerions avoir un composant similaire à WebView mais où nous contrôlons quelle version de Webkit/Chromium (ou un autre moteur de rendu) est utilisée. Ce ne serait pas nécessairement la dernière et la meilleure version. Il est plus important que notre application fonctionne de manière cohérente sur autant d'appareils Android que possible.

Jusque là

Nos recherches jusqu’à présent n’ont rien révélé d’utile. Nous avons trouvé trois tentatives infructueuses de porter Webkit vers NDK (le port Web nu pour le port Android utilise une fonctionnalité non disponible dans le NDK et donc non destinée aux développeurs d'applications):

En regardant sur StackOverflow, nous avons également trouvé un certain nombre de questions similaires, la plupart d'entre elles étant résolues en pointant sur WebView (nous le faisons déjà, et ce n'est pas assez bon)

Nous recherchons actuellement si Chromium pour Android (ou une partie de celui-ci) peut être transformé en une bibliothèque que notre application pourrait utiliser. Quelqu'un d'autre a-t-il fait cela?

Mettre à jour

Après avoir examiné le projet chromeview sur GitHub (réponse acceptée), nous avons décidé d'attendre plutôt que Google publie une WebView basée sur Chrome sur les futurs appareils Android. Le moteur de rendu Chromium s'avère être assez volumineux (~ 40 Mo), ce qui ne laisse pas beaucoup de place pour l'application actuelle :(

47

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

ChormeView fonctionne comme le WebView d'Android, mais est soutenu par le dernier code Chromium.

12
Satoshi Deguchi

Vous devriez tous consulter le projet Crosswalk. Sponsorisé par Intel et en développement actif. Ils tirent les sources de chrome et promettent de rendre toutes les nouvelles fonctionnalités de chrome disponibles dans Crosswalk d'ici 6 semaines.

Crosswalk est une exécution Web pour les applications HTML5 ambitieuses. Il fournit toutes les fonctionnalités d'un navigateur moderne, associé à une intégration poussée des périphériques et à une API permettant d'ajouter des extensions natives. Il est particulièrement adapté aux appareils mobiles.

Crosswalk prend en charge Android 4.0 et les versions ultérieures, sur les architectures ARM et Intel.

Une heure après avoir trouvé ce projet, mon application Cordova/Phonegap était exécutée sur un téléphone Android avec Crosswalk. Je suis heureux de ne pas avoir à ajuster mon code Javascript pour respecter les faiblesses d'Android.webkit.WebView (antérieur à la 4.4).

https://crosswalk-project.org

10
flo von der uni

Sans WebKit, il existe un GeckoView . Bien sûr, il ajoute plus de 20 Mo de bibliothèques au projet.

3
Gintas

J'ai essayé d'utiliser la dernière version du code de Chromium pour créer une WebView personnalisée et c'est réussi.

Je vais donner mon approche mais pas le code source ici pour le moment.

Finalement, la taille de la bibliothèque WebView personnalisée est d'environ 30 Mo, ce qui est assez volumineux pour certaines petites applications. Mais c'est merveilleux car peut parfaitement supporter d'Android 4.0.

Ceci est ma méthode ci-dessous:

  • récupérez le code source de chrome et créez web_view_apk (AndroidWebView test Shell) suivez cette instruction https://www.chromium.org/developers/how-tos/Android-build-instructions

  • utilisez apktool pour décompiler le fichier apk d’Aw Shell ci-dessus. https://ibotpeaches.github.io/Apktool/

  • créez votre projet avec le dossier res, lib identique au projet décompilé.

  • Le fichier manifeste se trouve dans/src/Android_webview/test/src/org/chromium/Shell.

  • dossier src: vous trouvez les classes dans le code source du projet chrome qui sont les fichiers respectifs du dossier smali du projet décompilé.

Je mettrai à jour mon code plus tard, mais vous pouvez essayer mon guide maintenant si vous ne voulez pas attendre.

2
Ken

De nos jours, GeckoView semble une alternative à considérer

0
Javier Antón

Je considérerais les onglets personnalisés de Chrome:

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

0
Oded Breiner