![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#1
|
|
![]() Администратор ![]() ![]() ![]() ![]() ![]() Группа: Главные администраторы Сообщений: 14349 Регистрация: 12.10.2007 Из: Twilight Zone Пользователь №: 1 ![]() |
Разработка под Android*, Разработка*, Мобильный веб*, Mobile Development* ![]() Эта статья откроет небольшой цикл из двух частей, посвященных интересному проекту под названием Crosswalk Project. В них я затрону вопросы интеграции Crosswalk в Android приложение и использовании его как замену системного WebView в обычном приложении. Под «обычным» я подразумеваю классический проект на Java с использованием Android SDK, в противовес HTML5 приложениям и нативному C++ коду. А т.к. Crosswalk в основном используется как runtime запуска HTML5 приложений, то, чтобы не путаться в терминах, буду называть этот проект обычным. В первой части я хочу рассказать непосредственно об интеграции Crosswalk в Android приложение и использовании Crosswalk WebView вместо системного Android WebView. Во второй части я опишу некоторые нюансы и сложности в работе с Crosswalk при интеграции, а также сделаю общие выводы. Что же такое Crosswalk? Crosswalk Project — это runtime построенный на технологиях open source для HTML приложений. Основой для Crosswalk Project служит Google Chromium. Crosswalk Project также и сам является open source проектом и распространяется под BSD License. Crosswalk расширяет существующие возможности web платформы, ниже небольшой список особенностей, отмеченных создателями. Применяя Crosswalk вы сможете:
Итак Crosswalk в первую очередь нацелен на использование в качестве runtime для HTML5 приложений и интегрирован с Cordova начиная с версии 4.0. Поэтому он достаточно хорошо известен среди разработчиков гибридных приложений, но, возможно, не так хорошо в среде Java разработки. Crosswalk может использоваться как замена системного WebView в обычном Android проекте. Официально Crosswalk поддерживает все версии Android начиная с 4.0 и выше. В этом случае мы получаем самостоятельный браузер, который позволит нам не зависеть от версии Android и ограничений реализации WebView в этой версии системы. Компоненты Crosswalk. Создатели Crosswalk не предполагали своей целью полную совместимость с системным WebView. Однако, в общем мы имеем достаточно близкую копию интерфейсов системного браузера до версии Android 4.4, с которой системный WebView также начал базироваться на Chromium. Поэтому, и к большому сожалению, в Crosswalk вы не найдете очень удобного и доступного с Android API 21 вызова: public WebResourceResponse shouldInterceptRequest (WebView view, WebResourceRequest request) С версии Crosswalk 10 авторы решили еще дальше отойти от стандартных интерфейсов и добавили некоторые дополнительные вызовы в свой публичный API. Javadoc для различных версий Crosswalk вы можете найти на официальном сайте, ниже я рассмотрю несколько важных моментов для 14ой версии, последней релизной версии на данный момент. Сейчас Crosswalk содержит собственно сам Crosswalk WebView (или XWalkView), а также:
Кроме перечисленных выше классов имеется несколько вспомогательных классов и классов облегчающих интеграцию в приложение-браузер, но не использовавшихся мной. Например, XWalkApplication и XWalkActivity. Интеграция Crosswalk в проект. Исходный код с интегрированным XWalkView и описанными решениями доступен в GitHub. В целом интеграция Crosswalk достаточно проста, если вам необходимо интегрировать Crosswalk в проект разрабатываемый с помощью Eclipse/ADT, то есть отличный официальный гайд по этому поводу. Здесь мы рассмотрим интеграцию в проект с использованием Android Studio. По сути она заключается в подключении библиотеки Crosswalk, все остальные операции не сильно отличаются от использования стандартного WebView. 1. Необходимо создать новый проект в Android Studio. Я, для примера, создал проект с пустой Activity и поддержкой начиная с API 14. 2. Подключить репозиторий со сборками Crosswalk и выбрать саму сборку проекта. Я использую последнюю доступную с версией 14.43.343.17: repositories { maven { url 'https://download.01.org/crosswalk/releases/crosswalk/android/maven2' } } dependencies { compile 'org.xwalk:xwalk_core_library:14.43.343.17' } 3. Добавить в AndroidManifest.xml разрешения для использования сети и т.д.: <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> Полный список разрешений описан в официальном гайде, указанном выше. Он включает в себя доступ к местоположению, камере, записи аудио. Для простой реализации браузера все они не нужны. В примере указываем только разрешения для доступа собственно в интернет и записи в хранилище, для хранения кэша Crosswalk. 4. Добавить XWalkView в layout там, где вы хотите его использовать. Простой пример: <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <org.xwalk.core.XWalkView android:id="@+id/xwalkview" android:layout_width="match_parent" android:layout_height="match_parent" /> </FrameLayout> 5. Для загрузки url в коде вашей Activity необходимо добавить следующие вызовы: mXWalkView = (XWalkView) findViewById(R.id.xwalkview); mXWalkView.load("http://stars.chromeexperiments.com/", null); 6. Аналогично системному WebView, можно подключить классы для получения оповещений от XWalkView: mXWalkView.setResourceClient(new MyResourceClient(mXWalkView)); mXWalkView.setUIClient(new MyUIClient(mXWalkView)); Дополнительно, если вы хотите использовать XWalkView как базу для своего HTML5 приложения, можно переопределить методы onActivityResult, onNewIntent и другие для трансляции сообщений в Crosswalk. Например, onActivityResult используется в том числе для обработки событий от JavaScript диалоговых окон. К этому можно добавить, что для HTML5 приложений имеет смысл наследоваться от XWalkActivity, в котором уже реализованы все нужные моменты. Некоторые нюансы реализации. Приведу несколько моментов реализации Crosswalk, на которые сразу стоит обратить внимание:
Более сложные моменты и их возможные решения я описал во второй статье, чтобы не углубляться при быстром ознакомлении. Выводы. Коротко о Crosswalk можно сказать, что это хорошее и достаточно удобное решение с адекватной поддержкой. Как runtime для HTML5 приложений выглядит очень перспективно, особенно учитывая активный процесс разработки. Определенно можно рекомендовать для использования при создании гибридных приложений. Original source: habrahabr.ru (comments, light). Читать дальше -------------------- |
|
|
![]() ![]() |
Текстовая версия | Сейчас: 17.6.2025, 12:40 | |
|