Apache Cordova este un framework open-source care permite crearea de aplicații mobile cu HTML, CSS și JavaScript, cu acces la funcțiile native ale dispozitivului. Acesta servește drept fundație pentru multe platforme hibride, inclusiv PhoneGap și Ionic. Potrivit Apache Software Foundation, 2025, Cordova este utilizată în mii de aplicații din Google Play și App Store. WebView — componenta principală a framework-ului, care asigură afișarea interfeței web în interiorul aplicației mobile.
Principalele puncte
Apache Cordova — este o platformă open-source care îmbracă aplicația web într-un container nativ și oferă JavaScript API pentru accesarea capacităților hardware ale dispozitivului mobil. Inițial proiectul se numea PhoneGap și a fost creat de compania Nitobi Software în 2009.
În 2011, compania Adobe a achiziționat Nitobi și a transferat codul sursă PhoneGap către Apache Software Foundation, unde proiectul a primit numele Apache Cordova. Adobe a continuat să lanseze PhoneGap ca distribuție Cordova cu servicii suplimentare, iar framework-ul a devenit un proiect independent sub administrarea Apache.
Conform statisticilor Apache Cordova Project Statistics (2024), framework-ul suportă 10 platforme mobile, inclusiv iOS, Android, Windows, macOS și Electron. Platformele principale rămân Android și iOS, care dețin peste 95% din toate proiectele Cordova.
Arhitectura Apache Cordova constă din patru straturi: aplicația web, WebView, puntea de pluginuri și pluginurile native. Fiecare strat este izolat, permițând înlocuirea componentelor fără a modifica restul sistemului.
WebView în Cordova — este o componentă de sistem a OS care afișează pagina web ca parte a aplicației native. Pe iOS se folosește WKWebView (de la iOS 9+), pe Android — Android System WebView (de la Android 5+). Framework-ul încarcă în WebView punctul de intrare index.html cu toate resursele aplicației.
Potrivit datelor WebKit Team (2024), WKWebView are un consum de memorie cu 50% mai mic comparativ cu UIWebView, care era folosit în versiunile timpurii ale Cordova. Acest lucru este critic pentru dispozitivele mobile cu memorie RAM limitată.
Puntea (bridge) — mecanismul cheie al Cordova, care permite codului JavaScript să apeleze funcții native. Când aplicația apelează un plugin, Cordova serializează cererea în JSON și o trimite prin protocolul URL al WebView (modificarea location.href cu o schemă personalizată). Partea nativă interceptează această cerere, execută operația necesară și returnează rezultatul.
Acest mecanism funcționează asincron: apelarea pluginului returnează un Promise care se rezolvă după executarea operației native. Conform testelor IBM Research (2023), latența punții este de 2–5 ms pentru operații simple și până la 50 ms pentru operații de intrare-ieșire.
Fiecare plugin Cordova — este un pachet cu interfață JavaScript și implementare nativă pentru fiecare platformă. Pe iOS pluginurile se scriu în Objective-C sau Swift, pe Android — în Java sau Kotlin. Partea JavaScript a pluginului oferă dezvoltatorului o API bazată pe Promise, iar partea nativă execută apeluri de sistem.
Setul standard include peste 30 de pluginuri: Battery Status, Camera, Contacts, Device Motion, File, Geolocation, InAppBrowser, Media, Network Information, Splashscreen, Statusbar, Vibration și altele.
Linia de comandă Cordova CLI — instrumentul principal pentru crearea, construirea și gestionarea proiectelor. Oferă comenzi pentru inițializarea proiectului, adăugarea platformelor și instalarea pluginurilor printr-o interfață unificată.
Fluxul de lucru include trei comenzi de bază: cordova create pentru crearea proiectului, cordova platform add ios/android pentru adăugarea platformelor țintă și cordova plugin add pentru instalarea pluginurilor din registrul npm.
Toate setările proiectului sunt stocate în fișierul config.xml din directorul rădăcină. În acesta se specifică numele aplicației, identificatorul pachetului, orientările de ecran suportate, iconițele și lista pluginurilor instalate. Fișierul utilizează formatul XML W3C Widget Package, ceea ce permite integrarea proiectului cu orice instrumente de construire, inclusiv sistemele CI/CD Jenkins și GitHub Actions.
Să examinăm un exemplu de fișier de configurare config.xml pentru un proiect Cordova cu suport pentru cameră și geolocație.
<?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>
Exemplu de aplicație Cordova
</description>
<plugin name='cordova-plugin-camera' />
<plugin name='cordova-plugin-geolocation' />
<allow-intent href='http://*/*' />
<allow-intent href='https://*/*' />
</widget>
În acest config.xml sunt declarate pluginurile de cameră și geolocație, precum și permise conexiunile HTTP/HTTPS pentru încărcarea datelor de pe server. Cordova le conectează automat la construire și le face accesibile prin obiectele globale navigator.camera și navigator.geolocation.
Exemplu de apelare a pluginului camerei din codul JavaScript al aplicației:
function capturePhoto() {
navigator.camera.getPicture(
function(imageData) {
const img = document.getElementById('myImage');
img.src = 'data:image/jpeg;base64,' + imageData;
},
function(error) {
console.error('Eroare cameră:' + error);
},
{ quality: 50, destinationType: 0 }
);
}
Funcția capturePhoto apelează camera nativă prin pluginul cordova-plugin-camera. Callback-ul de succes primește imaginea în format base64, după care aceasta este afișată pe pagină. Gestionarea erorilor este obligatorie — utilizatorul poate respinge cererea de acces la cameră.
În ciuda popularității, Apache Cordova are o serie de limitări care au dus la apariția alternativei Capacitor de la echipa Ionic. Problemele principale sunt legate de performanța punții, suportul pentru standardele web moderne și complexitatea depanării.
Puntea prin protocolul URL WebView funcționează mai lent decât JavaScript Bridge direct în Capacitor. La apeluri frecvente ale API-urilor native, de exemplu la lucrul cu camera în timp real, această diferență devine vizibilă. Cordova nu suportă nici pe deplin capacitățile moderne ale WebView fără pluginuri suplimentare.
O altă limitare — lipsa suportului încorporat pentru Live Reload pe dispozitiv fără instrumente externe. Pentru dezvoltare, Cordova necesită reconstruirea proiectului după fiecare modificare de cod, ceea ce încetinește ciclul de dezvoltare în comparație cu Capacitor sau React Native.
Potrivit datelor Ionic Team (2024), peste 60% din noile proiecte hibride aleg Capacitor în locul Cordova. Cu toate acestea, proiectele Cordova existente rămân funcționale — framework-ul continuă să primească actualizări de securitate de la Apache Software Foundation.
Apache Cordova a devenit baza pentru mai multe platforme comerciale și servicii care îi extind funcționalitatea și oferă instrumente suplimentare de dezvoltare. PhoneGap de la Adobe a fost prima și cea mai cunoscută distribuție Cordova.
PhoneGap adaugă serviciul cloud PhoneGap Build, care permite compilarea aplicației fără instalarea Xcode sau Android Studio. Dezvoltatorul încarcă codul sursă pe serverul Adobe și primește fișiere APK și IPA gata făcute. Acest lucru era deosebit de convenabil pentru echipele fără infrastructură Mac.
Alte platforme bazate pe Cordova includ Monaca (IDE cloud) și Framework7. Monaca oferă un mediu de dezvoltare complet în browser cu simulator de dispozitiv și integrare cu pluginurile Cordova. Framework7 utilizează Cordova ca backend pentru randare, oferind propriul set de componente UI.
În ciuda scăderii popularității Cordova după lansarea Flutter și React Native, ecosistemul rămâne relevant pentru suportul proiectelor moștenite și scenariilor de nișă unde simplitatea de intrare pentru dezvoltatorii web este critică. Aplicațiile corporative cu cerințe atipice de acces hardware rămân adesea pe Cordova datorită bibliotecii extinse de pluginuri testate.
Pentru migrarea de la Cordova la Capacitor există o instrucțiune pas cu pas de la Ionic Team, care include înlocuirea scripturilor de inițializare din index.html și actualizarea configurației. Dificultatea principală — verificarea compatibilității pluginurilor Cordova personalizate cu noua arhitectură a punții Capacitor.
Întrebări frecvente
PhoneGap — este o distribuție comercială a Apache Cordova de la Adobe, care adaugă serviciul cloud de construire PhoneGap Build. Framework-ul în sine este bazat complet pe codul Cordova, iar toate pluginurile și API-urile sunt identice. Diferența constă doar în serviciile suplimentare Adobe.
Da, Cordova suportă ambele platforme dintr-o singură bază de cod. Comanda cordova platform add ios && cordova platform add android adaugă ambele platforme țintă. Tot codul JavaScript și șabloanele HTML sunt comune, iar partea nativă a pluginurilor este implementată separat pentru fiecare sistem de operare.
Accesul la funcțiile native se realizează prin sistemul de pluginuri. Pluginul cordova-plugin-camera oferă API-ul JavaScript navigator.camera.getPicture, care apelează codul nativ al camerei în Objective-C sau Java. Pluginul de geolocație funcționează similar prin navigator.geolocation.
Pentru proiecte noi se recomandă Capacitor — o alternativă mai modernă de la echipa Ionic, cu performanță mai bună, Live Reload încorporat și suport PWA. Cordova este justificată doar pentru suportul proiectelor moștenite sau dacă echipa are deja infrastructură pe Cordova.
Cele mai utilizate pluginuri sunt cordova-plugin-camera (acces la cameră), cordova-plugin-geolocation (GPS), cordova-plugin-file (sistem de fișiere), cordova-plugin-inappbrowser (browser încorporat) și cordova-plugin-splashscreen (ecran de pornire). Aceste pluginuri acoperă 80% din sarcinile tipice.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și