Intégré de Chrome ou de Webkit dans l'application Android
Pour notre application Android, nous aimerions intégrer notre propre navigateur/moteur de rendu. Le candidat le plus probable pour ceci, est Webkit/Chrome. Nous sommes à la recherche de quelque chose de semblable à WebView, essentiellement, mais soutenu par un navigateur (version) qui nous contrôle.
Fond
Des parties importantes de notre application se composent de page web fragments incorporé dans la vue (servi par l'application elle-même). Nous essayons de faire cela de façon transparente que possible (à partir d'un visuel/expérience utilisateur point de vue). Jusqu'à présent, nous avons été à l'aide de WebView pour cela et qui fonctionne pour la plupart. Sauf quand ça ne marche pas.
Certaines de téléphone, les fournisseurs ont malheureusement décidé de modifier la norme navigateur Android ici et là. Dans certains cas, cela brise notre application, ou fait le fait le nous intégrer à une page web de plus en plus perceptibles.
Notre Idée
Nous aimerions avoir un composant semblable à WebView mais où nous contrôlons ce que la version de Webkit/Chrome (ou un autre moteur de rendu) est utilisé. Il ne serait pas nécessairement être la dernière et meilleure version. Il est plus important que nous pouvons obtenir notre app pour travailler constamment sur de nombreux appareils Android que possible.
Jusqu'à présent
Nos recherches jusqu'à présent n'a pas tourné quelque chose d'utile. Nous avons trouvé trois morts tente de port Webkit pour NDK (le nu-Webkit pour Android port utilise la fonctionnalité n'est pas disponible dans le NDK et donc de ne pas les développeurs d'applications):
- Webkit Android port par la Société 100 (pas de mises à jour depuis plus de deux ans)
- mogo-navigateur (leur dernière révision a été de supprimer tout le code source)
- NDK Webkit (officiellement abandonné par son auteur)
À la recherche sur StackOverflow, nous avons également trouvé un certain nombre de questions similaires, pour la plupart, être résolus par l'pointant vers WebView (nous avons déjà le faire, et il n'est pas assez bon)
- Webkit composant pour Android
- Incorporer base de WebKit + V8 dans mon application
- L'incorporation d'une nouvelle version de WebKit avec l'application Android
Nous sommes en train de voir si Chrome pour Android (ou des parties) peut être transformée en une bibliothèque que notre application peut utiliser. Quelqu'un d'autre a fait cela?
Mise à jour
Après avoir un regard sur les chromeview projet sur GitHub (accepté réponse), nous avons décidé que nous préférons attendre que Google pour libérer un Chrome WebView sur les futurs appareils Android. Le Chrome moteur de rendu s'avère être assez importante (environ 40 MO), ce qui ne laisse pas beaucoup d'espace pour l'application réelle 🙁
- Avez-vous décidé comment avancer? Pouvez-vous fournir des mises à jour sur vos progrès ou de ce que vous avez essayé?
- Un an plus tard, à partir de ce post, nous tentons approche similaire. @Christian avez-vous des mises à jour ou des conseils à partager. Nous avons été cogner la tête pour un mur trop long à l'aide de WebView. merci
- En définitive, nous a donné sur cette approche. Principalement parce que les dispositifs de cible convergent de plus en plus à un ensemble raisonnable de navigateur intégré versions. En outre, Android propose désormais un Chrome à base de WebView de leur propre: developer.android.com/guide/webapps/migrating.html Nous venons de vivre avec les limites ou de développer des applications natives.
Vous devez vous connecter pour publier un commentaire.
pwnall/chromeview · GitHub
https://github.com/pwnall/chromeview
ChormeView fonctionne comme Android WebView, mais est soutenu par la plus récente de Chrome code.
Vous devez vérifier la Concordance du projet. Sponsorisé par Intel et d'un développement actif. Ils tirent le Chrome sources et la promesse de rendre tous les nouveaux Chrome fonctionnalités disponibles dans le tableau de Concordance dans les 6 semaines.
De concordance est un runtime web pour des applications en HTML5. Il fournit toutes les fonctionnalités d'un navigateur moderne, combiné avec une profonde intégration du dispositif et une API pour l'ajout d'extensions natives. Il est particulièrement adapté aux appareils mobiles.
Tableau de concordance prend en charge Android 4.0 et versions plus récentes, sur les BRAS et les architectures Intel.
À l'intérieur de une heure de recherche de ce projet, j'ai eu mon Cordova/Phonegap application qui s'exécute sur un téléphone Android avec un passage pour piétons. Je suis content de ne pas avoir à régler mon code Javascript à respecter les lacunes de la (pré-4.4) android.webkit.WebView.
https://crosswalk-project.org
Sans WebKit il y a un GeckoView. Sûr que ça ajoute plus de 20mo de libs pour le projet.
J'ai essayé d'utiliser la dernière version du code de Chrome pour construire une coutume WebView et c'est réussi.
Je vais donner à mon approche, mais pas le code source ici et maintenant.
Finalement, la taille de la coutume WebView de la bibliothèque est d'environ 30 MO, assez grand pour une petite application. Mais c'est merveilleux parce que peut supporter parfaitement à partir d'Android 4.0.
Ce, voici ma méthode:
la récupération du code source de chrome et de construire web_view_apk (AndroidWebView test shell) suivez cette instruction https://www.chromium.org/developers/how-tos/android-build-instructions
utilisation apktool de décompiler le fichier apk de l'Aw Shell ci-dessus. https://ibotpeaches.github.io/Apktool/
créer votre projet avec res, dossier lib de même que décompilé projet.
Manifeste fichier se trouve dans /src/android_webview/test/src/org/chrome/shell
dossier src: vous trouvez les classes de chrome projet de code source qui sont respectifs les fichiers dans smali dossier de décompilé projet.
Je vais mettre à jour mon code plus tard, mais vous pouvez essayer mon guide maintenant, si vous ne voulez pas attendre.
De nos jours, GeckoView semble une alternative à considérer
Je considère Chrome onglets personnalisés:
https://developer.chrome.com/multidevice/android/customtabs