Javascript на Android (вне браузеров) популярен среди гибридных приложений, ориентированных на несколько платформ. Что ж, когда мы говорим о гибридных мобильных приложениях, обычно подразумевают Android и iOS, но не будем забывать и об остальных 0,4% рынка.

В следующих статьях я расскажу о некоторых распространенных приемах Javascript на Android, и мы увидим, как он взаимодействует с ОС с точки зрения жизненного цикла приложения, аппаратной поддержки и ограничений.

Эта первая статья будет кратким изложением истории WebViews и того, что это значит для вашего проекта, когда вы ориентируетесь на разные уровни API.

В следующей статье мы углубимся во взаимодействие ОС с фреймворком Javascript из WebView.

В третьей статье мы рассмотрим прогрессивные веб-приложения и разницу с нативным приложением.

История веб-просмотров

Распространенным способом создания гибридных приложений является использование WebView для отображения веб-контента, например HTML-страниц, управляемых Javascript. Таким образом, вы можете повторно использовать Javascript, например, для iOS с небольшим собственным кодом. Для этого есть несколько фреймворков, например Cordova и Unity. Если вы разрабатывали какую-либо веб-технологию, вы знаете, что одной из самых больших головных болей является поддержка браузера. У вас есть Edge, Chrome, Safari и т. д. Даже эти браузеры имеют разные версии, поддерживающие разные стандарты.

А как насчет WebView, какую версию и какие стандарты он поддерживает? Это не простой вопрос. За последние несколько лет Android WebView претерпел три основных изменения.

KitKat, также известный как Темные века

KitKat (Api 19–20), WebView был частью ОС Android. Google планировал, что это будет оболочка Chromium. Это имело два основных недостатка. Во-первых, OEM-производители, такие как Samsung, Sony и HTC, поставляли свои устройства со своей собственной версией AOSP. Во многих случаях поставщики реализовывали свои собственные версии WebView, чтобы повысить производительность или добавить новые функции. Это приводит к тому, что устройства KitKat имеют широкий спектр различных стандартов, и приложения могут не выглядеть одинаково на двух разных устройствах. Второй недостаток заключается в том, что как часть ОС обновления приходят через OTA в виде системных исправлений, что пользователь может делать не очень часто. Это, а также тот факт, что OEM-производители меньше заинтересованы в обновлении своих старых устройств, чем их новых моделей, делает приложения WebView на KitKat довольно сложными для обслуживания и тестирования. Распространенным способом было бы использование третьей части WebView, такой как пешеходный переход, для обеспечения согласованности устройств.

Леденец на палочке

Чтобы решить проблемы в KitKat, Google сделал WebView отдельным системным приложением в Lollipop. Это означало, что OEM-производители больше не могли использовать свою собственную версию, и ее можно было обновить через Google Play. WebView по-прежнему основан на Chromium, поэтому он немного отличается от Chrome. Это означает, что Google должен выполнить в два раза больше работы, чтобы связать WebView и Chrome, плюс, если вы создадите онлайн-приложение, оно может вести себя в вашем браузере немного иначе, чем в вашем приложении. Кроме того, в некоторых странах (КИТАЙ) google play запрещен. Это значительно усложняет пользователям в этих странах обновление системы WebView.

Нуга

Наконец Google решил использовать Chrome для WebView в Nougat. За исключением превращения Chrome в системное приложение, которое нельзя удалить, это позволяет пользователю одновременно обновлять и WebView, и Chrome. Пользователю не обязательно использовать Chrome для просмотра, он по-прежнему может использовать Firefox и другие сторонние браузеры, в этих случаях ваше приложение и браузер могут отличаться.

Вывод

С приведенной выше информацией вы должны иметь приблизительное представление о том, какую версию Android должен поддерживать ваш проект, и что это означает для обслуживания и совместимости. Для поддержки Pre Lollipop может потребоваться довольно много работы, в то время как Pre Nougat может по-прежнему использовать старую версию WebView.

Kitkat в настоящее время занимает 6–7% рынка Android, а Lollipop — 17–18%, но в зависимости от целевой группы ваших приложений использование может выглядеть по-разному.

В следующей статье мы рассмотрим фундаментальное взаимодействие между WebView Javascript и ОС Android.