Есть ли лучший webview для Android

есть ли лучший webview для android? В собственных документах Google упоминается, что не следует полагаться на объект webview.

но для использования webkit кажется странным, что он настолько ограничен, по сравнению с другими браузерами webkit, используемыми на мобильных устройствах с сопоставимым оборудованием.

Это очевидно в мобильных реализациях jquery или аналогично реализациям Sencha touch для веб-приложений. Версия Android страдает замедлениями, проблемами рендеринга и плохим пользовательским опытом, где другие мобильные устройства - например, iphone-будут работать нормально. они оба используют webkit. и вне приложения фактический браузер android работает просто отлично.

есть ли способ действительно решить проблему android на более низком уровне? Кто-нибудь сделал более полный веб-объект для Android?

Спасибо за информацию

4 ответов


Я боюсь, что оба ответа (Commonsware и Fuzzical Logic) избегают реальности.

реальность из нашего двухлетнего опыта разработки веб-приложения HTML5 и более позднего приложения PhoneGap (гибрид с использованием веб-просмотра) для iOS, Android и Windows Phone:

отлично работает на iOS (как Safari, так и в WebView), работает разумно в Chrome на Android, т. е. на Windows 8 и IE WebView (у всех были проблемы, но их можно решить), но остается кошмар в Android Объект WebView.

на WebView в Android был сломан и по-прежнему сломан после обновления KitKat с заменой хрома. Он просто падает на обычный HTML5 (даже не добираясь до проблем Javascript). Вы найдете много людей в сети наблюдать подобные вещи.

такие вещи, как" поддержка Flash", не имеют ничего общего с этим - Flash это не HTML5. Хочет ли производитель поддерживать определенный плагин (или, в это дело, целое промежуточное ПО) зависит от него. Я всегда понимал решение Apple, и в WebView это имеет еще меньше смысла.

Итак, проблема заключается в проблеме Android/Google, поскольку сторонники этой платформы хотят ее отрицать. Это особенно неловко, конечно, для компании, которая всегда кричала "открыть", а затем не может поставить рабочий компонент браузера HTML5 после стольких лет.

но ваш вопрос был, если есть какой-либо другой WebView от кто-нибудь еще:

Ну, мы хотели бы услышать об одном. К сожалению, мы также не нашли его до сих пор, и причина, вероятно, именно то, что было упомянуто в вышеуказанных сообщениях: это очень сложно реализовать, и это будет зависеть от оборудования (аппаратное ускорение и т. д.). Однако, поскольку Chrome работает по крайней мере разумно сейчас (после стольких лет...) Интересно, намеренно ли отсутствие подобного качества в Chromium WebView Google, пытаясь удержать людей от создания отличные веб-приложения или гибридные приложения. (Совершенно противоположно тому, что делает Microsoft.)


CQM,

поймите, что я согласен с Commonswares и почти все, что указано в предоставленном ответе. Однако вопрос, похоже, подразумевает, что есть проблема, которую вы имеете (либо в понимании, либо в концепции) и хотите найти/разработать более адекватное решение для своих потребностей.

решение вопроса и ответы, которые вы, вероятно, получите:

Я верю Commonswares действительный критика связана с тем, что вы не заявляете почему или как предоставленный объект платформы неудовлетворителен, и вы не заявляете почему или , когда вы считаете, что Google сказал, что указанный объект ненадежен. Если вы хотите получить лучшую обратную связь, отредактируйте свой вопрос соответствующим образом, чтобы сообщить об этом, и у вас будет меньше проблем.

далее, как объяснено ниже, вы подразумеваете, что это проблема с платформой Android (на самом деле, почти непосредственно заявить об этом), и это не так. Существует слишком много соображений в широкой области просмотра веб-страниц, чтобы полностью решить простой элемент управления, такой как WebView. Microsoft столкнулась с той же проблемой с их встроенным IE COM-объектом еще в 90-х годах. Это большая проблема, которая не принадлежит ни к одной группе.

обращаясь к подразумеваемому вопросу:

В WebView object-это в основном мини-браузер, использующий очень гибкий код рендеринга, основанный на совершенно разных параметрах от выделенного браузера. Это включает все: от простой визуализации, даже interactible (СП?) объекты, такие как ссылки, которые будет использовать такая страница. Этот процесс очень трудно (за неимением лучшего слова), чтобы уменьшить таким образом, что возможность единых для встраивания в различные приложения, которые могут иметь различную структуру макета и параметры каждый раз. Черт возьми, такие движки трудно программировать равномерно даже с выделенным механизмом просмотра, что приводит к большим различиям между текущими основными браузерами в целом.

таким образом,WebView не предназначен для обеспечения полной функциональности выделенного браузера, но наиболее полезные аспекты отображения веб-контента в приложении, которое часто делает другие вещи. Это особенно верно, когда вы рассматриваете последствия для безопасности добавления Функциональность Javascript или клиентская обработка, доставленная из указанного содержимого. Добавьте к этому, каждое устройство имеет потенциал иметь другой механизм рендеринга или другую версию одного и того же механизма рендеринга, так же, как разные устройства имеют разные возможности с использованием SQLite (т. е. поддержка внешнего ключа).

таким образом, WebView предоставляется как решение для отображения веб-контента без гарантии его расширяемости или удобства использования если вы его используете чисто для просмотра (и, возможно, реагирования) доверенного и соответствующего стандартам HTML-кода. Как только вы попадете в реальную практику реальных веб-сайтов, вы поймете, что HTML был сделан так гибко именно потому, что каждый стандарт придерживался на разных уровнях разными разработчиками. Поскольку основным кредо HTML является то, что он работает (показывает контент), несмотря на потенциальные неоднозначности, проблема разработки полностью всеобъемлющего объекта, встроенного в приложение ориентированное решение становится еще сложнее разработать.

... где другие мобильные устройства - например, iphone-будут работать нормально

Это зависит от содержания. Кроме того, философия разработки для устройств Apple полностью отличается от Android. Apple имеет только несколько устройств, поэтому они могут гарантировать единообразие на своих устройствах и выбирать, какие и когда добавлять дополнительные функции. Например, у первого iPhone не было родного поддержка Flash. Основываясь на последствиях вашего вопроса, я считаю, что это не "комплексный" тест.

Android, напротив, имеет гораздо более широкий репертуар устройств. Код для Android настраивается и изменяется производителями этих устройств, чтобы позволить им сделать более адекватные поддерживаемые решения для их конкретных потребностей устройств. Google не может гарантировать, что любое данное устройство сохранит любой или весь свой код одинаковым. Это создает дополнительные ограничения но создает другие очень удивительные свободы.

... они оба используют webkit.

Chrome и Safari также используют webkit. Многие разработчики страдали от даже мельчайших различий в том, как они оба используют его по-разному.

... вне приложения фактический браузер android работает просто отлично.

это рассматривается выше.

есть ли способ, чтобы действительно решить проблема android, на более низком уровне?

опять же, это не android в проблема. Если у вас есть конкретная проблема с текущей реализацией, вы можете закодировать отдельное решение. Кроме того, веб-контент был сделан для просмотра в браузере, и это предусмотрено. Лучше всего определить, что именно вам нужно сделать. Вам нужно WebView посмотреть любой веб-страницы? Или только твое? Какие у вас проблемы с его текущий рендеринг? Вы требуете клиентские скрипты?

каждый инструмент сделан с определенными потребностями в виду. Это относится даже к так называемым "лучшим" listviews. Эти мнения были высказаны для удовлетворения конкретных потребностей, которые могут потребоваться более чем одному разработчику. В мире программирования (особенно ООП) действительно очень мало таких вещей, как всеобъемлющий. Если бы это было так, нам не пришлось бы расширять наши объекты в первую очередь. Рассматривая такой инструмент, рассмотрим какую именно нужду он пытался решить.

кто-нибудь сделал более полный веб-объект для Android?

Да. Они обычно проявляются в других специализированных браузерах, которые вы можете загрузить на свое устройство. Что касается того, доступны они или нет: лично я понятия не имею и не склонен смотреть.

Итоговое Заявление

вопрос, который вы подняли, действительно не был достаточно конкретным, чтобы предоставить верное решение. Он также, казалось, занял антагонистическую позицию из-за плохого выбора слов. Если ваша проблема не была решена ни ответом CommonsWare, ни моим собственным, рассмотрите возможность редактирования вашего вопроса, чтобы добавить наши более конкретные потребности. Тем не менее, я надеюсь, что оба наших ответа смогли дать вам некоторое представление.

надеюсь, это поможет,

FuzzicalLogic


Я удивлен, что никто не упомянул CocoonJS.

Он имеет реимплементацию стандартного WebView (Webview+); упакованный Webview, поэтому ваше приложение будет работать последовательно на разных устройствах (хотя и ограничено Android 4+ и iOS 8+).

существует также среда, называемая Canvas+ для WebGL, но она полностью отделена от WebView+. Это означает, что вам нужно наложить WebView+ поверх Canvas+, чтобы получить отображение DOM и canvas одновременно. Они не поделитесь той же средой JS, но есть система обмена сообщениями для отправки сообщений между ними.

CocoonJS не кажется хорошим решением на уровне производства из-за ограниченной поддержки ОС, но, возможно, это будет в будущем.

есть еще переход. Он работает для Android 4+ и Tizen.


Это чертовски близко к не-ТЕМЕ, отправить-ваши-разглагольствования-в другом месте - пожалуйста, своего рода"вопрос".

есть ли лучший webview для android?

Если под "webview" вы подразумеваете встраиваемый движок веб-рендеринга, вероятно, нет, так как написание таких движков жесткий. Вы можете увидеть, доступен ли он в качестве ответвления Firefox Mobile. Или вы можете сделать свой собственный порт WebKit для Android, используя AOSP edition в качестве отправной точки. Отмечать что оба, вероятно, значительно увеличат размер вашего приложения.

собственные документы Google упоминают, что не следует полагаться на объект webview.

цитату, пожалуйста.

кто-нибудь сделал более полный веб-объект для Android?

Это будет зависеть от определения "более всеобъемлющего веб-объекта". Примечательно, что вы забыли предоставить какое-либо определение для этой фразы.