Пользователь
187,4
рейтинг
11 декабря 2015 в 13:27

Разработка → PhoneGap vs. Cordova

Многие ошибочно полагают, что PhoneGap это некая единая система. Однако, существует три различные платформы — Cordova (CLI), Phonegap (CLI) и PhoneGap Build. Каждая имеет свои особенности и мелкие вариации.


История


PhoneGap был создан примерно в 2009 году внутри канадского стартапа Nitobi, как среда с открытым исходным кодом, которая позволяла получить доступ к нативным функциям устройства из встроенного webview. Целью проекта было обеспечить возможность построения мобильных приложений исключительно на веб-технологиях (HTML5/CSS и JavaScript), но с возможностью вызова нативного кода.

В 2011 году Adobe приобрели Nitobi и все права на PhoneGap. Исходный код ядра был передан Apache Foundation.
Этот исходный код остался открытым, но ему понадобилось новое имя. После пары неудачных попыток, в конце концов было выбрано «Cordova» – по названию улицы, на которой был расположен офис Nitobi.

Возможности


По своей сути, Cordova предлагает простой, но мощный API для вызова машинного кода из JavaScript'а. Это означает, что вы можете передавать любые данные из WebView на само устройство.
Многие не совсем правильно понимают этот момент. Cordova дает доступ к низкоуровневому API, с помощью простых плагинов (например, для доступа к камере и компасу). Поэтому, когда кто-то говорит, что Cordova не может делать то, что могут нативные приложения, он ошибается. Единственным ограничением являются плагины, доступные в настоящее время, и ваше желание и способности в написании недостающих плагинов.

Для работы с Cordova нужно устанавливать SDK мобильных платформ. Эту проблему решает PhoneGap Build — облачный сервис, который компилирует ваш HTML5 в готовые приложения без головной боли поддержки нативных SDK.

Разница


Cordova — это фреймворк с открытым кодом, которым управляет Apache. PhoneGap — это Cordova + инфраструктура от Adobe. Можно рассматривать Cordova как движок, который питает PhoneGap, подобно тому, как WebKit — это движок, который питает Safari, или Blink — Chrome.

1. Cordova это OpenSource, а PhoneGap принадлежит Adobe.
2. Кроме разных имен пакетов, у PhoneGap и Cordova, разная документация.
3. При выходе новых версий ОС (например iOS 64-bit), Cordova обновляется быстрее, чем PhoneGap.
4. У Cordova нет облачного сборщика проектов.

Что выбрать?


Если вы не хотите заморачиваться с командной строкой, или вам нужна интеграция с облаком, выбирайте Phonegap Build. В остальных случаях, выбирайте Cordova CLI.
Главное, что бы вы ни выбрали, не смешивайте технологии в одном проекте. Это внесет большой беспорядок.
zplch @zapolnoch
карма
182,7
рейтинг 187,4
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое Разработка

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

  • +2
    А теперь вопрос — как в cordova-app сделать нормальную работу в фоновом режиме? :)
    «Нормальную» — означает не постоянно долбить телефон хаком и высаживать батарею, а вполне себе нативно.
    • +1
      Cordova это WebView (мини-браузер) и набор самых что ни на есть нативных (Java, Objective-C) плагинов, которые передают данные между устройством и WebView. Я не понимаю, что может помешать вам написать нативный фоновый режим на Java и обернуть его в Кордова-плагин.
      • +3
        Чтобы от такого плагина был толк, он должен быть кроссплатформенным, а тогда теряется весь смысл использовать эти «зоопарки багов». Мало того, обертка плагина не универсальна. Если он работает при локальном билде PhoneGap, то на PhoneGap Build, скорее всего, не заработает. Плюс WebView, по понятным причинам, самый медленный элемент любой платформы.
        • –8
          Многие выбирают PhoneGap не из-за кросплатформенности, а потому что им проще и привычнее строить View с помощью веб-технологий (HTML/CSS). Я знаю Java и могу писать на нем, но построение даже простейшего UI под Android это боль и слезы.
          Не случайно разработка на Android стоит на 30% дороже, чем на iOS. Это потому что iOS-разработчики строят UI в WYSIWYG, а Android-разработчики залипают в своем XML на многие часы.
          • 0
            Вы заблуждаетесь в каждом из тезисов, за исключением цены разработчика.
      • +1
        В таком случае мне проще написать два нативных скелета с геотрекингом и фоновым режимом и воткнуть в него WebView.
        PhoneGap/Cordova в таком случае вообще не нужны.
        • +1
          Для геотрекинга есть отличный плагин. iOS и Android точно поддерживается и превосходно работает.
  • 0
    А возможно сделать html5-приложение для Android без сторонних библиотек(вроде Cordova), а используя стандартное SDK?
    • 0
      Смотря что понимать под «html5-приложением». Можно взять WebView и отображать в нём всё, что душе угодно.
      • 0
        Скорее всего это оно, да.
    • +1
      Да, можно. Закидываете HTML5-файлы в Активы, и отображаете их в WebView:

      webView.loadUrl("file:///android_asset/www/index.html");
      • 0
        Вот что-то вроде того. Спасибо!
  • 0
    Пробовал писать небольшое приложение на PhoneGap — по сути одна html страничка которая подгружает всякие графики… но в фоне программа работать нормально не захотела…
    НО!
    писать всё это было так быстро и легко что всё же стоит отдать должное разработчикам.
    • 0
      Cordova — замечательный инструмент, у которого, впрочем, есть свои ограничения.

      Во-первых, очень плохо с отладкой. Если вы допустили ошибку в JS-коде, приложение молча перестает работать. Понять что происходит можно только со строгой дисциплиной — одно изменение в коде, затем проверка. Еще помогает перед запуском пропустить код через JSLint, он ловит синтаксические ошибки.

      Я знаю, что можно запустить код в браузере. Однако, и это во-вторых, не все плагины работают в режиме браузера. Так, например, не работает SQLite, поэтому тестирование можно осуществлять только на реальном устройстве или в эмуляторе, что не очень удобно. Кроме того, в некоторых случаях незначительно различается поведение кода на эмуляторе и на устройстве, также местами различается результат верстки HTML.

      Поэтому выбирать Cordova для относительно сложных приложений, требующих чего-то большего, чем просто HTML+JS, нужно с осторожностью.
      • +3
        Во-первых, очень плохо с отладкой.
        Я тоже так думал пока не попробовал удаленную отладку (для Android 4.4+)
        Просто запускаете приложение на телефоне, а в браузере на компьютере можно видеть все логи, делать точки останова, дебажить, менять переменные, править DOM код на ходу.
      • 0
        Еще для относительно сложных приложений можно использовать Visual Studio, там в последних версиях есть «Приложения Apache Cordova» и всякие возможности для отладки
  • 0
    Спасибо за статью. Быстро разобрался что к чему. Я думаю было бы классно написать статью.

    «Быстрое введение в разработку мобильных приложений для web-разработчиков», где сразу же было бы написано что к чему, сравнение одного с другим и как начать, хотя как начать не обязательно там все ясно — переходим на нужный сайт и курим доки
    • 0
      Если именно быстрое введение, то — habrahabr.ru/post/257889 и уже через 10 минут опробовать результат. Разве что Visual Studio удобнее по части вариаций сборки и возможностей, но для попробовать как можно быстрее Intel XDK подойдет лучше

      В статье небольшая часть информации уже устарела, Framework7 исправил и добавил много чего, в том числе появилась полноценная поддержка material design с правильной реализацией переключения интерфейсов.
      И если для андроида есть возможность использовать CrossWalk для ускорения, то для ios тоже появился плагин github.com/Telerik-Verified-Plugins/WKWebView который заменяет встроенный стандартный webview на улучшенный WKWebView, с лучшей производительностью и прочими плюсами, доступный с ios 8
  • 0
    Интересная статья которая может сэкономить несколько дней новичку. Вы не могли бы рассказать какое место в этом зоопарке занимает MobileFirst от IBM? Который бывший Worklight. То что он на основе Phonegap + включает в себя еще server side это я знаю. Но в чем может различаться разработка как серверной части так и client части, что в данном случае мне важнее если использовать MobileFirst вместо Cordova/Phonegap?

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.