Chromium integrado o Webkit en la aplicación de Android

Para nuestra aplicación de Android, nos gustaría incorporar 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). Intentamos hacer esto de la manera más transparente posible (desde el punto de vista de la experiencia visual/del usuario). Hasta ahora, hemos estado usando WebView para esto y eso funciona en su mayor parte. Excepto cuando no es así.

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

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) se está utilizando. No necesariamente tiene que ser la última y mejor versión. Es más importante que podamos hacer que nuestra aplicación funcione consecuentemente en tantos dispositivos Android como sea posible.

Hasta ahora

Nuestra investigación hasta ahora no ha arrojado nada útil. Hemos encontrado tres intentos fallidos de portar Webkit a NDK (el puerto de Webkit para Android utiliza una funcionalidad que no está disponible en el NDK y, por lo tanto, no para los desarrolladores de aplicaciones):

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 Cromo para Android (o partes de ella) se pueden convertir en una biblioteca que nuestra aplicación podría usar. ¿Alguien más ha hecho esto?

Noticias

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

preguntado el 17 de mayo de 13 a las 08:05

¿Has decidido cómo seguir adelante? ¿Puede proporcionar alguna actualización sobre su progreso o lo que intentó? -

Un año después de esta publicación, estamos intentando un enfoque similar. @Christian ¿Tiene alguna actualización o consejo para compartir? Hemos estado golpeando cabezas contra la pared durante demasiado tiempo usando WebView. Gracias -

@Bach: Finalmente nos dimos por vencidos con este enfoque. Principalmente porque los dispositivos de destino convergieron cada vez más en un conjunto con versiones de navegador integradas razonables. Además, Android ahora ofrece un WebView propio basado en Chromium: desarrollador.android.com/guide/webapps/migrating.html Simplemente vivimos con las limitaciones o desarrollamos aplicaciones nativas. -

6 Respuestas

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

ChromeView funciona como WebView de Android, pero está respaldado por el código Chromium más reciente.

Respondido el 09 de diciembre de 21 a las 15:12

Aparentemente, ChromeView tiene un error por el cual la imagen que se muestra no se actualiza cuando se desplaza (en #Problemas), a menos que incruste tipos de vista alternativos con interfaces muy diferentes a WebView, y mucho más difíciles de integrar. - tom mackenzie

También agrega la friolera de 40 MB a su aplicación: Codebeat

Ese proyecto parece muerto. ¿Alguna alternativa? - Arroyo

Paso de peatones crosswalk-project.org Hay una manera mejor. ¿Qué pasaría si el único WebView del que tuviera que preocuparse estuviera actualizado con la última versión de Google Chromium? Con Crosswalk, puedes - Satoshi Deguchi

git project pwnall ahora está obsoleto, las últimas actualizaciones en github tienen dos años. - Sergio Belevskij

Todos deberían revisar el proyecto Crosswalk. Patrocinado por Intel y en desarrollo activo. Obtienen las fuentes de Chromium y prometen que todas las funciones nuevas de Chromium estarán disponibles en Crosswalk dentro de las 6 semanas.

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

Crosswalk es compatible con Android 4.0 y posteriores, en arquitecturas ARM e Intel.

Una hora después 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 (anterior a 4.4) android.webkit.WebView.

https://crosswalk-project.org

Respondido 13 ago 14, 19:08

el problema con el paso de peatones es que su vista web tiene versiones binarias. uno para arquitectura de CPU Intel y otro para ARM. ¿Cómo sabemos qué plataforma está utilizando el dispositivo del usuario? En realidad, no es tan útil a menos que haya una biblioteca, no dos: Masoud Dadashi

puedes tener una aplicación con las bibliotecas armeabi y x_86. Pero el problema es el tamaño de 40 MB que agrega al binario: hariszaman

Lástima que ahora esté descontinuado. Estoy buscando ávidamente una alternativa adecuada ahora. - David Refoua

Sin WebKit hay un GeckoView. Claro, agrega más de 20 Mb de librerías al proyecto.

Respondido el 06 de diciembre de 13 a las 16:12

Actualmente, GeckoView parece una alternativa a tener en cuenta

Respondido 19 Feb 19, 12:02

Intenté usar la última versión de código de Chromium para crear una WebView personalizada y funcionó.

Daré mi enfoque pero no el código fuente aquí ahora.

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

Este a continuación es mi método:

  • obtenga el código fuente de chromium y cree web_view_apk (shell de prueba de AndroidWebView) siga estas instrucciones https://www.chromium.org/developers/how-tos/android-build-instructions

  • use 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 código fuente del proyecto de cromo que son los archivos respectivos 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.

Respondido 17 Oct 15, 16:10

Creé una vista web con funciones completas basada en Chromium, pero no puedo compartir mi código por algunas razones. Lo siento @Vaia - Conocido

hola, @Ken, hace casi un año, pero traté de seguir los pasos que mencionaste, pero todavía no me da un resultado satisfactorio como apk. ¿Puedo importar este proyecto a Android Studio o cualquier otro IDE? Te pregunto si se requiere algún otro paso para puntearlo. - Yogesh Seralia

Se verá como el proyecto ChromeView: github.com/pwnall/chromeview . Aunque este proyecto quedó en desuso. Pero tal vez te resulte útil para empezar. - Conocido

@Ken, sé que esto es antiguo, pero ¿podría compartir un poco más de cómo logró exactamente lograrlo? ¿Necesito reescribir un WebView completamente nuevo? ¿Es suficiente simplemente incluir libchromium.so lib y algunas otras pequeñas modificaciones? Necesito algunas características de la última versión de Chromium en mi aplicación que tiene que ser compatible con KitKat... ¡Gracias de antemano! - Allinone51

Consideraría las pestañas personalizadas de Chrome:

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

Respondido el 28 de Septiembre de 15 a las 09:09

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.