2012-06-08 12 views
14

¿Existe una mejor vista web para android? Los propios documentos de Google mencionan no confiar en el objeto webview.¿Hay una mejor vista web para Android

Pero para usar webkit parece extraño que sea tan limitado, en comparación con otros navegadores webkit utilizados en dispositivos móviles con hardware comparable.

Esto es evidente en las implementaciones de jquery mobile o las implementaciones de sencha touch para aplicaciones web. La versión de Android sufre ralentizaciones, problemas de renderizado y una mala experiencia del usuario, donde otros dispositivos móviles, como un iphone, funcionarán bien. ambos usan webkit. y fuera de una aplicación, el navegador real de Android funciona bien.

¿Hay alguna manera de abordar realmente el problema de Android, en un nivel inferior? ¿Alguien ha hecho un objeto web más completo para Android?

Gracias por cualquier idea

Respuesta

6

me temo que ambas respuestas (Commonsware y Fuzzical Logic) están evitando la realidad.

La realidad de nuestro hijo de dos años de experiencia en el desarrollo de una aplicación web HTML5 y más tarde PhoneGap aplicación (híbrido utilizando vista web) para iOS, Android y Windows Phone es:

funciona muy bien en iOS (tanto Safari y en WebView), funciona razonablemente en Chrome en Android, IE en Windows 8 e IE WebView (todos tuvieron problemas, pero se pueden resolver) pero sigue siendo una pesadilla en Android WebView.

WebView en Android estaba roto y todavía está roto después de la actualización a KitKat con Chromium reemplazándolo. Simplemente se bloquea en HTML5 normal (ni siquiera llega a los problemas de Javascript). Va a encontrar mucho de personas en la red observando cosas similares.

Cosas como "Soporte Flash" no tienen nada que ver con esto - Flash esto no es HTML5. Queda o no depende de él si un fabricante desea soportar un determinado complemento (o, en este caso, un middleware completo). Siempre entendí la decisión de Apple, y en una WebView tiene aún menos sentido.

Por lo tanto, el problema es un problema de Android/Google, tanto como los partidarios de esta plataforma quieren negarlo. Es particularmente embarazoso, por supuesto, para una empresa que siempre lloró "abrir" y luego no puede entregar un componente de navegador HTML5 en funcionamiento después de tantos años.

Pero su pregunta era, si hay alguna otra WebView de nadie:

Bueno, nos gustaría saber de uno. Lamentamos que tampoco hayamos encontrado uno hasta ahora, y la razón probablemente sea exactamente lo que se mencionó en las publicaciones anteriores: es muy difícil de implementar y dependerá del hardware (aceleración del hardware, etc.). Sin embargo, dado que Chrome funciona al menos razonablemente ahora (después de tantos años ...) me pregunto si la falta de calidad similar en Chromium WebView es intencional por parte de Google, tratando de evitar que las personas hagan grandes aplicaciones web o aplicaciones híbridas. (Todo lo contrario de lo que Microsoft está haciendo).

+0

Tienes razón. ¿Pero qué solución has encontrado para este problema? ¿Existe un buen reemplazo para webView? –

0

Esto es terriblemente cerca a un fuera de tema, enviar-su-rantes-otra parte, por favor especie de "pregunta".

¿Hay una mejor vista web para android?

Si por "vista web" se refiere a un motor de renderizado web integrable, probablemente no, como escribir este tipo de motores es difícil . Podrías ver si hay uno disponible como una rama de Firefox Mobile. O bien, puede hacer su propio puerto de WebKit para Android, utilizando la edición AOSP como punto de partida. Tenga en cuenta que es probable que ambos aumenten sustancialmente el tamaño de su aplicación.

Los propios documentos de Google mencionan no confiar en el objeto webview.

Cita, por favor.

¿Alguien ha hecho un objeto web más completo para Android?

Eso dependería de la definición de "objeto web más completo". Notablemente, usted omitió proporcionar ningún tipo de definición para esta frase.

+3

Trataré esta información en secciones a lo largo del tiempo, pero la gente ha hecho mejores listas de sugerencias, mejor subprocesamiento asíncrono y contribuciones de resolución de problemas generales a la base de código de Android, como ya sabrá.Esta es una pregunta sobre el objeto Webview que ve si alguien lo ha recreado o lo ha ampliado para abordar los problemas reales que tiene el objeto Webview. – CQM

+2

@CQM: 'WebView' en sí tiene una tonelada métrica de código nativo, lo que limita nuestra flexibilidad para realizar cambios. Todo lo demás que citó se implementa puramente en Java. – CommonsWare

+1

@CoderSeven Tal vez sea horrible para su nivel de habilidad, pero estas son respuestas conmovedoras e informativas para alguien que ha trabajado con la plataforma por un tiempo y no necesita tener su mano. –

14

CQM,

Entender que estoy de acuerdo con Commonswares y casi todo lo que se indica en la respuesta suministrada. Sin embargo, la pregunta parece implicar que hay un problema que tiene (ya sea en comprensión o concepción) y desea encontrar/desarrollar una solución más adecuada para sus necesidades.

Dirigiéndose a la pregunta y las respuestas que son probablemente va a recibir:

creo Commonswares válida la crítica se debe al hecho de que usted no indica qué o cómo el objeto de plataforma provisto no es satisfactorio, ni declara por qué o cuando cree que Google ha dicho que dicho objeto no es confiable. Si desea obtener mejores comentarios, edite su pregunta de manera adecuada para comunicar esto y tendrá menos problemas aquí.

Además, como se explica más adelante, implica que se trata de un problema con la plataforma Android (de hecho, casi de forma directa lo indica) y no lo es. Hay demasiadas consideraciones en el amplio alcance de la navegación web para ser tratadas completamente con un control simple como WebView. Microsoft se enfrentó al mismo problema con su Objeto IE COM incorporado en los años 90. Es un gran problema que no pertenece a ningún grupo.

Dirigiéndose a la pregunta implícita:

El objeto WebView es básicamente un mini-navegador que utiliza código de representación altamente flexible basado en parámetros completamente diferentes de la de un navegador dedicado. Esto incluye todo, desde la representación simple hasta objetos interactivos (sp?), Como los enlaces que dicha página emplearía. Este proceso es muy difícil (a falta de una palabra mejor) para miniaturizar de tal manera que la capacidad sea uniforme para integrarse en una variedad de aplicaciones que pueden tener una estructura y parámetros de diseño diferentes en todo momento. Diablos, estos motores son difíciles de programar de manera uniforme, incluso con un motor de navegación dedicado, lo que genera muchas diferencias entre los principales navegadores actuales en su conjunto.

Como tal, el WebView no está destinado a proporcionar la funcionalidad completa de un navegador dedicado, pero los aspectos más útiles de mostrar el contenido entregado en la web en una aplicación que a menudo hace otras cosas. Esto es especialmente cierto cuando considera las implicaciones de seguridad de agregar funcionalidad Javascript o procesamiento basado en el cliente entregado desde dicho contenido. Además, cada dispositivo tiene el potencial de tener un motor de representación diferente o una versión diferente del mismo motor de renderizado, de la misma forma que diferentes dispositivos tienen capacidades diferentes que utilizan SQLite (es decir, soporte de clave externa).

Como tal, la vista Web se proporciona como una solución para visualizar Web entregado contenido sin garantía en cuanto a su extensibilidad o sobre la utilidad menos que lo utilice puramente para ver (y posiblemente reacciona) de confianza y estándares de código HTML conforme. Una vez que te adentras en las prácticas reales de los sitios web del mundo real, te das cuenta de que HTML se hizo de manera tan flexible, específicamente porque cada estándar se adhirió a diferentes niveles por diferentes desarrolladores. Dado que el credo primario de HTML es que funciona (muestra el contenido), a pesar de las ambigüedades potenciales, el problema de desarrollar una solución completamente integral orientada a objetos integrada en la aplicación se vuelve aún más difícil de desarrollar.

... donde otros dispositivos móviles - como un iPhone - se ejecutarlo bien

Esto depende del contenido.Además, la filosofía de desarrollo para los dispositivos de Apple es completamente diferente de la de Android. Apple tiene solo un puñado de dispositivos, por lo que pueden garantizar la uniformidad en todos sus dispositivos y elegir cuál y cuándo agregar características adicionales. Por ejemplo, el primer iPhone no tenía soporte nativo para Flash. En base a las implicaciones de su pregunta, creo que esto no pasa la prueba "integral".

Android, por el contrario, tiene un repertorio de dispositivos mucho más amplio. Los fabricantes de estos dispositivos ajustan y modifican el código de Android para permitirles ofrecer soluciones compatibles más adecuadas a las necesidades específicas de sus dispositivos. Google no puede garantizar que un dispositivo determinado conserve la totalidad o parte de su código de la misma manera. Esto crea más limitaciones pero crea otras libertades increíbles.

... ambos usan webkit.

Chrome y Safari también usan webkit. Muchos desarrolladores se han visto afectados por las mínimas diferencias en la forma en que ambos lo utilizan de manera diferente.

... fuera de una aplicación, el navegador real de Android funciona bien.

Esto se trata más arriba.

¿Hay alguna manera de solucionar realmente el problema de Android, en un nivel inferior?

Una vez más, esto no es un problema del androide. Si tiene un problema específico con la implementación actual, puede codificar una solución por separado. Además, el contenido web se creó para ser visto en un navegador y se proporciona. La mejor práctica es definir lo que necesita hacer específicamente. ¿Necesita el WebView para ver cualquier página web? ¿O solo el tuyo? ¿Cuáles son sus problemas con su procesamiento actual? ¿Requiere scripting del lado del cliente?

Cada herramienta se hace con necesidades particulares en mente. Esto es incluso cierto de las llamadas listas de vistas "mejores". Esos puntos de vista se hicieron para abordar las necesidades específicas que podrían necesitar más de un desarrollador. En el mundo de la programación (especialmente OOP), realmente hay muy poco como integral. Si lo hubiera, no tendríamos que extender nuestros objetos en primer lugar. Al mirar una herramienta de este tipo, considere qué necesidad estaba tratando específicamente de abordar.

¿Alguien ha hecho un objeto web más completo para Android?

Sí. Normalmente se manifiestan en los otros navegadores dedicados que puede descargar a su dispositivo. En cuanto a si son accesibles o no: personalmente, no tengo idea y no estoy inclinado a mirar.

Declaración Final

La cuestión que ha planteado realmente no era lo suficientemente específica para proporcionar una solución verdadera. También pareció tomar una posición antagónica, debido a la mala elección de palabras. Si su problema no fue resuelto ni por la respuesta de CommonsWare ni por la mía, considere editar su pregunta para agregar nuestras necesidades más específicas. Dicho esto, espero que nuestras dos respuestas nos hayan proporcionado alguna información.

Espero que esto ayude,

FuzzicalLogic

+2

Esta es, de lejos, la mejor explicación de la vista web de Android y las razones de las discrepancias, incluso entre diferentes fabricantes de Android. ¡Gracias por esto! –

1

Me sorprende que nadie haya mencionado CocoonJS.

Tiene una reimplementación de la WebView estándar (Webview +); una vista web empaquetada, por lo que su aplicación se ejecutará de manera uniforme en todos los dispositivos (aunque se limite a Android 4+ e iOS 8+).

También hay un entorno llamado Canvas + para WebGL, pero está completamente separado de WebView +. Esto significa que tendrá que superponer WebView + sobre Canvas + para obtener DOM y lienzo que se visualicen simultáneamente. No comparten el mismo entorno JS, pero hay un sistema de mensajería para enviar mensajes entre los dos.

CocoonJS no parece una buena solución de nivel de producción debido a la compatibilidad limitada con el sistema operativo, pero tal vez lo será en el futuro.

También hay Crosswalk. Funciona para Android 4+ y Tizen.

+0

Nadie lo mencionó porque esta pregunta se publicó 3 años antes de su respuesta. Gracias por señalarlo ahora – CQM

Cuestiones relacionadas