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. Това е критично за мобилни устройства с ограничена RAM памет.
Мостът (bridge) — ключов механизъм на Cordova, който позволява на JavaScript код да извиква естествени функции. Когато приложение извиква добавка, Cordova сериализира заявката в JSON и я изпраща чрез URL протокола на WebView (промяна на location.href с персонализирана схема). Естествената страна прихваща тази заявка, изпълнява необходимата операция и връща резултата.
Този механизъм работи асинхронно: извикването на добавка връща Promise, който се разрешава след изпълнение на естествената операция. Според тестове на IBM Research (2023), забавянето на моста е 2–5 ms за прости операции и до 50 ms за операции вход-изход.
Всяка Cordova добавка — е пакет с JavaScript интерфейс и естествена реализация за всяка платформа. На iOS добавките се пишат на Objective-C или Swift, на Android — на Java или Kotlin. JavaScript частта на добавката предоставя на разработчика API, базиран на Promise, а естествената част извършва системни извиквания.
Стандартният набор включва над 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('Грешка на камерата:' + 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 като backend за рендиране, предлагайки собствен набор от 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 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също