Встроенный Chromium или Webkit в приложении Android
Для нашего приложения для Android мы хотели бы встроить наш собственный браузер / движок рендеринга. Наиболее вероятным кандидатом для этого является Webkit / Chromium. По сути, мы ищем нечто похожее на WebView, но поддерживаемое браузером (версией), который мы контролируем.
Фон
Значительные части нашего приложения состоят из фрагментов веб-страниц, встроенных в представление (обслуживаемых самим приложением). Мы стараемся сделать это максимально прозрачно (с точки зрения визуального восприятия и взаимодействия с пользователем). До сих пор мы использовали WebView для этого, и это работает по большей части. За исключением случаев, когда это не так.
К сожалению, некоторые производители телефонов решили настроить стандартный браузер Android здесь и там. В некоторых случаях это нарушает наше приложение или делает более заметным тот факт, что мы встраиваем веб-страницу.
Наша идея
Мы хотели бы иметь компонент, похожий на WebView, но где мы контролируем, какая версия Webkit/Chromium (или какой-либо другой механизм рендеринга) используется. Это не обязательно должна быть последняя и лучшая версия. Более важно, чтобы наше приложение работало согласованно на максимально возможном количестве устройств Android.
До сих пор
Наше исследование пока не принесло ничего полезного. Мы нашли три мертвые попытки портировать Webkit на NDK (пустой порт Webkit для Android использует функции, недоступные в NDK и, следовательно, не для разработчиков приложений):
- Порт Android Webkit от компании 100 (без обновлений более двух лет)
- mogo-browser (их последняя редакция заключалась в удалении всего исходного кода)
- NDK Webkit (официально оставлено его автором)
Рассматривая Stackru, мы также нашли ряд похожих вопросов, большинство из которых решаются с помощью ссылки на WebView (мы уже это делаем, и это не достаточно хорошо).
- Компонент Webkit для Android
- Вставить базовый WebKit + V8 в мое приложение
- Внедрение более новой версии WebKit с приложением Android
В настоящее время мы изучаем, можно ли превратить Chromium для Android (или его части) в библиотеку, которую могло бы использовать наше приложение. Кто-нибудь еще делал это?
Обновить
Изучив проект chromeview на GitHub (принятый ответ), мы решили, что лучше подождать, пока Google выпустит Chrome WebView на будущих устройствах Android. Механизм рендеринга Chromium оказывается довольно большим (~40 МБ), который не оставляет много места для реального приложения:(
5 ответов
pwnall / chromeview · GitHub https://github.com/pwnall/chromeview
ChormeView работает как Android WebView, но поддерживается новейшим кодом Chromium.
Вы все должны проверить проект Crosswalk. При поддержке Intel, и в активной разработке. Они используют источники Chromium и обещают сделать все новые функции Chromium доступными в Crosswalk в течение 6 недель.
Crosswalk - это веб-среда для амбициозных приложений HTML5. Он предоставляет все функции современного браузера в сочетании с глубокой интеграцией устройств и API для добавления собственных расширений. Это особенно подходит для мобильных устройств.
Crosswalk поддерживает Android 4.0 и новее, на архитектурах ARM и Intel.
В течение одного часа после нахождения этого проекта мое приложение Cordova/Phonegap было запущено на телефоне Android с Crosswalk. Я рад, что мне не нужно корректировать мой код Javascript, чтобы учесть недостатки (до 4.4) android.webkit.WebView.
Без WebKit есть GeckoView. Конечно, он добавляет в проект более 20 МБ библиотек.
Я попытался использовать последнюю версию кода Chromium для создания собственного WebView, и это успешно.
Я дам свой подход, но не исходный код здесь прямо сейчас.
В конечном итоге размер настраиваемой библиотеки WebView составляет около 30 МБ, что достаточно для небольшого приложения. Но это замечательно, потому что может прекрасно поддерживать от Android 4.0.
Это ниже мой метод:
получить исходный код Chromium и собрать 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 декомпилированного проекта.
Я обновлю свой код позже, но вы можете попробовать мое руководство сейчас, если не хотите ждать.
Я хотел бы рассмотреть пользовательские вкладки Chrome: