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 као позадину за приказивање, нудећи сопствени сет 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. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође