Подтвердить что ты не робот

Встроенный Chromium или Webkit в приложении для Android

Для нашего приложения для Android мы хотели бы встроить собственный браузер/механизм рендеринга. Наиболее вероятным кандидатом для этого является Webkit/Chromium. Мы ищем что-то похожее на WebView, по существу, но поддерживаемое браузером (версией), которым мы управляем.

Фон

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

Некоторые производители телефонов, к сожалению, решили настроить стандартный браузер Android здесь и там. В некоторых случаях это нарушает наше приложение или делает факт, что мы вставляем веб-страницу более заметным.

Наша идея

Мы хотели бы иметь компонент, похожий на WebView, но где мы контролируем, какая версия Webkit/Chromium (или какой-либо другой рендеринг двигатель). Это не обязательно должно быть последней и самой большой версией. Более важно, чтобы мы могли заставить наше приложение последовательно работать на любом устройстве Android.

Пока

Наши исследования пока не принесли ничего полезного. Мы обнаружили три мертвых попытки портировать Webkit на NDK (для открытого порта Webkit для Android используются функции, недоступные в NDK, и, следовательно, разработчики приложений):

Посмотрев на StackOverflow, мы также нашли ряд подобных вопросов, большинство из которых решаются, указывая на WebView (мы уже делаем это, и это недостаточно хорошо)

В настоящее время мы изучаем, может ли Chromium для Android (или его части) превращаться в библиотеку, которую может использовать наше приложение. Кто-нибудь еще это сделал?

Update

Посмотрев проект chromeview на GitHub (принятый ответ), мы решили, что нам лучше дождаться, когда Google выпустит веб-браузер на основе Chrome на будущих устройствах Android. Механизм рендеринга Chromium оказывается довольно большим (~ 40 МБ), что не оставляет много места для реального приложения: (

4b9b3361

Ответ 1

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

ChormeView работает как Android WebView, но поддерживается последним кодом Chromium.

Ответ 2

Вы должны проверить проект Crosswalk. Спонсируется Intel и активно развивается. Они вытаскивают источники Chromium и обещают сделать все новые функции Chromium доступными на Crosswalk в течение 6 недель.

Crosswalk - это веб-среда выполнения для амбициозных приложений HTML5. Он предоставляет все возможности современного браузера в сочетании с глубокой интеграцией устройств и API для добавления собственных расширений. Он особенно подходит для мобильных устройств.

Crosswalk поддерживает Android 4.0 и новее, на архитектурах ARM и Intel.

В течение часа после того, как я нашел этот проект, у меня было приложение Cordova/Phonegap на Android-телефоне с Crosswalk. Я рад, что мне не нужно настраивать код Javascript для соблюдения недостатков (pre-4.4) android.webkit.WebView.

https://crosswalk-project.org

Ответ 3

Без WebKit существует GeckoView. Конечно, он добавляет к проекту более 20 миллионов библиотек.

Ответ 4

Я попытался использовать последнюю версию кода Chromium для создания пользовательского WebView и успешно.

Я сейчас дам свой подход, но не исходный код.

В конечном итоге размер пользовательской библиотеки WebView составляет около 30 МБ, довольно большой для небольшого приложения. Но это замечательно, потому что отлично поддерживает Android 4.0.

Ниже приведен мой метод:

  • извлечь исходный код хрома и построить web_view_apk (тестовая оболочка AndroidWebView) следуйте этой инструкции https://www.chromium.org/developers/how-tos/android-build-instructions

  • используйте apktool для декомпиляции файла apk Aw Shell выше. https://ibotpeaches.github.io/Apktool/

  • создайте проект с папкой res, lib так же, как и декомпилированный проект.

  • Файл манифеста находится в /src/android _webview/test/src/org/chromium/shell

  • папка src: вы найдете классы в исходном коде проекта chromium, которые соответствуют файлам в smali-папке декомпилированного проекта.

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