21 апреля 2015 года команда Cordova (ранее PhoneGap) выпустила версию 5.0 своих инструментов, которые позволяют веб-разработчикам разрабатывать мобильные приложения сразу для нескольких платформ. Новый релиз содержит достаточно много новых улучшений для разработчика, о которых дальше и пойдет речь.

Кроме исправления ошибок, были сделаны следующие улучшения:
  • Поддержка подключаемых WebView
  • Поддержка CSP
  • Сохранение используемых платформ и плагинов в конфигурации проекта
  • Использование NPM для хранения плагинов
  • Русская документация


Вкратце о Cordova


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

Cordova — это платформа, позволяющая разрабатывать мобильные приложения на разные платформы, путем встраивания браузера в мобильное приложение. Таким образом, ваше приложение является, по сути, мини-браузером, который показывает один единственный сайт — ваше приложение. Все ресурсы можно помещать в распространяемый пакет приложения для ускорения загрузки, а можно загружать с сервера при необходимости.

По умолчанию Cordova предоставляет только базовые возможности браузера, которые есть на данном мобильном устройстве, но позволяет расширять набор функций, доступных в браузере путем использования плагинов. Каждый плагин предоставляет унифицированный интерфейс, который можно использовать из браузера на разных платформах. И если поддерживаемые функции CSS/JS отличаются в каждом браузере от версии операционной системы или платформы, то функционал Cordova старается предоставлять унифицированный функционал для всех поддерживаемых версий мобильных ОС.

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

Нововведения


Теперь, собственно, о нововведениях.

Поддержка подключаемых WebView

Ранее при разработке с использованием Cordova разработчики были ограничены только функционалом браузера, который был предустановлен ОС. В случае с Android разница между браузером установленным в версии 4.0.3 и 4.4, а теперь и 5.0 достаточно существенна, как в плане функционала, так и в плане производительности. В iOS ситуация с браузерами получше, но тоже были узкоспецифические моменты в поведении для iOS 7.0 и iOS 7.1. Все эти различия доставляли достаточно серьезные проблемы при разработке.

С появлением подключаемых WebView ситуация начинает изменяться и разработчик получает больше возможностей для контролирования конечного браузера, в котором будет выполняться приложение.

Теперь разработчики на Android могут, например, унифицировать браузер, который будет использоваться в гибридном приложении, используя CrossWalk. Например, используя нижеследующие команды вы сможете запустить свое приложение в версии Хрома не менее чем 40 даже на Android 4.0.3, за что спасибо инженерам из Intel:

cordova create hello com.example.hello HelloWorld
cd hello
cordova platform add android
cordova plugin add cordova-plugin-crosswalk-webview

Аналогично для iOS теперь появляется возможность использовать WKWebView вместо UIWebView, что ускорит ваше приложение и, как следствие, понизит энергопотребление вашего телефона.

Для других платформ пока поддержки данного функционала нет. Но, по крайней мере, если будет такая необходимость, это можно будет сделать.

Поддержка CSP

Ранее Cordova использовала собственные механизмы для управления безопасностью при выполнение веб-запросов в гибридных приложениях. Если ранее вам приходилось полагаться на проприетарный для Cordova механизмы контроля над выполняемыми HTTP запросам, то теперь для этих целей имеется возможность использовать CSP (Content Security Policy).

Сохранение используемых платформ и плагинов в конфигурации проекта

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

Сейчас же использование параметра --save позволяет вам не хранить код платформы Cordova в системе контроля версий. Например:

cordova platform add android --save
cordova plugin add cordova-plugin-crosswalk-webview --save

Теперь простое выполнение на другой машине:

cordova prepare

Восстановит платформу Android и установит для нее плагин cordova-plugin-crosswalk-webview. Достаточно удобно, как по мне.

Использование NPM для хранения плагинов

Ранее Cordova поддерживала свой собственный репозиторий плагинов, но с новым релизом все плагины должны будут переехать в репозиторий NPM. Теперь можно искать плагины для Cordova с использованием:

npm search cordova

Для тех, кто уже работает, не принципиально использовать ли инструментарий Cordova, но для тех, кто только начинает работать с Cordova одной утилитой командной строки, которую надо запоминать, будет меньше. Также с появлением закрытых репозиториев NPM вы можете делать свои собственные закрытые репозитории плагинов Cordova.

Также в связи с этим переходом изменился формат идентификаторов с org.apache.cordova.device на cordova-plugin-device. Обращайте на это внимание, когда будете читать статьи в интернете.

Русская документация

Также с появлением версии 5.0 появилась русская документация. Часть документации была переведена мной лично, а часть переводилась с помощью Microsoft Bing, поэтому в некоторых местах перевод пока оставляет желать лучшего. Несмотря на то, что качество перевода с моей точки оставляет желать лучшего, из моего опыта работы со студентами это лучше, чем ничего. Я буду благодарен любой помощи с вычиткой документации, даже если это будет просто указание тех разделов, которые содержат автоматический перевод.

Если есть какие то замечания по работе последних версий Cordova, можно написать тикет в JIRA. Желающие помочь с переводом могут зарегистрироваться на CrowdIn и помочь с переводом.

Комментарии (14)


  1. kopch
    27.05.2015 15:43
    +2

    На сколько больше будет весить crosswalk приложение? Так же, как и через Intel SDK, на 20МБ?


    1. naum
      27.05.2015 16:07
      +1

      боюсь, что да, ибо webkit не мал, а с учетом всех фич — однозначно не мал. 19Mb


    1. kant2002 Автор
      27.05.2015 18:25
      +1

      Именно так, на 20Mb, потому что Intel SDK как раз использует Crosswalk насколько я понимаю. Вокруг Cordova достаточно большое кол-во оболочек — PhoneGap, AppGyver Steroids, Intel XDK, Ionic, Chrome App Developer Tool for Mobile. Все предоставляют набор плагинов и доп инструментарий. Глядишь и MS что-то свое предложит


      1. biblos
        27.05.2015 23:31

        а встречали такие оболочки, что с коробки шифруют код приложения?


        1. kant2002 Автор
          28.05.2015 12:50

          Насколько я знаю нет.
          Вариантов защиты интеллектуальной собственности я вижу несколько:
          1. В случае с Android можно расширить процесс построения с помощью Gradle и добавить дополнительный шаг построения, который будет использовать обфускацию.
          2. В случае с iOS и так код компилируемый, поэтому более менее вы спите спокойно.

          Обфусцирование HTML, JS можно делать с помощью агрессивной минификации, кажется Google Closure Compiler подойдет вам.
          Скажем так, если вы не будете писать с использованием компилируемых языков (C++, Objective-C) то никакая система защиты надолго не остановит заинтересованного в копировании вашей интеллектуальной собственности.


          1. biblos
            28.05.2015 13:51

            Обфусцирование и минификацию не сложно привести к читабельному виду.
            К сожалению как в случае с iOS, так и других платформ основной html5 код не компилируется, а упаковывается.
            Несколько лет назад встречал частный проект «доработки» проекта PhoneGap для дешифрации HTML и JS «на лету» перед чтением WebView.
            Странно, что никто не реализовал это с коробки в оболочке.


    1. yurash
      29.05.2015 13:18

      может ещё чего хорошего выйдет из ветки crosswalk lite
      github.com/crosswalk-project/crosswalk-website/wiki/Crosswalk-Project-Lite
      Пишут про «уполовинивание» размера


      1. kant2002 Автор
        31.05.2015 11:53

        Согласен, размер уменьшается до 12Мб, но пока судя по всему им нужно несколько релизов для того чтобы реализовать это. Сейчас в рассылке для разработчиков не видать пока никаких серьезных движений в этом направлении, поэтому еще с полгодика подождать надо мне кажется.


  1. StreetStrider
    27.05.2015 19:34
    +3

    команда Cordova (ранее PhoneGap)
    Насколько я знаю, это некорректно. PhoneGap является коммерческим форком Кордовы с дополнительными плюшками, навроде сборочной инфраструктуры в облаке. PhoneGap это форк Cordova (а не наоборот).


    1. nazarpc
      27.05.2015 20:30
      +1

      Вы ошибаетесь, PhoneGap разрабатывала Nitobi, которую поглотила Adobe, а потом передала код в Apache Foundation и теперь называется Apache Cordova.


      1. Valery4
        27.05.2015 20:51
        +1

        Попадалось как-то простое объяснение. Связь Cordova/PhoneGap похожа на Webkit/Chrome — первое это опенсорс проект на базе которого делается коммерческое приложение.


        1. nazarpc
          27.05.2015 21:00
          +1

          Посмотрите сами в wiki, и на официальный сайт Phonegap, когда выходила последняя версия: phonegap.com/install
          Ваша аналогия ошибочна, поскольку PhoneGap сейчас просто исторический алиас к Apache Cordova, это не проприетарная версия на его основе. Chrome же, как и Opera, Яндекс.Браузер и многие другие действительно проприетарные продукты на базе открытой основы в виде WebKit/Blink.


          1. StreetStrider
            27.05.2015 22:18
            +1

            То есть PhoneGap был раньше и был проприетарным. Потом код был передан в Апач. Но ведь и сейчас PhoneGap предоставляет облачные сервисы на базе Кордовы? То есть получается, что оба проекта находятся в активном состоянии, имеют общий код, но PhoneGap имеет проприетарные добавки. Всё верно?


            1. kant2002 Автор
              28.05.2015 12:36
              +1

              Вы были правы изначально. PhoneGap это чуть больше чем Cordova. В частности PhoneGap дополнительно предоставляет возможность интегрироваться с PhoneGap Build что дает возможность например собирать приложения для iPhone без мака. Это как минимум. Так как я не пользователь PhoneGap то не могу точнее сказать про доп возможности по сравнению с Cordova. Все выше перечисленное я почерпнул из наблюдения за тем что пишут сами разработчики.