Эта заметка-обзор продолжит короткий цикл из двух статей, посвященных интересному проекту под названием Crosswalk. В ней я расскажу о том, что изменилось в проекте Crosswalk с версии 14.43.343.17 и стало ли удобнее им пользоваться теперь. Напомню, что Crosswalk Project — это runtime построенный на технологиях open source для HTML приложений. Основой для Crosswalk Project служит Google Chromium. Crosswalk Project также является open source проектом и распространяется под BSD License. В общем, если вы всё ещё поддерживаете ранние версии Android, то это неплохая замена для системного Android WebView. Предыдущие статьи вы можете найти по следующим ссылкам: С версии 14 до версии 20 в проект внесли очень много изменений и доработок, все не имеет смысла перечислять. Вы сами можете ознакомиться с ними в release notes. Я перечислю только некоторые, наиболее заинтересовавшие меня: Также в проект внесли большое количество исправлений, наиболее критичные перечислены там же. В предыдущих статьях я описывал ряд проблем и их решений для предыдущих версий Crosswalk. Радует, что многие из них решены в самом проекте и теперь не нужны «танцы с бубном». Классы XWalkCookieManager и XWalkSettings перенесли в более подходящие для них пакеты: XWalkSettings доступен напрямую через метод в объекте XWalkView. Также сам XWalkView нам может вернуть и свой User-Agent. Теперь для всего этого нет необходимости прибегать к использованию reflection. Добавился в Crosswalk (в класс XWalkResourceClient) и новый вызов для обработки запросов к ресурсам: Аналог очень удобного и доступного с Android API 21 вызова в стандартном WebView: Теперь можно легко узнать с помощью какого метода был сделан запрос: GET или POST. Также в XWalkView был добавлен специальный метод для получения изображения контента: Стал корректно вызываться метод onBackPressed() и появилась возможность использовать метод setOnTouchListener(OnTouchListener l). Так что теперь нет нужды перехватывать нажатие кнопки Back и touch events в dispatch методах. Документацию по последней и всем предыдущим версиям API вы можете найти здесь. На данный момент последняя доступная версия в репозитории 20.50.533.12, но в отличие от предпоследний версии 19.49.514.5, она уже имеет значение minSdkVersion равное API 16. Crosswalk 19 же всё ещё поддерживает все версии Android начиная с API 14. Несмотря на то, что ещё для Crosswalk 16 было заявлено: «Android support libraries (e.g. support-v4, support-v7 etc) are no longer bundled by Crosswalk...». С версии 16 и до последней 20 некорректно прописан импорт для библиотеки support-v4, поэтому, если вы используете в своём проекте конкретную версию этой библиотеки и не хотите, чтобы проект автоматически собирался с последний версией, то необходимо исключить её при добавлении Crosswalk в ваш проект: В прошлых статьях я не упомянул о достаточно существенной проблеме — увеличении размера сборки при добавлении Crosswalk. Сам Crosswalk собирается для двух архитектур: x86 и armv7. Соответственно библиотеки для каждой из них имеют размер ~20Mb, т.е. если собирать универсальный билд, то overhead составит порядка 40Mb. Есть 2 возможности улучшить ситуацию с дополнительным размером: собирать отдельные apk для каждой архитектуры или использовать облегченную версию Crosswalk — Crosswalk Lite. Crosswalk Lite — это попытка решить проблему путём отказа от некоторых возможностей библиотеки. Вот более точные данные по размеру Lite и обычной версии Crosswalk: Crosswalk Lite 10-15Mb vs. Crosswalk 20Mb. Однако, кроме ограниченного набора возможностей, у Crosswalk Lite есть ещё ряд минусов: К сожалению последняя доступная на данный момент версия Crosswalk Lite 17.46.460.1 отказалась запускаться с ошибкой (как и 2 её предшественницы): Поэтому, единственным реальным методом для уменьшения размера является сборка отдельных билдов для каждой архитектуры. Примеры добавлены в обновлённый тестовый проект, доступный на GitHub. В последних версиях учтены многие, в том числе и упоминаемые мной, недочёты предыдущих релизов. И, если вы уже используете Crosswalk, то вам однозначно стоит перейти на новые версии. Однако, остаётся другой вопрос. Может ли Crosswalk сейчас послужить хорошей заменой системному WebView? Если вы поддерживаете старые версии Android (в том числе версии Android 4 Jelly Bean и KitKat), то, очевидно, Crosswalk может вам пригодиться. Если же вы планируете поддерживать только Android 5+, то здесь ответ не очевиден. С 5ой версии Android стало доступно обновление системного WebView из Google Play (и появились новые, удобные запросы в API), а с 7ой версии Android приложение Google Chrome призвано заменить стандартный системный компонент. Насколько необходима дополнительная библиотека в таком случае сложно сказать. Возможно, для некоторых проектов полная идентичность поведения на всех версиях ОС перевесит увеличение размера и необходимость обновления ещё одной библиотеки. Android and iOS developer