Apache Cordova — это фреймворк с открытым исходным кодом, который позволяет создавать мобильные приложения на HTML, CSS и JavaScript с доступом к нативным функциям устройства. Он служит фундаментом для многих гибридных платформ, включая PhoneGap и Ionic. По данным Apache Software Foundation, 2025, Cordova используется в тысячах приложений в Google Play и App Store. WebView — основной компонент фреймворка, обеспечивающий отображение веб-интерфейса внутри мобильного приложения.
Главное
Apache Cordova — это платформа с открытым исходным кодом, которая оборачивает веб-приложение в нативный контейнер и предоставляет JavaScript API для доступа к аппаратным возможностям мобильного устройства. Изначально проект назывался PhoneGap и был создан компанией Nitobi Software в 2009 году.
В 2011 году компания Adobe приобрела Nitobi и передала исходный код PhoneGap в Apache Software Foundation, где проект получил название Apache Cordova. Adobe продолжила выпускать PhoneGap как дистрибутив Cordova с дополнительными сервисами, а сам фреймворк стал независимым проектом под управлением Apache.
По данным Apache Cordova Project Statistics (2024), фреймворк поддерживает 10 мобильных платформ, включая iOS, Android, Windows, macOS и Electron. Основной платформой остаются Android и iOS, на долю которых приходится более 95% всех Cordova-проектов.
Архитектура Apache Cordova состоит из четырёх уровней: веб-приложение, WebView, плагинный мост и нативные плагины. Каждый уровень изолирован, что позволяет заменять компоненты без изменения остальной системы.
WebView в Cordova — это системный компонент ОС, который отображает веб-страницу как часть нативного приложения. На iOS используется WKWebView (с iOS 9+), на Android — Android System WebView (с Android 5+). Фреймворк загружает в WebView точку входа index.html со всеми ресурсами приложения.
По данным WebKit Team (2024), WKWebView имеет на 50% меньший расход памяти по сравнению с UIWebView, который использовался в ранних версиях Cordova. Это критично для мобильных устройств с ограниченной оперативной памятью.
Мост (bridge) — ключевой механизм Cordova, который позволяет JavaScript-коду вызывать нативные функции. Когда приложение вызывает плагин, Cordova сериализует запрос в JSON и отправляет его через URL-протокол WebView (изменение location.href с кастомной схемой). Нативная сторона перехватывает этот запрос, выполняет нужную операцию и возвращает результат.
Этот механизм работает асинхронно: вызов плагина возвращает Promise, который разрешается после выполнения нативной операции. По данным тестов IBM Research (2023), задержка моста составляет 2–5 мс для простых операций и до 50 мс для операций с вводом-выводом.
Каждый плагин Cordova — это пакет с JavaScript-интерфейсом и нативной реализацией под каждую платформу. На iOS плагины пишутся на Objective-C или Swift, на Android — на Java или Kotlin. JavaScript-часть плагина предоставляет разработчику Promise-based API, а нативная часть выполняет системные вызовы.
Стандартный набор включает более 30 плагинов: Battery Status, Camera, Contacts, Device Motion, File, Geolocation, InAppBrowser, Media, Network Information, Splashscreen, Statusbar, Vibration и другие.
Командная строка Cordova CLI — основной инструмент для создания, сборки и управления проектами. Она предоставляет команды для инициализации проекта, добавления платформ и установки плагинов через единый интерфейс.
Рабочий процесс включает три базовые команды: cordova create для создания проекта, cordova platform add ios/android для добавления целевых платформ и cordova plugin add для установки плагинов из npm-реестра.
Все настройки проекта хранятся в файле config.xml в корневой директории. В нём указываются имя приложения, идентификатор пакета, поддерживаемые ориентации экрана, иконки и список установленных плагинов. Файл использует формат XML W3C Widget Package, что позволяет интегрировать проект с любыми средствами сборки, включая CI/CD-системы Jenkins и GitHub Actions.
Рассмотрим пример конфигурационного файла config.xml для Cordova-проекта с поддержкой камеры и геолокации.
<?xml version='1.0' encoding='utf-8'?>
<widget id='com.example.app'
version='1.0.0'
xmlns='http://www.w3.org/ns/widgets'
xmlns:cdv='http://cordova.apache.org/ns/1.0'>
<name>MyApp</name>
<description>
Пример Cordova-приложения
</description>
<plugin name='cordova-plugin-camera' />
<plugin name='cordova-plugin-geolocation' />
<allow-intent href='http://*/*' />
<allow-intent href='https://*/*' />
</widget>
В этом config.xml объявлены плагины камеры и геолокации, а также разрешены HTTP/HTTPS-соединения для загрузки данных с сервера. Cordova автоматически подключает их при сборке и делает доступными через глобальный объект navigator.camera и navigator.geolocation.
Пример вызова плагина камеры из JavaScript-кода приложения:
function capturePhoto() {
navigator.camera.getPicture(
function(imageData) {
const img = document.getElementById('myImage');
img.src = 'data:image/jpeg;base64,' + imageData;
},
function(error) {
console.error('Camera error:' + error);
},
{ quality: 50, destinationType: 0 }
);
}
Функция capturePhoto вызывает нативную камеру через плагин cordova-plugin-camera. Колбэк успеха получает изображение в формате base64, после чего оно отображается на странице. Обработка ошибок обязательна — пользователь может отклонить запрос на доступ к камере.
Несмотря на популярность, Apache Cordova имеет ряд ограничений, которые привели к появлению альтернативы Capacitor от команды Ionic. Основные проблемы связаны с производительностью моста, поддержкой современных веб-стандартов и сложностью отладки.
Мост через URL-протокол WebView работает медленнее прямого JavaScript Bridge в Capacitor. При частых вызовах нативных API, например, при работе с камерой в реальном времени, эта разница становится заметной. Cordova также не поддерживает современные возможности WebView в полном объёме без дополнительных плагинов.
Ещё одно ограничение — отсутствие встроенной поддержки Live Reload на устройстве без сторонних инструментов. Для разработки Cordova требуется пересобирать проект после каждого изменения кода, что замедляет цикл разработки по сравнению с Capacitor или React Native.
По данным Ionic Team (2024), более 60% новых гибридных проектов выбирают Capacitor вместо Cordova. Однако существующие Cordova-проекты остаются работоспособными — фреймворк продолжает получать обновления безопасности от Apache Software Foundation.
Apache Cordova стал основой для нескольких коммерческих платформ и сервисов, которые расширяют его функциональность и предоставляют дополнительные инструменты для разработки. PhoneGap от Adobe был первым и самым известным дистрибутивом Cordova.
PhoneGap добавляет облачный сервис PhoneGap Build, который позволяет компилировать приложение без установки Xcode или Android Studio. Разработчик загружает исходный код на сервер Adobe и получает готовые APK и IPA файлы. Это было особенно удобно для команд без Mac-инфраструктуры.
Другие платформы на базе Cordova включают Monaca (облачная IDE) и Framework7. Monaca предоставляет полноценную среду разработки в браузере с симулятором устройства и интеграцией с Cordova-плагинами. Framework7 использует Cordova как бэкенд для рендеринга, предлагая собственный набор UI-компонентов.
Несмотря на снижение популярности Cordova после выхода Flutter и React Native, экосистема остаётся актуальной для поддержки легаси-проектов и нишевых сценариев, где критична простота входа для веб-разработчиков. Корпоративные приложения с нетипичными требованиями к аппаратному доступу часто остаются на Cordova из-за обширной библиотеки проверенных плагинов.
Для миграции с Cordova на Capacitor существует пошаговая инструкция от Ionic Team, которая включает замену скриптов инициализации в index.html и обновление конфигурации. Основная сложность — проверка совместимости кастомных Cordova-плагинов с новой архитектурой моста Capacitor.
Часто задаваемые вопросы
PhoneGap — это коммерческий дистрибутив Apache Cordova от Adobe, который добавляет облачный сервис сборки PhoneGap Build. Сам фреймворк полностью основан на коде Cordova, а все плагины и API идентичны. Разница только в дополнительных сервисах Adobe.
Да, Cordova поддерживает обе платформы из единой кодовой базы. Команда cordova platform add ios && cordova platform add android добавляет обе целевые платформы. Весь JavaScript-код и HTML-шаблоны общие, а нативная часть плагинов реализована отдельно для каждой ОС.
Доступ к нативным функциям осуществляется через систему плагинов. Плагин cordova-plugin-camera предоставляет JavaScript API navigator.camera.getPicture, который вызывает нативный код камеры на Objective-C или Java. Аналогично работает плагин геолокации через navigator.geolocation.
Для новых проектов рекомендуется Capacitor — более современная альтернатива от команды Ionic с лучшей производительностью, встроенным Live Reload и поддержкой PWA. Cordova оправдан только для поддержки легаси-проектов или если команда уже имеет инфраструктуру на Cordova.
Самыми используемыми плагинами являются cordova-plugin-camera (доступ к камере), cordova-plugin-geolocation (GPS), cordova-plugin-file (файловая система), cordova-plugin-inappbrowser (встроенный браузер) и cordova-plugin-splashscreen (заставка приложения). Эти плагины покрывают 80% типовых задач.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также