Apache Cordova یک فریمورک متنباز است که امکان ایجاد برنامههای موبایل با HTML، CSS و JavaScript و دسترسی به عملکردهای بومی دستگاه را فراهم میکند. این فریمورک پایه بسیاری از پلتفرمهای هیبریدی از جمله PhoneGap و Ionic است. به گزارش Apache Software Foundation، 2025، Cordova در هزاران برنامه در Google Play و App Store استفاده میشود. WebView — مؤلفه اصلی فریمورک است که نمایش رابط وب را درون برنامه موبایل تضمین میکند.
نکات اصلی
Apache Cordova — یک پلتفرم متنباز است که برنامه وب را در یک کانتینر بومی قرار میدهد و JavaScript API را برای دسترسی به قابلیتهای سختافزاری دستگاه موبایل فراهم میکند. این پروژه در ابتدا PhoneGap نام داشت و در سال 2009 توسط شرکت Nitobi Software ایجاد شد.
در سال 2011، شرکت Adobe Nitobi را خریداری کرد و کد منبع PhoneGap را به بنیاد نرمافزار آپاچی منتقل کرد، جایی که این پروژه Apache Cordova نام گرفت. Adobe به انتشار PhoneGap به عنوان یک توزیع Cordova با خدمات اضافی ادامه داد و خود فریمورک به پروژهای مستقل تحت مدیریت آپاچی تبدیل شد.
طبق آمار Apache Cordova Project Statistics (2024)، این فریمورک از 10 پلتفرم موبایل از جمله iOS، Android، Windows، macOS و Electron پشتیبانی میکند. پلتفرمهای اصلی Android و iOS باقی میمانند که بیش از 95% از کل پروژههای Cordova را تشکیل میدهند.
معماری Apache Cordova از چهار لایه تشکیل شده است: برنامه وب، WebView، پل پلاگین و پلاگینهای بومی. هر لایه ایزوله است که امکان تعویض مؤلفهها بدون تغییر بقیه سیستم را فراهم میکند.
WebView در Cordova — یک مؤلفه سیستمی OS است که صفحه وب را به عنوان بخشی از برنامه بومی نمایش میدهد. در iOS از WKWebView (از iOS 9+) و در Android از Android System WebView (از Android 5+) استفاده میشود. فریمورک نقطه ورود index.html را با تمام منابع برنامه در WebView بارگذاری میکند.
بر اساس دادههای WebKit Team (2024)، WKWebView در مقایسه با UIWebView که در نسخههای اولیه Cordova استفاده میشد، 50% مصرف حافظه کمتری دارد. این برای دستگاههای موبایل با حافظه RAM محدود حیاتی است.
پل (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 پلاگین 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 فراخوانی میکند. callback موفقیت تصویر را در قالب 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 وجود دارد که شامل جایگزینی اسکریپتهای مقداردهی در 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 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 از سال 2017 برنامههای iOS و Android را برای استارتاپها و کسبوکارها ایجاد میکند. ما به شما مشاوره میدهیم و بهترین راهحل را پیشنهاد خواهیم کرد.
همچنین بخوانید