Incrustado Chromium o Webkit en la aplicación Android


Para nuestra aplicación Android, nos gustaría incrustar nuestro propio navegador/motor de renderizado. El candidato más probable para esto, es Webkit/Cromo. Estamos buscando algo similar a WebView, esencialmente, pero respaldado por un navegador (versión) que controlamos.

Antecedentes

Partes significativas de nuestra aplicación consisten en fragmentos de páginas web incrustados en la vista (servidos por la propia aplicación). Tratamos de hacer esto de la manera más transparente posible (desde visual / punto de vista de la experiencia del usuario). Hasta ahora, hemos estado usando WebView para esto y eso funciona en su mayor parte. Excepto cuando no lo hace.

Algunos proveedores de teléfonos desafortunadamente han decidido modificar el navegador estándar de Android aquí y allá. En algunos casos, esto rompe nuestra aplicación o hace que el hecho de incrustar una página web más notable.

Nuestra Idea

Nos gustaría tener un componente similar a WebView pero donde controlamos qué versión de Webkit/Chromium (o algún otro motor de renderizado) está siendo utilizado. No necesariamente tendría que ser la última y mejor versión. Es más importante que podamos hacer que nuestra aplicación funcione consistentemente en tantos dispositivos Android como sea posible.

Hasta ahora

Nuestra investigación hasta ahora no ha revelado nada útil. Hemos encontrado tres intentos muertos de portar Webkit a NDK (el puerto desnudo de Webkit para Android utiliza una funcionalidad no disponible en el NDK y, por lo tanto, no para la aplicación desarrolladores):

Mirando StackOverflow, también hemos encontrado una serie de preguntas similares, la mayoría de las cuales se resuelven apuntando a WebView (ya lo hacemos, y no es lo suficientemente bueno)

Actualmente estamos investigando si Chromium para Android (o partes de él) se puede convertir en una biblioteca que nuestra aplicación podría usar. ¿Alguien más ha hecho esto?

Actualización

Después de echar un vistazo al proyecto chromeview en GitHub (respuesta aceptada), decidimos que preferiríamos esperar a que Google lanza una vista WEB basada en Chrome en futuros dispositivos Android. El motor de renderizado Chromium resulta ser bastante grande (~40MB), lo que no deja mucho espacio para la aplicación real: (

Author: Community, 2013-05-17

5 answers

Pwnall / chromeview * GitHub https://github.com/pwnall/chromeview

ChormeView funciona como WebView de Android, pero está respaldado por el último código de Chromium.

 12
Author: Satoshi Deguchi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-05 01:27:28

Todos deberían revisar el proyecto Crosswalk. Patrocinado por Intel, y en desarrollo activo. Tiran de las fuentes de cromo y prometen hacer que todas las nuevas características de cromo estén disponibles en Crosswalk dentro de 6 semanas.

Crosswalk es un tiempo de ejecución web para aplicaciones HTML5 ambiciosas. Proporciona todas las características de un navegador moderno, combinado con una profunda integración de dispositivos y una API para agregar extensiones nativas. Es especialmente adecuado para dispositivos móviles.

Paso de peatones compatible con Android 4.0 y versiones posteriores, en arquitecturas ARM e Intel.

Dentro de una hora de encontrar este proyecto, tenía mi aplicación Cordova/Phonegap ejecutándose en un teléfono Android con Crosswalk. Me alegro de no tener que ajustar mi código Javascript para respetar las deficiencias de la (pre-4.4) android.webkit.WebView.

Https://crosswalk-project.org

 10
Author: flo von der uni,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-13 18:39:24

Sin WebKit hay un GeckoView. Seguro que añade más de 20Mb de libs al proyecto.

 3
Author: Gintas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-12-06 16:01:37

Traté de usar la última versión de código de Chromium para construir una vista web personalizada y fue un éxito.

Daré mi enfoque pero no el código fuente aquí en este momento.

Finalmente, el tamaño de la biblioteca WebView personalizada es de aproximadamente 30 MB, bastante grande para alguna aplicación pequeña. Pero es maravilloso porque puede soportar perfectamente desde Android 4.0.

Este es mi método:

  • Obtener el código fuente de chromium y construir web_view_apk (AndroidWebView test shell) siga esto instrucción https://www.chromium.org/developers/how-tos/android-build-instructions

  • Utilice apktool para descompilar el archivo apk de Aw Shell anterior. https://ibotpeaches.github.io/Apktool/

  • Cree su proyecto con la carpeta res, lib igual que el proyecto descompilado.

  • El archivo de manifiesto se encuentra en/src/android_webview/test/src/org / chromium / shell

  • Carpeta Src: encuentra las clases en el origen del proyecto chromium código que son respectivamente los archivos en la carpeta smali del proyecto descompilado.

Actualizaré mi código más tarde, pero puedes probar mi guía ahora si no quieres esperar.

 2
Author: Ken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-17 15:29:01

Consideraría Chrome pestañas personalizadas:

Https://developer.chrome.com/multidevice/android/customtabs

 0
Author: WhereDatApp.com,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-09-28 08:36:41