<?xml version="1.0"?>
<rss version="2.0"><channel><title>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: Cordova</title><link>https://academy.hsoub.com/programming/javascript/cordova/?d=2</link><description>&#x627;&#x644;&#x628;&#x631;&#x645;&#x62C;&#x629;: Cordova</description><language>ar</language><item><title>&#x62A;&#x62C;&#x647;&#x64A;&#x632; &#x628;&#x64A;&#x626;&#x629; &#x627;&#x644;&#x639;&#x645;&#x644; &#x641;&#x64A; &#x623;&#x628;&#x627;&#x62A;&#x634;&#x64A; &#x643;&#x648;&#x631;&#x62F;&#x648;&#x641;&#x627;</title><link>https://academy.hsoub.com/programming/javascript/cordova/%D8%AA%D8%AC%D9%87%D9%8A%D8%B2-%D8%A8%D9%8A%D8%A6%D8%A9-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D9%81%D9%8A-%D8%A3%D8%A8%D8%A7%D8%AA%D8%B4%D9%8A-%D9%83%D9%88%D8%B1%D8%AF%D9%88%D9%81%D8%A7-r1263/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_07/60e551b137978_-----.png.e760a47e89da40093fd9b258d0d201b7.png" /></p>
<p>
	ذكرنا في <a href="https://academy.hsoub.com/programming/javascript/cordova/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A3%D8%A8%D8%A7%D8%AA%D8%B4%D9%8A-%D9%83%D9%88%D8%B1%D8%AF%D9%88%D9%81%D8%A7-apache-cordova-r1262/" rel="">المقال السابق</a> أهمية إطار العمل أباتشي كوردوفا في مساعدة المطوّرين على تقليل تكلفة ووقت تطوير التطبيقات الهجينة للهواتف، وبدأنا بالحديث المفصل عن كوردوفا الذي يُعَد رائدًا في مجال تطوير التطبيقات الهجينة بناءً على المهارات التي يمتلكها مطور تطبيقات الويب، وذلك لتسريع آليات بناء تطبيقات الهاتف. كما وضحنا معمارية تطبيق الهاتف المبنيّ باستخدام كوردوفا وهيكلية التطبيق المبنيّ عليه. يهدف هذا المقال إلى التعرف على الأدوات والخطوات اللازمة لتجهيز بيئة العمل المطلوبة لإنشاء تطبيقات الهاتف الهجينة باستخدام كوردوفا كي يتسنّى لنا البدء بإنشاء التطبيقات.
</p>

<h2>
	تثبيت إطار العمل أباتشي كوردوفا
</h2>

<p>
	يتواجد إطار العمل كوردوفا مثل حزمة في نظام إدارة الحزم الخاص بلغة جافا سكربت Node Package Manager "NPM"، لذا يتوجّب علينا في البداية تثبيت Node.js من خلال زيارة <a href="http://www.nodejs.org" rel="external nofollow">الموقع الإلكتروني لـ Node.js</a> وتنزيل النسخة المتوافقة مع نظام التشغيل، ومن ثمَّ تثبيتها على الحاسوب. يُعَد التثبيت على أنظمة ويندوز سهلًا جدًا من خلال ملف تثبيت البرنامج الذي يُنزّل من الموقع ثم تثبيته على الجهاز، في حين نحتاج لطريقة أخرى في نظام تشغيل Linux من خلال تنفيذ بضعة أوامر في سطر الأوامر، لتثبيت Node.js على Linux، يمكنك الاطلاع على <a href="https://academy.hsoub.com/devops/linux/%D8%AA%D8%AB%D8%A8%D9%8A%D8%AA-nodejs-%D8%B9%D9%84%D9%89-%D9%86%D8%B8%D8%A7%D9%85-%D8%A3%D8%A8%D9%88%D9%86%D8%AA%D9%88-1804-r419/" rel="">مقالة تثبيت Node.js على نظام أبونتو 18.04</a>، والتي تتحدث بالتفصيل عن هذه النقطة بالتحديد.
</p>

<p>
	يمكن التأكد من نجاح التثبيت ومعرفة الإصدار المثبّت من خلال سطر الأوامر الخاص بنظام التشغيل ويندوز باستخدام الأمر node –v
</p>

<p style="text-align: center;">
	<img alt="node-version.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70992" data-unique="dpj76cy8w" src="https://academy.hsoub.com/uploads/monthly_2021_07/node-version.png.c70da56af83cd44a887f4ef3182cb4f9.png">
</p>

<p>
	بعد التأكد من اكتمال تثبيت Nodejs يمكننا الانتقال للخطوة التالية، ألا وهي تثبيت كوردوفا، وذلك من خلال تنفيذ الأمر التالي في سطر الأوامر:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_13" style=""><span class="pln">npm install </span><span class="pun">-</span><span class="pln">g cordova</span></pre>

<p>
	وتكون النتيجة كما في الصورة التالية:
</p>

<p style="text-align: center;">
	<img alt="install-cordova.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70991" data-unique="pgf15siol" src="https://academy.hsoub.com/uploads/monthly_2021_07/install-cordova.png.86f376c8262e5a3b527f516f418d412f.png">
</p>

<p>
	لا يستغرق التثبيت كثيرًا من الوقت (بالاعتماد على سرعة اتصال الإنترنت لديك)، وعند اكتماله يمكن كتابة الأمر الموالي لنتأكد من سلامة التثبيت:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_11" style=""><span class="pln">cordova help</span></pre>

<p>
	تُعرض الخيارات المتاحة من خلال هذا الأمر مثل ضبط الإعدادات وإنشاء تطبيق وغيرها من الأوامر المتاحة، والتي نتعرف عليها في المقال القادم، حيث سنتطرق لإنشاء أول تطبيق.
</p>

<p>
	لا تختلف الخطوات في نظامي التشغيل Linux وOS، حيث يمكننا استخدام الأمر التالي مع ملاحظة كتابة sudo قبل تنفيذ الأمر في حال كان المستخدم الحالي محدود الصلاحيات:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_16" style=""><span class="pln">   sudo npm install </span><span class="pun">-</span><span class="pln">g cordova</span></pre>

<p style="text-align: center;">
	<img alt="cordova-version.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70990" data-unique="yeskt08jq" src="https://academy.hsoub.com/uploads/monthly_2021_07/cordova-version.png.046d780cd79ef02faa022cabdd5df9cf.png">
</p>

<p>
	وبهذا نكون قد تمكنًا من تثبيت كوردوفا بخطوتين فقط وبسهولة بالغة.
</p>

<h3>
	إنشاء أول تطبيق كوردوفا
</h3>

<p>
	يجب أولًا تحديد مسار المجلد الذي يُنشَأ التطبيق فيه، ثم تنفيذ الأمر الذي يُنشِئ تطبيق كوردوفا مع كافة الملفات والمجلدات الضرورية المطلوبة بداخله
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_5757_18" style=""><span class="pln">cordova create myFirstApp </span></pre>

<p>
	بهذا نكون قد نفذنا أمر إنشاء تطبيق جديد اسمه myFirstApp مباشرةً على محرك الأقراص C، وباستعراض محتويات التطبيق الجديد كما نلاحظ في الصورة التالية، نجد بداخله مجلد www والذي بدوره يحتوي مجلدات css وimg، بالإضافة إلى ملف index.html، كما هو الحال مع أساسيات الموقع الإلكتروني التي فصلنا الحديث عنها في المقال السابق، كما يمكننا فتح مجلد التطبيق من خلال برنامج بيئة التطوير VSCode الذي سنتعرف عليه لاحقًا.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70989" href="https://academy.hsoub.com/uploads/monthly_2021_07/cordova-Create-app.png.31aa2c16305ae97db1234d1046bdf9d9.png" rel="" data-fileext="png"><img alt="cordova-Create-app.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70989" data-unique="d9xb2xe9o" src="https://academy.hsoub.com/uploads/monthly_2021_07/cordova-Create-app.thumb.png.f7d4bde59a6426ff3e079e216482784c.png"></a>
</p>

<h2>
	تثبيت بيئة التطوير المتكاملة Integration Development Kit
</h2>

<p>
	لقد ذكرنا في هذا المقال حتى الآن بعض الخدمات التي تقدمها بيئة التطوير المتكاملة IDK ودورها في مساعدة المطوّر في إنجاز برمجة التطبيقات، وهناك بعض البيئات التي تكون مخصصةً للغة برمجة معينة، ففي حال برمجة التطبيقات الأصيلة باستخدام أندرويد مثلًا؛ فسيستخدم المطوّرون برنامج Android Studio. هناك بعض بيئات التطوير العاملة التي يمكن استخدامها بعد تخصيصها ببعض الإضافات من داخل برنامج بيئة التطوير حسب اللغة التي يعمل عليها المبرمج، وهذه الإضافات يمكن إضافتها لبعض برامج بيئة التطوير مثل Android Studio أو أي برامج تحرير النصوص البرمجية مثل برنامج Visual Studio Code من شركة MicroSoft.
</p>

<p>
	يمكن إنشاء تطبيقات كوردوفا من خلال برنامج Android Studio، لكننا سنحتاج إلى تثبيت إضافة كوردوفا Cordova Plugin لتدعم تطوير تطبيقات كوردوفا، ونظرًا لكون البعض يشتكي من احتياج برنامج Android Studio إلى حاسوب ذي موارد ومواصفات عالية، فلهذا سنختار في هذا المقال استخدام برنامج VS Code، ولتثبيت البرنامج يلزمنا تنزيله من موقع البرنامج <a href="https://code.visualstudio.com/download" rel="external nofollow">visualstudio code</a>، وتنزيل ثم تثبيت النسخة المتوافقة مع نظام التشغيل الذي يستخدمه حاسوبك.
</p>

<h2>
	أدوات تطوير البرمجيات Software Development Kit
</h2>

<p>
	أدوات <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D9%8A%D8%A7%D8%AA/" rel="">تطوير البرمجيات</a> SDK هي مجموعة من البرمجيات المُستخدمة لأغراض محددة مثل تطوير تطبيق لجهاز أو برنامج تشغيلي محدد، حيث تشمل منقّحًا Debugger ومكتبات، كما تحتوي على عيّنة من النصوص البرمجية التي تزوّد المطوّرين بأمثلة تشكّل فرصةً للمطورين لتعلّم كيفية إنشاء التطبيقات الاساسية باستخدام هذه الأدوات مما يمكّنهم من إنشاء وتطوير تطبيقات أكثر تعقيدًا وتطويرًا، كما توفّر خاصية التوثيق التقني والتي بدورها يمكن أن تتضمن دروسًا تعليمية وأسئلةً أكثر تكرارًا. تحتوي بعض هذه الأدوات على العديد من النماذج الرسومية مثل الواجهات والأيقونات التي يستطيع المطوّر إضافتها في التطبيقات التي تُنشَأ.
</p>

<p>
	ومن الأمثلة على ذلك حِزمة تطوير برامج أندرويد SDK التي تدعم أنظمة التشغيل الخاصة بالحاسوب مثل Windows وLinux وiOS، وهناك أدوات تطوير أخرى خاصة بنظام ويندوز بكافة إصداراته، وأدوات تطوير نظام التشغيل iOS، وغيرها الكثير.
</p>

<p>
	وبما أن معظم الشركات تشجع المطورين على إنشاء تطبيقات خاصة بمنصاتها، فإنها تُقدّم أدوات التطوير الخاصة بها مجانًا، حيث ينزّلها المطور من الموقع الرسمي للشركة ويبدأ بعملية التطوير فورًا؛ أما في حال استخدام بيئة المتصفح من أجل تطوير التطبيق الهجين للهاتف وتشغيله عبر المتصفح، فيمكنك إضافة منصة المتصفح للتطبيق والتي لا تتطلب أي حزم SDK للنظام الأساسي كما سنوضح لاحقًا.
</p>

<p>
	لنبدأ في الجانب العملي الآن، لإنشاء التطبيقات وتشغيلها سنحتاج إلى تثبيت حزم SDK لكل نظام أساسي نرغب في تشغيل التطبيق عليه، وبتنفيذ الأمر التالي يمكننا التحقق مما إذا كانت الحزم المثبتة تفي بالمتطلبات الأساسية لبناء التطبيق:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_20" style=""><span class="pln">cordova requirements</span></pre>

<p>
	وإذا لم تُثبت أيٌّ من متطلبات التطبيق فستظهر مثل هذه الرسالة:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_22" style=""><span class="typ">No</span><span class="pln"> platforms added to </span><span class="kwd">this</span><span class="pln"> project</span><span class="pun">.</span><span class="pln"> </span><span class="typ">Please</span><span class="pln"> </span><span class="kwd">use</span><span class="pln"> </span><span class="str">'cordova platform add &lt;platform&gt;'</span><span class="pln"> </span><span class="pun">.</span></pre>

<p>
	والتي تفيد بضرورة إضافة متطلبات التطبيق، وهو ما سنتعرف عليه الآن بالتفصيل.
</p>

<h3>
	تثبيت SDK الخاصة بالنظام المستهدف
</h3>

<p>
	تختلف الحِزم البرمجية المطلوبة تبعًا للنظام الي نرغب في تشغيل التطبيق عليه، ونخصص الحديث هنا عن الأدوات المطلوبة لتشغيل التطبيق على نظام أندرويد، ونؤكد على أن الخطوات المطلوبة لتشغيل التطبيق على نظام iOS متشابهة باختلاف الأدوات المطلوبة، ونحتاج هنا لأربع أدوات كما يلي:
</p>

<ol>
	<li>
		حزمة التطوير الخاصة بلغة البرمجة جافا Java Development Kit أو اختصارًا JDK، والتي يمكن تحميلها من <a href="http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html" rel="external nofollow">الرابط الخاص بها على موقعهم الرسمي ثم تثبيتها</a>.
	</li>
	<li>
		حزمة Gradle التي تساهم في تسريع إنشاء التطبيقات، وتُعَد إحدى متطلبات التطبيقات المنشأة باستخدام كوردوفا، ويمكن تثبيتها من <a href="https://gradle.org/" rel="external nofollow">الموقع الرسمي لـ Gradle</a>، وللاستزادة من المعرفة عن وظائف Gradle يمكنكم زيارة مقال <a href="https://academy.hsoub.com/programming/workflow/%D8%AF%D9%84%D9%8A%D9%84%D9%83-%D8%A7%D9%84%D9%83%D8%A7%D9%85%D9%84-%D8%A5%D9%84%D9%89-%D9%86%D8%B8%D8%A7%D9%85-%D8%A7%D9%84%D8%A8%D9%86%D8%A7%D8%A1-gradle-r865/" rel="">دليلك الكامل إلى نظام البناء Gradle</a>.
	</li>
	<li>
		حزمة التطوير الخاصة بأندرويد Android SDK Tools التي تُثبّت من خلال برنامج Android Studio الذي يمكن تنزيله من <a href="https://developer.android.com/studio/index.html" rel="external nofollow">الموقع الرسمي لـ Android Studio</a>، وبعد تثبيت البرنامج يجب الدخول إلى إدارة SDK أين ستظهر لنا عدة خيارات للتنزيل فنختار منهما أولًا SDK Platforms، وهنا يفضل اختيار أحدث إصدار (إلا إذا كنت تنوي التطوير لإصدارات قديمة من منصة أندرويد)، ثم تثبيت Android SDK Platform-Tools كما في الصور الثلاثة التالية:
	</li>
</ol>

<p style="text-align: center;">
	<img alt="Android-SDK-Tools.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70988" data-unique="wjv9ombtv" src="https://academy.hsoub.com/uploads/monthly_2021_07/Android-SDK-Tools.png.78c53f9e48383a770126e15e73e50c7c.png">
</p>

<p>
	نختار أولًا SDK Manager
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70987" href="https://academy.hsoub.com/uploads/monthly_2021_07/SDK-Manager.png.617a030a5d73e7f27c3a26681ae7f06c.png" rel="" data-fileext="png"><img alt="SDK-Manager.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70987" data-unique="ngd9dmnt1" src="https://academy.hsoub.com/uploads/monthly_2021_07/SDK-Manager.thumb.png.f445bd650b32a7958d1466cd4acee588.png"></a>
</p>

<p>
	ثم نختار الإصدار الأحدث وننزله.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70986" href="https://academy.hsoub.com/uploads/monthly_2021_07/SDK-Tools-7.png.5db1b26061f7f282488e875786e90e6e.png" rel="" data-fileext="png"><img alt="SDK-Tools-7.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70986" data-unique="1gqhqtbb3" src="https://academy.hsoub.com/uploads/monthly_2021_07/SDK-Tools-7.thumb.png.876579ee56c80973166b85c2e651cf0c.png"></a>
</p>

<p>
	ثم نختار Android SDK Platform-Tools لتنزيلها.
</p>

<ol start="4">
	<li>
		تثبيت جهاز أو أجهزة وهمية Virtual Device بإصدارات مختلفة من نظام أندرويد لتشغيل واختبار التطبيق عليها، ولهذه الخطوة بدائل، إذ يمكن الاستغناء عنها بتوصيل هاتفك مباشرةً على الحاسوب والبدء بتشغيل واختبار التطبيق من خلاله. يمكن الوصول لمدير الأجهزة الوهمية من خلال خيار ADV في إعدادات برنامج Android Studio كما في الصور التالية:
	</li>
</ol>

<p style="text-align: center;">
	<img alt="ADV-Manager-8.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70985" data-unique="q79u0z47t" src="https://academy.hsoub.com/uploads/monthly_2021_07/ADV-Manager-8.png.cea7479df975917b3173a6b575c9d8c5.png">
</p>

<p>
	وعند اختيار AVD Manager ستظهر شاشة إدارة الأجهزة الوهمية كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70984" href="https://academy.hsoub.com/uploads/monthly_2021_07/Select-Hardware-9.png.3417164844207f686aa2a3b0ef5f1364.png" rel="" data-fileext="png"><img alt="Select-Hardware-9.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70984" data-unique="kuoxxr1eb" src="https://academy.hsoub.com/uploads/monthly_2021_07/Select-Hardware-9.thumb.png.65048b72fbc9077135095db5ae711191.png"></a>
</p>

<p>
	وكما هو واضح من الصورة، فإن هذه الخاصية تمكننا من اختيار نوع الجهاز الذي نرغب في محاكاة تشغيل التطبيق عليه، مثل الشاشات الذكية والهواتف والساعات الرقمية والهاتف اللوحي، وبعد اختيار نوع الجهاز - وليكن جهاز الهاتف - ننتقل إلى الخطوة التالية لتثبيت نظام الهاتف كما يتضح في الصورة التالية:
</p>

<p style="text-align: center;">
	<img alt="Android-Virtual-Devices-10.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70983" data-unique="ycgpcf2xv" src="https://academy.hsoub.com/uploads/monthly_2021_07/Android-Virtual-Devices-10.png.d41e995d938553f4336592b4119b4831.png">
</p>

<p>
	هناك برنامج مستقل لإنشاء الأجهزة الوهمية – بعيدًا عن برنامج Android Studio – يسمى <a href="https://www.genymotion.com/download/" rel="external nofollow">Genymotion</a>، وهو موجه للذين يستخدمون حاسوبًا ذو مواصفات محدودة، هذا البرنامج غير مجاني بالكامل لكنه يفي بالمتطلبات الأساسية لتشغيل واختبار التطبيقات من خلاله.
</p>

<p>
	أما بخصوص تثبيت SDK الخاصة بنظام iOS، فإننا نحتاج هنا إلى نظام iOS الذي نجده مثبتًا على أجهزة Mac، ولا يمكن تطوير تطبيقات لمنصة iOS بسهولة وفعالية إلا من خلال حاسوب Mac. في البداية يجب تثبيت برنامج Xcode وذلك بإحدى الطريقتين، إما من (<a href="https://apps.apple.com/us/app/xcode/id497799835?mt=12" rel="external nofollow">متجر التطبيقات</a>)، أو من (<a href="https://idmsa.apple.com/IDMSWebAuth/signin?appIdKey=891bd3417a7776362562d2197f89480a8547b108fd934911bcbea0110d07f757&amp;path=%2Fdownload%2Fmore%2F&amp;rv=1" rel="external nofollow">تنزيلات مطوري Apple</a>) الذي يتطلب التسجيل بعضوية مطور Apple.
</p>

<p>
	الآن وبعد تثبيت SDK حسب نظام التشغيل الذي نستخدمه، سننتقل إلى الخطوة التالية في تجهيز بيئة العمل، وهي إضافة المنصة المراد استخدامها للتطبيق، وهنا سنستخدم الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_24" style=""><span class="pln">cordova platform add android</span></pre>

<p style="text-align: center;">
	<img alt="Cordova-platform-add-android-11.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70982" data-unique="tv9jhhzwz" src="https://academy.hsoub.com/uploads/monthly_2021_07/Cordova-platform-add-android-11.png.2735dc6c667f3cea4dbf7aebad6e770f.png">
</p>

<p>
	تظهر في الصورة أعلاه نتيجة تنفيذ الأمر السابق، والذي يضيف منصة أندرويد للتطبيق ليعمل على الهواتف العاملة بنظام التشغيل أندرويد، وكما أشرنا سابقًا يمكنك استخدام بيئة المتصفح لتطوير التطبيقات الهجينة. ولتجهيز التطبيق للعمل عبر منصة المتصفح يلزمنا إضافتها للتطبيق بتنفيذ الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_26" style=""><span class="pln">cordova platform add browser</span></pre>

<p>
	يضيف هذا الأمر بيئة المتصفح للتطبيق كما يتضح من الصورة، حتى تكون فيه إمكانية لتشغيله عبر المتصفح كما أسلفنا في فقرة سابقة.
</p>

<p style="text-align: center;">
	<img alt="cordova-platform-add-browser-12.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70981" data-unique="iycry464s" src="https://academy.hsoub.com/uploads/monthly_2021_07/cordova-platform-add-browser-12.png.cf22c85b6374ca9f6725038112550b6e.png">
</p>

<p>
	أما إذا كنا نرغب في إضافة منصة iOS للتطبيق - بعد تثبيت SDK الخاصة بـ iOS-، فإننا ننفذ الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_30" style=""><span class="pln">cordova platform add ios</span></pre>

<h3>
	إضافة متغيرات البيئة
</h3>

<p>
	يتعرف نظام التشغيل ويندوز على الحِزم البرمجية المضافة إليه ويمكّننا من استخدام أوامر هذه الحِزم من واجهة سطر الأوامر، وذلك من خلال إضافة قيمة لها في متغيرات البيئة Environment Variables، حيث تُضاف بعض هذه المتغيرات تلقائيًا، بينما يحتاج بعضها إلى إضافتها يدويًا. لمعرفة المزيد من التفاصيل عن متغيرات البيئة يمكنكم الاطلاع على مقال <a href="https://academy.hsoub.com/programming/general/%D8%A7%D9%84%D8%B7%D9%91%D8%B1%D9%8A%D9%82-%D9%86%D8%AD%D9%88-%D9%81%D9%87%D9%85-%D9%85%D9%8F%D8%AA%D8%BA%D9%8A%D8%B1-%D8%A7%D9%84%D9%85%D8%B3%D8%A7%D8%B1-path-r58/" rel="">الطّريق نحو فهم مُتغير المسار ‎$PATH</a>، والذي يتحدث عن متغيرات البيئة. يمكن إضافة متغيرات البيئة إلى ويندوز يدويًا من خلال النقر بزر الفأرة الأيمن على أيقونة "هذا الحاسوب This Computer"، واختيار عنصر "خصائص Properties" لتظهر عدة خصائص من بينها خيارات النظام المتقدمة Advanced System Settings ليظهر مربع الحوار التالي:
</p>

<p style="text-align: center;">
	<img alt="environment-variables-windowns-13.png.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="70980" data-unique="8hiagfmjn" src="https://academy.hsoub.com/uploads/monthly_2021_07/environment-variables-windowns-13.png.jpg.3706e32b60db514bdf251e472fdf9e17.jpg">
</p>

<p>
	نختار منه بند "متغيرات البيئة Environment Variables"، ومنها يظهر مربع الحوار التالي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70979" href="https://academy.hsoub.com/uploads/monthly_2021_07/Environment-Variables-add-14.jpg.9d784be7a6dd1835522e52d8488c280e.jpg" rel="" data-fileext="jpg"><img alt="Environment-Variables-add-14.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="70979" data-unique="vft3scsar" src="https://academy.hsoub.com/uploads/monthly_2021_07/Environment-Variables-add-14.jpg.9d784be7a6dd1835522e52d8488c280e.jpg"></a>
</p>

<p>
	في مربع الحوار الظاهر سنحتاج للتعامل مع عنصرين:
</p>

<ol>
	<li>
		عنصر متغيرات البيئة الخاصة بالمستخدم، وهنا نضيف المتغيرات التالية من خلال النقر على زر "جديد New":
	</li>
</ol>

<ul>
	<li>
		عنصر "JAVA_HOME" ويشير إلى مسار تثبيت JDK.
	</li>
	<li>
		عنصر "ANDROID<em>SDK</em>ROOT" ويشير إلى مسار تثبيت SDK.
	</li>
</ul>

<ol>
	<li>
		عنصر متغيرات البيئة الخاصة بالنظام، وهنا يجب النقر على المتغير PATH وإضافة عنصرين أحدهما خاص بـ JAVA_HOME والآخر يخص Gradle، كما يظهر آخر عنصرين في الصورة التالية، فكلاهما يشير إلى مسار التثبيت الخاص بهما.
	</li>
</ol>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70978" href="https://academy.hsoub.com/uploads/monthly_2021_07/user-environment-variables-15.jpg.2b5c7fa72c67f540640cd7c50dc869b1.jpg" rel="" data-fileext="jpg"><img alt="user-environment-variables-15.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="70978" data-unique="g9962f8l2" src="https://academy.hsoub.com/uploads/monthly_2021_07/user-environment-variables-15.jpg.2b5c7fa72c67f540640cd7c50dc869b1.jpg"></a>
</p>

<h2>
	بناء التطبيق
</h2>

<p>
	كما أسلفنا، فإن كوردوفا – افتراضيًا – ينشئ التطبيق على شاكلة تطبيقات الويب، والذي تكون صفحة البداية فيه باسم index.html بداخل مجلد يحمل اسم www، مع الأخذ بالحسبان أي تخصيصات تفاعلية من خلال ملف JavaScript أو تنسيقات من ملف CSS. ولبناء التطبيق نستخدم الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_32" style=""><span class="pln">cordova build</span></pre>

<p>
	كما يمكننا التحكم في اللاحقة بتخصيص بناء التطبيق لمنصة معينة مثل أندرويد أو iOS كما في المثال التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_34" style=""><span class="pln">cordova build android</span></pre>

<p>
	بتنفيذ أمر بناء تطبيق كوردوفا لمنصة أندرويد ستكون النتيجة في واجهة سطر الأوامر كما يلي:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70977" href="https://academy.hsoub.com/uploads/monthly_2021_07/cordova-build-android-16.png.080fa3c305700f3b6ea837eae992b109.png" rel="" data-fileext="png"><img alt="cordova-build-android-16.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70977" data-unique="cg5qkc5gg" src="https://academy.hsoub.com/uploads/monthly_2021_07/cordova-build-android-16.png.080fa3c305700f3b6ea837eae992b109.png"></a>
</p>

<h2>
	تشغيل التطبيق لأول مرة
</h2>

<p>
	نأتي الآن لأهم نقطة في هذا المقال، وهي أننا بعد الانتهاء من التجهيزات اللازمة لبناء التطبيق، فإننا نصل لنقطة النهاية ( نهاية التجهيزات وبداية الإعدادات والخيارات اللامحدودة ) ألا وهي تشغيل التطبيق.
</p>

<p>
	توفّر أدوات تطوير البرمجيات SDK محاكيًا يمكّن المطوّرين من تشغيل التطبيق واختبار تفاعله مع مميزات الهاتف المحمول، وفي حال استخدام الأجهزة الوهمية – التي أشرنا لها سابقًا – فبإمكاننا الوصول إليها من خلال تنفيذ الأمر التالي:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_36" style=""><span class="pln">cordova emulate android</span></pre>

<p>
	بتنفيذ الأمر السابق سيعمل المحاكي المتاح - وفي حالتنا هذه يعمل محاكي نظام أندرويد - ويُعرض التطبيق عليه كما هو موضح في الصورة التالية:
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70994" href="https://academy.hsoub.com/uploads/monthly_2021_07/cordova-emulate-android-17.png.fdc29d60e00cb849242f80896c6395c4.png" rel="" data-fileext="png"><img alt="cordova-emulate-android-17.png" class="ipsImage ipsImage_thumbnailed" data-fileid="70994" data-unique="cui78f6os" src="https://academy.hsoub.com/uploads/monthly_2021_07/cordova-emulate-android-17.thumb.png.03c4ce6f0f6e6ccb9632ddcfcf654b8a.png"></a>
</p>

<p>
	أما إذا كنت تفضل أن توصل هاتفك المحمول بالحاسوب لتشغيل التطبيق عليه ثم تنفيذ الأمر:
</p>

<pre class="ipsCode prettyprint lang-css prettyprinted" id="ips_uid_5757_38" style=""><span class="pln">cordova run android</span></pre>

<p>
	تجدر الإشارة هنا -فيما يختص بالهواتف العاملة بنظام أندرويد- إلى ضرورة تجهيز الهاتف المحمول لإمكانية تشغيل التطبيق عليه، وذلك من خلال الانتقال إلى الإعدادات حول الهاتف والنقر سبع مرات متتالية على عنصر رقم إصدار نظام التشغيل، حيث ستظهر رسالة تحذيرية تفيد بأنك على وشك تفعيل وضع المطورين، وهنا سيظهر بند جديد في قائمة الإعدادات باسم "خيارات المطورين Developer options"، حيث بالدخول إليه سنفعّل خيار "وضع التصحيح Debug mode" كما يظهر في الصورة التالية، مع الأخذ بالحسبان اختلاف مسمى البند ومكانه في الإعدادات تبعًا لنوع الهاتف وإصدار النظام فيه.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70993" href="https://academy.hsoub.com/uploads/monthly_2021_07/Developer-options-android-18.jpg.65b4aaf5a25462a44015b6db35059fdf.jpg" rel="" data-fileext="jpg"><img alt="Developer-options-android-18.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="70993" data-unique="pec4vlnw0" src="https://academy.hsoub.com/uploads/monthly_2021_07/Developer-options-android-18.thumb.jpg.77e4515a66c38eb289167f90c07ab296.jpg"></a>
</p>

<h2>
	الخاتمة
</h2>

<p>
	تُعَد الخطوات اللازمة لتجهيز بيئة العمل طويلةً نوعًا ما، وتحتاج إلى الدقة في تنفيذها، مثل اختيار الحِزم المطلوبة والتركيز على إصدارها، كما يجب التنويه إلى ضرورة الانتباه عند إنشاء متغيرات البيئة للعاملين على نظام التشغيل Windows، إلا أن هذه الخطوات تُنفّذ لمرة واحدة فقط، وبعدها يبدأ العمل على وظائف التطبيق نفسه.
</p>

<p>
	تعرفنا في المقال على تثبيت إطار العمل كوردوفا وإنشاء أول تطبيق من خلاله، ثم بدأنا في تفصيل تجهيز بيئة العمل من خلال تثبيت IDE مناسب، وتثبيت SDK التي يتطلبها نظام التشغيل على الحاسوب، وبعدها بنينا التطبيق تمهيدًا لتشغيله كما في الخطوة الأخيرة، وسنتطرق في المقال التالي إلى إدارة القوالب الخاصة بالتطبيق، والتعرف على هيكلية (بنية) الملفات في مجلد التطبيق.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/cordova/%D9%86%D8%B8%D8%B1%D8%A9-%D8%B9%D8%A7%D9%85%D8%A9-%D8%B9%D9%86-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%AC%D9%87%D8%B2%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%85%D9%88%D9%84%D8%A9-%D8%B9%D8%A8%D8%B1-%D9%83%D9%88%D8%B1%D8%AF%D9%88%D9%81%D8%A7-r1261/" rel="">نظرة عامة عن تطوير تطبيقات الأجهزة المحمولة عبر كوردوفا </a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/cordova/%D8%A3%D9%86%D8%B4%D8%A6-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D9%83-%D8%A7%D9%84%D8%A3%D9%88%D9%84-%D9%81%D9%8A-cordova-r594/" rel="">أنشئ تطبيقك الأول في Cordova</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/cordova/%D9%86%D8%B8%D8%B1%D8%A9-%D9%87%D9%8A%D9%83%D9%84%D9%8A%D8%A9-%D8%B9%D8%A7%D9%85%D8%A9-%D9%84%D9%85%D9%86%D8%B5%D8%A9-cordova-r583/" rel="">نظرة هيكلية عامة لمنصة Cordova</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1263</guid><pubDate>Wed, 07 Jul 2021 15:02:00 +0000</pubDate></item><item><title>&#x625;&#x637;&#x627;&#x631; &#x627;&#x644;&#x639;&#x645;&#x644; &#x623;&#x628;&#x627;&#x62A;&#x634;&#x64A; &#x643;&#x648;&#x631;&#x62F;&#x648;&#x641;&#x627; Apache Cordova</title><link>https://academy.hsoub.com/programming/javascript/cordova/%D8%A5%D8%B7%D8%A7%D8%B1-%D8%A7%D9%84%D8%B9%D9%85%D9%84-%D8%A3%D8%A8%D8%A7%D8%AA%D8%B4%D9%8A-%D9%83%D9%88%D8%B1%D8%AF%D9%88%D9%81%D8%A7-apache-cordova-r1262/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_07/60e5518d55ba2_---.png.75314eeff6e84e0a3f6c5fc726715310.png" /></p>

<p>
	ألقينا في <a href="https://academy.hsoub.com/programming/javascript/cordova/%D9%86%D8%B8%D8%B1%D8%A9-%D8%B9%D8%A7%D9%85%D8%A9-%D8%B9%D9%86-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%AC%D9%87%D8%B2%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%85%D9%88%D9%84%D8%A9-r1261/" rel="">المقال السابق</a> نظرةً عامةً عن تطوير تطبيقات الهاتف، وتطرقنا إلى الطّرق الأربعة المتّبعة في تطوير تطبيقات الهاتف، بحيث فصّلنا الحديث عن طبيعة كل طريقة مع سرد ميّزاتها وعيوبها، ثم وجّهنا المقال نحو طبيعة التطبيق وأجزائه، وبدأنا في تخصيص الحديث عن التطبيقات الهجينة بصفتها حلا وسطًا لمن لا يمتلكون المهارات العالية لتطوير تطبيقات أصيلة بنسخة منفردة لكل نظام تشغيل، ولتوفير الكثير من الوقت والموارد المالية المخصصة لإنشاء تطبيقات أصيلة، وسنتحدث في هذا المقال عن إطار العمل أباتشي كوردوفا Apache Cordova الذي يمكّن المطوّرين من إنشاء تطبيقات هجينة للهاتف، مع ذكر طبيعة إطار العمل وميزاته وعيوبه.
</p>

<p>
	لقد تطورت حاجة المؤسسات إلى وجود موقع إلكتروني يعرض أعمالها للجمهور، ومع سيطرة الأجهزة الذكية على سوق تقنية المعلومات، فقد احتاجت المؤسسات إلى المهارات والموارد اللازمة لإنشاء تطبيقات لجميع المنصات الشائعة للهواتف، وذلك للوصول إلى عملائها عبر هواتفهم في أي وقت، ومع صعوبة توفير بعض الموارد لإنشاء تطبيقات أصيلة، فقد توجهت المؤسسات نحو تطوير التطبيقات الهجينة للهواتف؛ وذلك لما توفره هذه الطريقة من إتاحة نفس التطبيق على منصات متعددة تتضمن بعض الميزات من خلالها تجاوز القيود المتعلقة بالوقت والموارد البشرية والمالية.
</p>

<p>
	يطور المبرمجون التطبيقات الأصيلة للهواتف عن طريق إنشاء تطبيق مستقل لكل منصة (كما وضحنا في المقال السابق في وصفنا لطرق إنشاء تطبيقات الهواتف)، بينما تطوَّر التطبيقات الهجينة للهواتف باستخدام تقنيات الويب القياسية HTML5 وCSS3 وJavaScript، من خلال أحد أُطر العمل على النقيض من تطبيقات الويب التقدمية للهاتف والتي تُنشر من خلال متاجر التطبيقات وتوفر تجربة مستخدم أصلية. إذًا فاختيار طريقة التطبيقات الهجينة للهواتف توفر كثيرًا من الوقت اللازم لإنشاء أول نسخة من التطبيق على كل المنصات. سنخصّص هذا المقال للحديث عن إطار العمل كوردوفا الذي يُستخدم على نطاق واسع لتطوير التطبيقات الهجينة للهاتف، ويقدم العديد من الإمكانيات للمطوّرين للاستفادة القصوى من إمكانيات الهاتف، مستغلين معرفتهم بتقنيات الويب القياسية التي سنبدأ الحديث عنها مباشرةً باختصار قبل الانتقال إلى الحديث بالتفصيل عن إطار العمل أباتشي كوردوفا.
</p>

<h2>
	مفاهيم ومصطلحات للعمل بأباتشي كوردوفا
</h2>

<p>
	تتكون تقنيات الويب القياسية من ثلاث مكونات رئيسة هي HTML وCSS وJavaScript، حيث يفهم متصفح الإنترنت هذه التقنيات ويستطيع تفسيرها compile وعرضها render على صفحاته دون أي مساعدة من برامج خارجية على العكس من بعض لغات البرمجة التي تطلب وجود خادوم Server، مثل لغة PHP التي تستخدم خادومًا مثل Apache ليفسر تعليماتها البرمجية وينتجها بإحدى أشكال تقنيات الويب القياسية التي يفهمها المتصفح ويستطيع عرضها. سنذكر بعضًا من تفاصيل هذه التقنيات كما يلي:
</p>

<h3>
	لغة ترميز النص التشعبي HTML
</h3>

<p>
	لغة Hyper Text Markup Language واختصارها HTML، هي الطريقة الرئيسية التي تُنشأ بها أي صفحة في المواقع الإلكترونية على شبكة الإنترنت، ولا تُعَد لغةً برمجيةً بالمعنى المتعارف عليه للغات البرمجة، ولكنها طريقة لهيكلة ووصف محتويات صفحة الويب لمتصفحات الانترنت، حيث أن أي المتصفح يحتاج لمعرفة مكونات الصفحة من عناوين ونصوص وصور وروابط وغير ذلك من محتويات الصفحة، كي يتمكن من عرضها بالشكل الصحيح. لقد أُضيفت<a href="https://academy.hsoub.com/programming/html/" rel="">سلسلة مقالات</a> تتحدث بالتفصيل عن HTML في أكاديمية حسوب، حيث يمكنك الاطلاع عليه والاستفادة منها.
</p>

<p>
	وتتكون صفحة الويب من مجموعة من العناصر التي تُسمى وسوم Tags -جمع وسْم tag-، حيث كل وسْمٍ يمكن أن يحتوي على بعض الخصائص attributes والأصناف classes التي يمكن من خلالها تخصيص الوسم وإضافة نصوص التنسيق الخاصة CSS.
</p>

<h3>
	لغة التنسيق CSS
</h3>

<p>
	لغة التنسيق Cascading Style Sheet - CSS تختصّ بدورها في تصميم وتشكيل المظهر العام لصفحة الويب، مثل تحديد الخطوط والهوامش والمسافات لعناصر الموقع، وكذا تحديد لون الخلفيات وحجم العناصر، والحصول على الحركات في الموقع، والعديد من المزايا الأخرى. للتعرف على المزيد من وظائف وخصائص لغة التنسيق، يمكنك الاطلاع على <a href="https://academy.hsoub.com/programming/css" rel="">سلسلة المقالات الخاصة</a> بها على أكاديمية حسوب.
</p>

<h3>
	جافاسكريبت JavaScript
</h3>

<p>
	هي لغة برمجة عالية المستوى تُستخدم بالأصل في متصفحات الويب لإنشاء صفحات تفاعلية بين الموقع الإلكتروني والمستخدم، كما توجد بعض المكتبات المبنية على جافا سكربت التي تساعد على إنجاز وظائف أكثر بنصوص برمجية أقل مثل مكتبة jQuery وأُطر العمل Vue.js وAngular وReact. تتوفر <a href="https://academy.hsoub.com/programming/javascript/" rel="">مجموعة من مقالات على أكاديمية حسوب</a> تمكّنك من الاطلاع على طبيعة لغة البرمجة هذه وخصائصها، وأطر العمل المبنية عليها.
</p>

<h3>
	إطار العمل framework
</h3>

<p>
	يُعَد إطار العمل أداةً تحتوي عدة مكونات تساعد المطوّر على وضع أساس التطبيق الذي يرغب في إنشائه، كما يوفر مجموعةً من النصوص والملفات البرمجية المكتوبة مسبقًا لجزء من التطبيق، ويتواجد هذا المفهوم في عدة لغات برمجية مثل لغة Java التي يتوفر لها إطار العمل Spring، ولغة PHP التي يتوفر لها عدة أطر عمل مثل CodeIgniter، وLaravel، وكذلك لغة JavaScript التي وضحنا لها في الفقرة السابقة بعض المكتبات وأطر العمل. تكمن أهمية أطر العمل في إمكانيتها لتوفير الوقت على المبرمج لأنه يجد أرضًا صلبةً لبدء تطبيقه من خلالها، مستغلًا الملفات والنصوص البرمجية المعدّة مسبقًا. هذه الميّزات تتطلب بالضرورة أن يكون المطور على علم جيّد بلغة البرمجة الأم، إضافةً إلى الخدمات والإمكانيات التي يوفر إطار العمل، مما يعني أن إطار العمل هو أداة مساعدة فقط، وعلى المبرمج تطويعها واستغلال إمكانياتها بما يخدم التطبيق الذي يعمل عليه.
</p>

<h3>
	بيئة التطوير المتكاملة Integrated Development Kit 
</h3>

<p>
	هي تطبيق يهدف إلى جعْل عملية كتابة النصوص البرمجية أمرًا ميسّرًا، ويمكن لهذه البيئة أن تجمع بين الأدوات المختلفة التي تساعد المطورين على كتابة التعليمات البرمجية وتحريرها، وبناء الملفات التنفيذية واختبار النتيجة وتصحيحها في حال وُجِد خلل بها، مما يوفّر كثيرًا من الوقت والجهد، وبالتالي زيادة إنتاجية المطوّرين.
</p>

<p>
	عادة ما تتكون هذه البيئات البرمجية من أداة لكتابة وتحرير النصوص البرمجية، وتحتوي على مفسّر compiler يشكّل دور الوسيط بين المبرمج والحاسوب، وتحوي أيضًا إمكانية تتبّع الأخطاء ومساعدتك على إصلاحها، وكذا العديد من الأدوات الأخرى لإتمام تطوير البرمجيات. من الأمثلة على هذه البيئات، نجد برنامج NetBeans لتطوير البرمجيات بلغة جافا، وبرنامج Visual Studio Code لعدة لغات برمجة - حسب تخصيص الإضافات - مثل PHP وC#، وغيرها الكثير.
</p>

<p>
	بهذا نكون قد ذكرنا باختصار نبذةً سريعةً عن تقنيات الويب القياسية؛ لأهميتها في تطوير التطبيقات الهجينة للهاتف، ويجب على القارئ الذي يرغب في استكمال هذه السلسلة عن تطوير تطبيقات الهاتف الهجينة أن يكون متمكّنًا من هذه التقنيات، إذ أنّنا لن نتطرق لشرحها في هذه السلسلة، وسندرج في نهاية هذا المقال مراجع لشرح هذه التقنيات.
</p>

<h2>
	عمل أباتشي كوردوفا Apache Cordova
</h2>

<p>
	بناءً على ما سبق ذكره، تستطيع المؤسسة تسريع تطوير التطبيقات الهجينة للهاتف من خلال الاعتماد على أطر العمل المتاحة في هذا المجال، وأبرزها أباتشي كوردوفا Apache Cordova. في العام 2011 أنشأت مجموعة Nitobi فكرة إطار العمل تحت مسمى PhoneGap، ثم استحوذت عليه Adobe System وأطلقت عليه اسم Cordova، والذي يُعَد إطار عمل Framework مفتوح المصدر ومتاح لتطوير التطبيقات الهجينة للهواتف. إنّ ما يميز كوردوفا هو احتواؤه الكثير من الإمكانيات المقدَّمة للمطورين، والتي تمكّنهم من إنشاء تطبيقات هاتف تعمل على كافة الأنظمة من خلال استخدام تقنيات الويب القياسية سالفة الذّكر، بحيث تُستخدم لغة الترميز لعرض محتوى التطبيق، ولغة التنسيق لإضافة اللمسات الجمالية على المحتوى المعروض، بينما تستخدم لغة JavaScript لتنفيذ الوظائف التي يقدّمها التطبيق، وتتعامل مع تفاعل المستخدم مع التطبيق.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70975" href="https://academy.hsoub.com/uploads/monthly_2021_07/60e41d9c5eacb_001_cordovadiagram.jpg.6bcf261c0d417540f6c58069bb9c7d44.jpg" rel=""><img alt="001_cordova diagram.jpg" class="ipsImage ipsImage_thumbnailed" data-fileid="70975" data-unique="a0nwib7t2" src="https://academy.hsoub.com/uploads/monthly_2021_07/60e41d9c5eacb_001_cordovadiagram.jpg.6bcf261c0d417540f6c58069bb9c7d44.jpg"></a>
</p>

<p>
	إذًا، فإطار العمل كوردوفا يمكّن المطورين من إنشاء تطبيقات هجينة متطورة للهاتف، وذلك باستخدام العديد من مكتبات JavaScript، ومن المزايا المذهلة التي يقدمها كوردوفا أنه يوفّر للمطور آلية لتجهيز التطبيقات الهجينة للهاتف لكل منصات الهواتف، مما يعني أنه يمكن تثبيت تطبيق كوردوفا على الهواتف تمامًا مثل تطبيقات الهاتف الأصيلة، حتى لو كان مبنيًّا باستخدام تقنيات الويب.
</p>

<p>
	في ميّزة إضافية تشجّعك على استخدام كوردوفا لتطوير التطبيقات الهجينة للهاتف، نجد توفير إضافات برمجية متنوعة تسمح للتطبيق بالوصول إلى إمكانيات الهاتف مثل الكاميرا ومحدد المواقع وحالة البطارية، كذا الوصول للملفات والوسائط المتعددة، وغيرها الكثير سنتحدث عنها بالتفصيل في المقالات القادمة. لذا يتوجب على المطوّر فهم طبيعة عمل إطار العمل كوردوفا والاطلاع على الميزات التي يقدمها ليساعده في تطوير تطبيقاته.
</p>

<h3>
	معالم إطار العمل أباتشي كوردوفا
</h3>

<p>
	يدعم نظام تشغيل الهاتف التطبيقات التي تُثبّت عليه، مقدمًا لها العديد من الخدمات التي من بينها المجسات أو المستشعرات، والتعاطي مع المدخلات لتمريرها إلى التطبيق، وفي حال بناء تطبيق الهاتف من خلال كوردوفا، فإن التطبيق سيتكون من جزئيتين رئيستين - كما هو موضح في الشكل أدناه - أولها تطبيق الويب (الذي يُبنى باستخدام تقنيات الويب القياسية) الذي يتعامل مباشرةًً مع محرك عارض الويب WebView من خلال واجهة برمجيات كوردوفا <abbr title="Application Programming Interface | واجهة برمجية">API</abbr>، وواجهة برمجيات HTML مرفق معه ملف الإعدادات العامة التي تتحكم في العديد من سلوكيات تطبيقات كوردوفا، وهنا يأتي دور محرك عارض الويب في التواصل مع الجزء الثاني من التطبيق وهو إضافات كوردوفا المتنوعة أو المخصصة، تُعدّ الكاميرا والوسائط وجهات الاتصال ومحدد الموقع الجغرافي وغيرها الكثير من الإضافات الجاهزة في كوردوفا، بينما يمكنه التواصل من الإضافات المخصصة التي يطوّرها المبرمجون لدعم وظائف التطبيق الذي يعملون عليه؛ أما بخصوص نظام التشغيل، فإنه يتواصل مع محرر عارض الويب من جهة، ومع الإضافات مباشرةً لتنفيذ وظائف التطبيق. يوضح الشكل أدناه بالتفصيل تركيب الشكل العام لتطبيق مبنيّ من خلال كوردوفا، وآلية التواصل بين أجزائه.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70976" href="https://academy.hsoub.com/uploads/monthly_2021_07/60e41d9d97197_002_Cordovaapparch..JPG.21d8099cdae1f361de60820db79c12dc.JPG" rel=""><img alt="002_Cordova app arch..JPG" class="ipsImage ipsImage_thumbnailed" data-fileid="70976" data-unique="aar1dbgqh" src="https://academy.hsoub.com/uploads/monthly_2021_07/60e41d9db0a61_002_Cordovaapparch..thumb.JPG.f3263cbbdb7640703dca19bc3e8c3a45.JPG"></a>
</p>

<p>
	نتطرق في النقاط القادمة إلى الجوانب المهمة في كوردوفا، والتي يجب على المطوّر معرفتها كي تساعده في تطوير التطبيقات
</p>

<h4>
	قاعدة الملفات البرمجية الموحدة
</h4>

<p>
	تدعم كوردوفا في الوقت الحالي الأنظمة الأساسية المشهورة مثل iOS وAndroid وبالتالي، يمكن للمطور استخدام إطار العمل كوردوفا لإنشاء تطبيق هاتف موحّد موجّه للأنظمة الأساسية للهاتف من خلال كتابة التطبيق بتقنيات الويب القياسية التي تحدثنا بالتفصيل أعلاه.
</p>

<p>
	إذًا فكوردوفا تساعد المطور في برمجة أو تطوير التطبيق لمرة واحدة، ثمّ تُنشئ حزمةً برمجيةً قابلةً للتثبيت لكل نظام من أنظمة التشغيل بطريقة مستقلة، هذه الحزمة -عند تثبيتها على الهاتف- تقدّم للمستخدِم تجربة استخدام التطبيقات الأصيلة من خلال الوصول إلى إمكانيات الهاتف مثل الكاميرا ونظام تحديد المواقع GPS والبلوتوث وجهات الاتصال.
</p>

<h4>
	عارض الويب WebView
</h4>

<p>
	تُشغّل واجهات التطبيقات الهجينة في الحاوية التي يوفرّها نظام التشغيل، وتُعرض هذه الحاوية في شاشة الهاتف، وبما أن أنظمة التشغيل تستخدم نفس عارض الويب WebView، فإن الحاوية تتغير تبعًا لخصائص نظام التشغيل، بينما يتبقى عرض صفحات الويب دون تغيير. وبناءً على هذه الخاصية المتوفرة في أنظمة التشغيل، فقد صُمّمت واجهة المستخدم في كوردوفا لتبدو تقنيًا مثل عرض الويب WebView، كما تقدّم كوردوفا من خلال مكتباتها وإضافاتها الرائعة تجربة مستخدم أصيلة، من خلال تفاعلها مع مكونات نظام تشغيل الهاتف، وهو ما يعطي ميّزةً مذهلةً للمطورين بإثراء تجربة المستخدم للتطبيق بطريقة مستقلة عبر كل نظام تشغيل بدون تغيير الملفات البرمجية للتطبيق طبعًا. تذكر دومًا المزية الرئيسة للتطبيقات الهجينة، وهي تطبيق واحد لكل أنظمة التشغيل.
</p>

<h4>
	معمارية/بنية الإضافات
</h4>

<p>
	عند استخدام إطار العمل كوردوفا، يستطيع المطورون ربط نصوص برمجية مكتوبة بلغة جافا سكربت للنصوص البرمجية التي تعمل في الواجهة البرمجية الخلفية Back-End من خلال الإضافات (المكونات الإضافية) الاختيارية القوية التي توفرها كوردوفا، إذ توفّر كوردوفا للمطورين عددًا كبيرًا من الإضافات الجاهزة حسب الوظيفة التي يرغب المطوّر بإضافتها للتطبيق، والمتوافقة مع نظام التشغيل الذي يستهدفه التطبيق. يستطيع المطوّر تمكين التطبيق من الوصول إلى إمكانيات الهاتف مستخدمًا إحدى الإضافات التي توفرها كوردوفا، على سبيل المثال يستطيع المطوّر استخدام واجهة برمجية التطبيق Application Programming Interface - <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> للاستفادة من خصائص الحماية من النظام الأساسي، وفي نفس الوقت، إذا لم يجد المطوّر الإضافة البرمجية التي توفر طلبه بشكل دقيق، فأن كوردوفا -من خلال <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> الخاصة بها- تمهّد الطريق للمطوّر لبرمجة الإضافات الخاصة به وفقًا لاحتياجاته الدقيقة.
</p>

<h4>
	واجهة سطر الأوامر Command Line Interface
</h4>

<p>
	تساعد واجهة سطر الأوامر الخاصة بكوردوفا المطورين على تسريع مراحل تطوير تطبيقات الهواتف وإمكانية اختبارها وتجهيزها لتعمل على الأنظمة، من خلال كتابة بعض الأوامر المعروفة، حيث يستطيع المطورون استخدام CLI لتسريع المهام الروتينية لتطوير تطبيقات الهاتف مثل إنشاء مشروع جديد وتجهيز التطبيق للعمل على الأنظمة المختلفة، كما يمكنهم أيضًا تنفيذ أوامر لاختبار التطبيق الهجين للهاتف باستخدام أجهزة حقيقية أو محاكيات وهمية Simulators تُضاف مسبقًا في بيئة العمل. يجب على المطوّر تجهيز بيئة العمل من خلال تثبيت حِزم أدوات تطوير البرمجيات Software Development Kit - SDK لكل منصة هاتف مستهدَفة قبل استخدام أدوات CLI، وسنتطرق في [المقال القادم](راب المقال) إلى تجهيز بيئة العمل، ونتعرف على الأدوات المطلوبة.
</p>

<h4>
	مجموعة متنوعة من أدوات التطوير
</h4>

<p>
	يتوافق إطار العمل كوردوفا مع العديد من أطر تطوير تطبيقات الهواتف وبيئات التطوير المتكاملة IDEs، كذا والأدوات المستخدمة على نطاق واسع. وبالتالي يستطيع المطورون توسيع إطار عمل كوردوفا بسهولة، وذلك من خلال الاستفادة من الأدوات شائعة الاستخدام مثل دمج أُطر عمل أخرى لبيئة التطوير مثل إطار العمل أيونيك Ionic Framework - الذي يستخدم لتطوير تطبيقات هجينة -، وبيئة التطوير التي تتوافق مع طبيعة التطبيقات التي نطوّرها مثل Android Studio وVisual Studio Code من MicroSoft، والذي تَطوّر كثيرًا في الآونة الأخيرة ليدعم مجموعةً من الأدوات لكوردوفا من بينها مُثبِّت سهل الاستخدام، ومحرر النصوص البرمجية مع دعم لتنقيح الأخطاء، وتخصيص تجربة التطبيق، بالإضافة إلى آليات لاختبار التطبيق؛ أما بخصوص برمجيات أدوات التطوير SDK فإنها توفر للمطورين خيارات متعددة لتطوير التطبيقات الهجينة للهواتف مثل دعم أيونيك Ionic لتحسين مظهر وأدوات تفاعل المستخدم مع التطبيق look and feel، ورفع جودة تجربة المستخدم.
</p>

<h2>
	نقاط ضعف التطبيق الهجين لكوردوفا
</h2>

<p>
	مثل جميع أدوات التطوير الأخرى للتطبيقات الهجينة للهواتف، تحتوي كوردوفا على بعض العيوب، نذكر منها ما يلي:
</p>

<ul>
<li>
		بطء التطبيق موازنةً بالتطبيقات الأصيلة: إن الاهتمام بتوافق التطبيق الهجين عبر جميع أنظمة التشغيل يجعل تطبيقات الهاتف المنشأة بكوردوفا تعمل أبطأ من التطبيقات الأصيلة.
	</li>
	<li>
		عدم غزارة الإضافات: غالبًا ما تواجه المطورين بعض الصعوبة في العثور على إضافات تتوافق بدقة مع الوظائف المطلوب تنفيذها في التطبيق، مما يضطرهم للجوء إلى تصميم وبرمجة إضافات مخصصة لتتوافق مع احتياجات التطبيقات التي يطوّرونها.
	</li>
	<li>
		المزيد من تخصيص التطبيق: يضطر المطورون للجوء إلى تخصيص التطبيق ليتوافق أكثر مع أنظمة التشغيل المختلفة -تحديدًا iOS وأندرويد-، بتخصيص يتوافق مع طبيعة نظام التشغيل نفسه، وهذه من العيوب التي يعمل مطورو إطار العمل كوردوفا على تطويرها ومعالجة النقص فيها لتكتمل تجربة بناء تطبيقات هجينة تعمل بجودة عالية على جميع أنظمة التشغيل، وقد نجد لها بعض الحلول في الإصدارات القادمة من كوردوفا.
	</li>
</ul>
<h2>
	الخلاصة
</h2>

<p>
	إجمالًا لما سبق، فإن إطار العمل كوردوفا -عمومًا- ساعد المؤسسات على تقليل تكلفة ووقت تطوير التطبيقات الهجينة للهواتف كثيرًا، لقد وضحنا في هذا المقال بعض المصطلحات الخاصة بتقنيات الويب القياسية التي يجب على المهتمّ بتطوير التطبيقات الهجينة الاهتمام بها وإتقانها، ثم بدأنا في الحديث عن إطار العمل أباتشي كوردوفا الذي يُعَد رائدًا في مجال تطوير التطبيقات الهجينة بناءً على المهارات التي يمتلكها مطور تطبيقات الويب لتسريع آليات بناء التطبيقات، كما وضحنا معمارية تطبيق الهاتف المبنيّ باستخدام كوردوفا كي يكون المطوّر على علم بتركيب وهيكلية التطبيق. وختمنا المقال ببعض العيوب في كوردوفا، والتي تضيف بعض الاستفسارات في عقل المطوّر الذي يجب عليه دراسة وفهم إمكانيات كوردوفا ونقاط الضعف فيها ووضع ذلك في الحسبان وموازنتها وفقًا للاحتياجات الدقيقة لكل تطبيق. سنتحدث في المقال القادم عن تجهيز بيئة العمل الخاصة بإطار العمل كوردوفا قبل إنشاء أول تطبيق هجين.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/javascript/cordova/%D9%86%D8%B8%D8%B1%D8%A9-%D9%87%D9%8A%D9%83%D9%84%D9%8A%D8%A9-%D8%B9%D8%A7%D9%85%D8%A9-%D9%84%D9%85%D9%86%D8%B5%D8%A9-cordova-r583/" rel="">نظرة هيكلية عامة لمنصة Cordova</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/cordova/%D8%A3%D9%86%D8%B4%D8%A6-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D9%83-%D8%A7%D9%84%D8%A3%D9%88%D9%84-%D9%81%D9%8A-cordova-r594/" rel="">أنشئ تطبيقك الأول في Cordova</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1262</guid><pubDate>Sun, 04 Jul 2021 15:00:00 +0000</pubDate></item><item><title>&#x646;&#x638;&#x631;&#x629; &#x639;&#x627;&#x645;&#x629; &#x639;&#x646; &#x62A;&#x637;&#x648;&#x64A;&#x631; &#x62A;&#x637;&#x628;&#x64A;&#x642;&#x627;&#x62A; &#x627;&#x644;&#x623;&#x62C;&#x647;&#x632;&#x629; &#x627;&#x644;&#x645;&#x62D;&#x645;&#x648;&#x644;&#x629; &#x639;&#x628;&#x631; &#x643;&#x648;&#x631;&#x62F;&#x648;&#x641;&#x627;</title><link>https://academy.hsoub.com/programming/javascript/cordova/%D9%86%D8%B8%D8%B1%D8%A9-%D8%B9%D8%A7%D9%85%D8%A9-%D8%B9%D9%86-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D8%A7%D8%AA-%D8%A7%D9%84%D8%A3%D8%AC%D9%87%D8%B2%D8%A9-%D8%A7%D9%84%D9%85%D8%AD%D9%85%D9%88%D9%84%D8%A9-%D8%B9%D8%A8%D8%B1-%D9%83%D9%88%D8%B1%D8%AF%D9%88%D9%81%D8%A7-r1261/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2021_07/60e55173eeba2_------.png.c0dc30871f5703d23657e0dc1e690e47.png" /></p>

<p>
	قبل عقدِ من الزمان، بدأت الهواتف الذكيّة والحواسيب اللوحية بالسيطرة على قطاع التقنية وتكنولوجيا المعلومات وبدأ سوقها بالنمو المتسارع، حتى وصلت إلى ما هي عليه الآن، بحيث بات لا يمكنك في هذه الأيام أن تجد أحدًا يستغني عن استخدامها في مجالات يصعب حصرها، مثل التجارة الإلكترونية والتعليم الإلكتروني والتسلية والترفيه والتواصل الاجتماعي والمجال الطبي والتسويقي .. إلخ، وكذا الغوص في تطبيقاتها متعددة المزايا والخدمات. وبالتوازي مع الهواتف الذكية، فقد ظهرت تطبيقاتها التي تشكّل سوقًا خاصًا له ميزاته التجارية والمالية والتقنية.
</p>

<p>
	لعملية إنشاء تطبيقات الهواتف الذكية - ودعنا مبدئيا نصطلح على تسميتها بتطبيقات الهاتف-، عدة منهجيات أو طرق لإنشائها بالاعتماد على التقنيات المستخدمة وشركات تصنيع الهواتف، حيث سنتطرق في هذا المقال إلى هذه الطرق الأربعة، مع الاستطراد بتوضيح الفروق بينها، ولا نغفل بذلك ذِكر الميزات والعيوب التي تخص كل من هذه الطرق.
</p>

<h2>
	نظرة عامة عن تطوير تطبيقات الهاتف
</h2>

<p>
	سنتعرف في هذا المقال على معلومات عامة عن تطوير تطبيقات الهواتف، وطرق التطوير المعروفة، مع توضيح الميزات والعيوب لكل طريقة.
</p>

<p>
	تطوير تطبيقات الهواتف هو عملية إنشاء تطبيقات برمجية تعمل على الهواتف، من خلال إنشاء حِزم برامج قابلة للتثبيت مهمتها تنفيذ خدمات في الخلفية، مثل الوصول إلى إمكانيات الهاتف أو البيانات باستخدام واجهة برمجة التطبيقات. تتطلب بعض التطبيقات، وجود اتصال شبكة للعمل مع موارد الحوسبة عن بُعد، مع مراعاة نظام التشغيل المستهدف لتشغيل التطبيق عليه.
</p>

<h2>
	تطبيقات الهاتف وأنظمة تشغيل الأجهزة
</h2>

<p>
	تسيطر منصتان رئيستان على سوق الهواتف الذكية، أولهما هو نظام iOS من شركة Apple، وهذه المنصة هي نظام التشغيل المتواجد في الهواتف iPhone من شركة Apple، والثاني هو Android من Google، وهو ليس حكرًا على أجهزة Google فقط كما هو الحال مع Apple، بل يُستخدم أيضًا من قِبل العديد من مصنعي الأجهزة الذكية كالساعات وشاشات العرض والأجهزة المنزلية الذكية، وكذلك الهواتف.
</p>

<p>
	على الرغم من وجود بعض أوجه التشابه بين هذين النظامين الأساسيين عند برمجة وتطوير التطبيقات، فإن التطوير لنظام iOS يختلف عن التطوير لنظام Android، حيث أن عملية التطوير تتضمن استخدام أدوات تطوير برامج SDKs مختلفة، بالإضافة إلى أدوات تطوير أخرى تختلف بين نظامي التشغيل، فحينما نرى أن شركة Apple تستخدم نظام iOS حصريًا للأجهزة الخاصة بها، فإن Google تجعل Android متاحًا للشركات الأخرى شرط أن تفي بمتطلبات محددة مثل تضمين بعض تطبيقات Google على الأجهزة التي تنتجها، ويمكن للمطورين إنشاء تطبيقات لمئات الملايين من الأجهزة من خلال استهداف كلا النظامين.
</p>

<h2>
	طرق تطوير تطبيقات الهواتف
</h2>

<p>
	هناك أربعة طرق تطوير رئيسة عند إنشاء تطبيقات الهاتف، وهي كما يلي:
</p>

<ol>
<li>
		تطبيقات الهاتف الأصيلة Native
	</li>
	<li>
		تطبيقات الهاتف الأصيلة متعددة المنصات عبر الأنظمة الأساسية Cross-Platform Native
	</li>
	<li>
		تطبيقات الهاتف الهجين Hybrid
	</li>
	<li>
		تطبيقات الويب التقدمية Progressive Web Applications
	</li>
</ol>
<p>
	لكل من هذه الطرق المذكورة أعلاه لتطوير التطبيقات الخاصة بالهواتف، عدد من المزايا والعيوب الخاصة به، والتي يأخذها المطورون بالحسبان عند اختيار أحد طرق التطوير لمنتجاتهم البرمجية، بالإضافة إلى الاهتمام بتجربة المستخدم المطلوبة، وموارد الحوسبة والميزات الأصيلة التي يتطلبها التطبيق، والميزانية المرصودة للتطوير، والفترة الزمنية المتاحة، والموارد المرصودة للحفاظ على التطبيق من فريق عمل لتطويره وحل المشاكل العارضة وما يستلزم ذلك من تغطية مالية، وذلك ضمن دورة حياة تطوير التطبيق من بداية تحليل النظام وحتى الانتهاء باختبار التطبيق وتجربته وإطلاقه إلى سوق العمل، وسنفصل الآن توضيحًا لكل طريقة تطوير مع سرد الميزات والعيوب.
</p>

<h3>
	أولا: تطبيقات الهاتف الأصيلة Native
</h3>

<p>
	تُكتَب تطبيقات الهاتف الأصيلة بلغة البرمجة وأطر العمل البرمجية التي يوفرها مالك النظام الأساسي، وتعمل مباشرةً على نظام تشغيل الهاتف ذاك فقط، مثل لغة البرمجة Objective-C وSwift المستخدَمتين لتطوير تطبيقاتٍ تعمل ضمن نظام iOS وAndroid، وفي هذه الطريقة يُستخدم Android Studio على سبيل المثال لتطوير تطبيقات خاصة بنظام Android باستعمال لغات البرمجة المدعومة جافا Java أو كوتلن Kotlin، بينما يُستخدم Xcode على نظام التشغيل Mac لتطوير تطبيقات خاصة بنظام التشغيل iOS باستخدام لغات البرمجة Objective-C أو Swift.
</p>

<h4>
	المميزات
</h4>

<ul>
<li>
		الأفضل أداءً خلال تشغيل التطبيق.
	</li>
	<li>
		الوصول المباشر إلى واجهات برمجة التطبيقات الخاصة الهاتف.
	</li>
</ul>
<h4>
	العيوب
</h4>

<ul>
<li>
		ضرورة وجود اعتبار للتكلفة المادية لكل نظام تشغيل عند إنشاء التطبيق وصيانته، حيث أنه ستبنى نسخة كاملة منفصلة لأجهزة الأندرويد من قِبل مبرمج أندرويد، وبالتوازي ستبنى نسخة خاصة بأجهزة لآيفون من قِبل مبرمج iOS.
	</li>
</ul>
<h3>
	ثانيا: تطبيقات الهاتف الأصيلة متعددة المنصات عبر الأنظمة الأساسية Cross-Platform Native
</h3>

<p>
	يمكن كتابة تطبيقات الهاتف الأصيلة عبر الأنظمة الأساسية بلغات وأطر برمجة مختلفة، ولكنها تُجمَّع لاحقًا في تطبيق أصيل يعمل مباشرةً على نظام تشغيل الهاتف، وفي هذه الطريقة تُستخدم أّطر عمل متقدمة مثل Flutter وXamarin وReact Native
</p>

<h4>
	المميزات
</h4>

<ul>
<li>
		كود رئيسي/ملفات برمجية موحدة لمنصات متعددة.
	</li>
	<li>
		سهولة وسرعة إنشاء وصيانة التطبيق الخاص بك.
	</li>
	<li>
		إمكانية إعادة الاستخدام لفقرات متعددة من النص البرمجي في وظائف مماثلة في التطبيق أو تطبيقات أخرى، مما يقلل من الوقت الذي يستغرقه إنشاء التطبيق.
	</li>
</ul>
<h4>
	العيوب
</h4>

<ul>
<li>
		الاعتماد على مكتبات خارجية مخصصة للوصول إلى الميزات الأصيلة للهاتف.
	</li>
	<li>
		كود رئيسي/ملفات برمجية متعددة لكل منصة.
	</li>
</ul>
<h3>
	ثالثا: تطبيقات الهاتف الهجينة Hybrid
</h3>

<p>
	لقد صُمّمت تطبيقات الهاتف الهجينة باستخدام تقنيات الويب القياسية مثل HTML5 وCSS وJavaScript، وهي مجمعة مثل حزم تثبيت التطبيق، حيث تعمل التطبيقات المختلطة -طبعًا على العكس من التطبيقات الأصيلة- على "حاوية ويب" توفر إمكانية التشغيل عبر المتصفح، بالإضافة إلى كونها جسرًا لواجهات برمجة التطبيقات الأصيلة للهواتف، وهنا تُستخدم أُطر عمل مثل أباتشي كوردوفا Apache Cordova وأيونيك Ionic.
</p>

<h4>
	المميزات
</h4>

<ul>
<li>
		توفير الكثير من الوقت والجهد وكذلك المال، من خلال تطوير تطبيق واحد لكل المنصات.
	</li>
	<li>
		كود رئيسي/ملفات برمجية مشتركة بين تطبيقات الويب وتطبيقات الهاتف، وتُعَد أهم الميزات لمطور التطبيق.
	</li>
	<li>
		استخدام مهارات <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">تطوير الويب</a> لبناء تطبيقات الهواتف.
	</li>
</ul>
<h4>
	العيوب
</h4>

<ul>
<li>
		أداء أقل موازنةً بالتطبيقات الأصيلة، إضافةً إلى محدودية الأداء بسبب التجسير.
	</li>
	<li>
		يوجد اختلاف - قد لا يتفق عليه الكثير - بخصوص واجهات التطبيق وتجربة المستخدم، فلا شك أن التطبيقات الأصيلة تتفوق في الواجهات عن الهجينة.
	</li>
</ul>
<h3>
	رابعا: تطبيقات الويب التقدمية Progressive Web Applications
</h3>

<p>
	تطبيقات الويب التقدمية PWA هي تطبيقات ويب تستخدم بعضًا من إمكانيات المتصفح -مثل العمل في وضع عدم الاتصال وتشغيل بعض العمليات في الخلفية وإضافة ارتباط إلى الشاشة الرئيسية للهاتف-، لتوفر للمستخدم تجربة ما يشبه التطبيق عبر المتصفح. تشكّل هذه الطريقة نهجًا بديلًا لتطوير تطبيقات الهواتف التقليدية عن طريق تجاوز تسليم التطبيق لمتجر التطبيقات الخاصة بالمنصة، وكذلك تخطي خطوات تثبيت التطبيق. وهنا تستخدم أُطر عمل مثل Angular وReact وPolymer لإنشاء تطبيقات الويب التقدمية.
</p>

<h4>
	المميزات
</h4>

<ul>
<li>
		التطبيق نفسه متاح لكل من الويب والهاتف.
	</li>
	<li>
		يمكن الوصول إليه من خلال عنوان الإنترنت URL، ولا يلزم التثبيت.
	</li>
</ul>
<h4>
	العيوب
</h4>

<ul>
<li>
		دعم محدود للميزات الأصيلة للهاتف.
	</li>
	<li>
		اعتماد إمكانيات التطبيق على المتصفح المستخدم.
	</li>
</ul>
<h2>
	موازنة التطبيقات الأصيلة مقابل التطبيقات الهجينة
</h2>

<p>
	على أعلى مستوى، هناك أربع طرق رئيسة تختلف بها التطبيقات الأصيلة عن التطبيقات الهجينة كما هو موضح في الجدول التالي:
</p>
<style type="text/css">
table {
    width: 100%;
}

thead {
    vertical-align: middle;
    text-align: center;
} 

td, th {
    border: 1px solid #dddddd;
    text-align: right;
    padding: 8px;
    text-align: inherit;

}
tr:nth-child(even) {
    background-color: #dddddd;
}</style>
<table>
<thead><tr>
<th>
				 
			</th>
			<th>
				التطبيقات الأصيلة
			</th>
			<th>
				التطبيقات الهجينة
			</th>
		</tr></thead>
<tbody>
<tr>
<td>
				المنصة المستهدفة
			</td>
			<td>
				منصة محددة حسب نظام التشغيل
			</td>
			<td>
				متعدد المنصات
			</td>
		</tr>
<tr>
<td>
				لغة البرمجة
			</td>
			<td>
				تستخدم لغة البرمجة التي تدعمها المنصة، مثل استخدام جافا وكوتلن في نظام أندرويد، واستخدام Objective-C وSwift في نظام iOS. لا يمكن استخدام أدوات بديلة مطلقًا.<br>
				لا يمكن التعامل مع إمكانيات نظام التشغيل مباشرة إلا من خلال لغات البرمجة المذكورة، حيث يفهمها النظام ويقوم بتفسيرها Compile وتنفيذ تعليماتها
			</td>
			<td>
				تستخدم طريقة برمجية مختلفة بالاعتماد على تقنيات الويب القياسية يفهمها متصفح الويب في النظام، ويقوم المتصفح بدور الوسيط بين تطبيق الهاتف المبني بهذه الطريقة من جهة، وبين نظام تشغيل الهاتف من جهة أخرى
			</td>
		</tr>
<tr>
<td>
				الوصول إلى إمكانيات الهاتف
			</td>
			<td>
				مباشرةً من خلال النص البرمجي
			</td>
			<td>
				من خلال بعض الإضافات الأصيلة، أو إضافات خارجية في أغلب الحالات
			</td>
		</tr>
<tr>
<td>
				إطار العمل المستخدم
			</td>
			<td>
				أُطر عمل خاصة بالمنصة Platform Frameworks
			</td>
			<td>
				أُطر عمل الويب القياسية Web Frameworks
			</td>
		</tr>
</tbody>
</table>
<h2>
	لماذا تختار طريقة التطبيقات الهجينة على طريقة التطبيقات متعددة المنصات؟
</h2>

<p>
	تتمثل إحدى مشكلات تطوير تطبيقات الهاتف الأصيلة في أنها تتطلب مجموعة مهارات عالية التخصص، فعلى الرغم من وجود مجتمعات مطورين كبيرة ونابضة بالحياة للغة سي C (وهي اللغة الأم لتطوير تطبيقات iOS، وما بُني عليها من لغات برمجة عالية المستوى مثل Objective-C ثم Swift التي صدرت لتشكّل بديلًا عن كل ما سبقها)، وجافا Java (الخاصة بتطوير تطبيقات Android)، وكذلك لغة البرمجة Kotlin (التي اعتمدت رسميًا من جوجل منذ 2017 لتكون ثاني لغة برمجة لتطوير تطبيقات الأندرويد بعد جافا)؛ إلا أن هناك عددًا أقل من المطورين الذين يمتلكون مهارات عالية ومعرفة كبيرة بالإصدارات الخاصة بالنظام الأساسي لتلك اللغات وبيئة التطوير المتكاملة IDE الخاصة بكل لغة.
</p>

<p>
	لا شك أن هناك طلب كبير على المطورين المتميزين للتطبيقات الأصيلة، حيث تتعرض العديد من الشركات لضغوط شديدة فتكون الخيارات إما توظيفهم دائمًا وتحمل تكلفتهم الباهظة كما ذكرنا في عيوب هذه الطريقة من التطوير، أو اعتماد أسلوب التعهيد الذي يمكنهم من توظيف مؤقت لشركات أو مبرمجين لإنشاء التطبيقات. هذه التحديات تجعلنا نفكر في اتجاه آخر، وهو إمكانية إنشاء تطبيق يعمل على جميع المنصات بتقنيات معروفة ومهارات متوسطة، وهنا يأتي تصنيف التطبيقات الهجينة الذي يعتمد على تقنيات الويب القياسية، وسنركز على هذا التصنيف في هذه السلسلة؛ أما إن كنت من ذوي المهارات العالية في تطوير التطبيقات لمنصة محددة فهنيئًا لك، إلا أن هذه السلسلة موجهة للمهتمين بتطوير أو إنشاء تطبيقات الهاتف باستخدام الأطر الهجينة.
</p>

<h2>
	كيف تعمل الأطر الهجينة ومتعددة المنصات عبر الأنظمة الأساسية؟
</h2>

<p>
	تسمح التطبيقات الهجينة للمطورين باستخدام تقنيات الويب القياسية HTML, CSS, JS، حيث يمكن من خلال هذه التقنيات <a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">إنشاء موقع ويب</a> مثل موقع لعرض معلومات المؤسسة، أو موقع إخباري، أو موقع شخصي.. إلخ؛ أو إنشاء تطبيق ويب ليكون موقعًا ذا غرض معين مثل موقع لعرض المقالات، أو موقع لتنزيل الكتب، أو موقع لحساب السعرات الحرارية والوزن المثالي.. إلخ.
</p>

<p>
	تُغلّف التطبيقات الهجينة في حاوية تسمح لتطبيق الويب بالعمل مثل التطبيق الأصيل على الهاتف، حيث يمكن استخدام معظم التعليمات البرمجية من تطبيق ويب لإنشاء تطبيق هاتف بالاعتماد على أنّ تطبيقات الهواتف الهجينة هي مجرد تطبيقات ويب تعمل في بيئة متصفح الويب المضمن في نظام تشغيل الهاتف. يعتمد نظام أندرويد على عارض الويب WebView بينما يعتمد نظام iOS على UIWebView الذي يستخدم في إصدار iOS الثاني حتى الثامن، وقد طُوِّر لتسريع عرض المكونات في المتصفح بدءًا من الإصدار الثامن، وصدر باسم جديد هو WKWebView. يُعَدّ تطوير التطبيقات الهجينة بديلًا فعالًا لمطوري الويب الذين يرغبون في إنشاء تطبيقات الهواتف بسرعة، نظرًا لأن أداء طريقة عمل المتصفحات في الهواتف في تحسن مستمر من ناحية تحويل التطبيق وتشغيله وعرضه.
</p>

<p>
	وبالمثل، تُكتَب تطبيقات الويب التقدمية PWA باستخدام تقنيات برمجة تطبيقات الويب التقليدية، ويكون الوصول إليها مبدئيًا من خلال متصفح نظام التشغيل إما على الهاتف أو جهاز الحاسوب.
</p>

<p>
	توفر معظم الأطر المشتركة بين الأنظمة الأساسية مكونات أصيلة للعمل مع التعليمات البرمجية عبر الأنظمة الأساسية، بينما تعمل بعض الأطر الأخرى مثل Flutter وXamarin، على ترجمة التعليمات البرمجية عبر الأنظمة الأساسية إلى الكود الأصيل للحصول على أداء أفضل.
</p>

<h2>
	أجزاء تطبيقات الهاتف من وجهة نظر فريق التطوير
</h2>

<p>
	ينظر فريق التطوير إلى عملية تطوير التطبيق من خلال منظورين رئيسين، وهما الواجهات الأمامية والوظائف التي ينفذها التطبيق. بعض التطبيقات ينجزها شخص واحد مؤهل في المنظورين - بلا شك اعتمادًا على حجم التطبيق والوقت المقدر لإنشائه -، وبعض التطبيقات يحتاج إلى فريق عمل متخصص كل في جزئيته، نوضّحهما كما يلي:
</p>

<h3>
	الواجهة الأمامية لتطبيق الهاتف Front-End
</h3>

<p>
	الواجهة الأمامية للهاتف هي الجزء المرئي والتفاعلي من التطبيق الذي يتفاعل معه المستخدم، وعند استخدام مصطلح "مبرمج تطبيقات الهاتف"، فإننا غالبًا ما نقصد الجزء الأمامي من التطبيق، بحيث يكون هذا المبرمج مؤهلًا في اللغات، والتقنيات المستخدَمة لإنشاء هذه الواجهات، بحيث قد يكون وحده مطورًا للتطبيق، أو يشاركه أشخاص مختلفون في تصميم وتطوير الواجهات، فقد يتواجد في الفريق مصممو رسومات متخصصون مسؤولون عن إنشاء عناصر مرئية للتطبيقات مثل الرموز والخلفيات والألوان والسمات وأجزاء أخرى من التطبيق، في حالة أنواع معينة من التطبيقات مثل الألعاب مثلًا، وقد يضم الفريق مطوري الرسوم المتحركة.
</p>

<p>
	الواجهة الخلفية لتطبيق الهاتف Back-End بغضّ النظر عن النظام الأساسي للواجهة الأمامية أو طريقة التطوير المستخدمة ومدى جمال والتصميم، فإن تنفيذ التطبيق للوظائف المطلوبة منه تُعَد أكثر أهميةً للمستخدمين، وإلا ما الفائدة من تطبيق آلة حاسبة يبدو جيدًا، ويستخدم رموز وسمات وألوان رائعة، لكنه ينجز عمليات الحساب بطريقة خاطئة ومنافية للمنطق. نظرًا للأهمية الحاسمة للخدمات الخلفية لنجاح تطبيقات الهاتف، فإن لدى المطورين العديد من الخيارات المعمارية المهمة التي يجب عليهم الموازنة بينها واختيار أفضلها، من بينها الخدمات التي يجب أن ينشؤوها بأنفسهم، وأي الخدمات الخارجية المقدَّمة من طرف ثالث يجب أن يستفيدوا منها، وبعد ذلك يجب عليهم تشغيل وصيانة خدماتهم الخاصة أو إذا استفادوا من خدمات الطرف الثالث.
</p>

<h2>
	خدمات تطبيقات الهاتف الرئيسية
</h2>

<p>
	هناك المئات من الخدمات السحابية والجهات الخارجية التي يمكن لمطوري تطبيقات الهواتف الاستفادة منها لتسريع تطوير تطبيقاتهم وتسليمها، ومع ذلك فمن الصعب أن يتمكن المطور من إجمال وفهم كل هذه الخدمات، ولهذا بدلًا من ذلك، يجب على مطوري الهواتف البحث عن بيئة تطوير تسهّل عليهم دمج واستخدام القدرات المطلوبة الأكثر شيوعًا في تطبيقاتهم بسرعة وسهولة، مع الحفاظ على حرية الاستفادة من العديد من الخدمات الفردية المتاحة، وهذه الخدمات مصنفة كما يلي:
</p>

<h3>
	خدمات أساسية
</h3>

<ul>
<li>
		إدارة إنشاء العضوية وتسجيل الدخول للمستخدمين.
	</li>
	<li>
		تسجيل الدخول عبر منصات التواصل الاجتماعي (تسجيل الدخول بحساب Facebook أو Twitter، إلخ).
	</li>
	<li>
		تحليل طريقة استخدام المستخدم للتطبيق ومتابعة سجل الأخطاء.
	</li>
	<li>
		الإشعارات الآنية/اللحظية.
	</li>
	<li>
		اختبار التطبيق على نفس الفئة من الأجهزة المستخدمة.
	</li>
</ul>
<h3>
	خدمات البيانات
</h3>

<ul>
<li>
		التخزين السحابي.
	</li>
	<li>
		بيانات الحقيقية في الوقت الفعلي.
	</li>
	<li>
		منطق ووظائف التطبيق / وظائف السحابة.
	</li>
</ul>
<h3>
	تعلم الآلة
</h3>

<ul>
<li>
		المحادثة الآلية (الرد التلقائي).
	</li>
	<li>
		التعرف على الصور والفيديو.
	</li>
	<li>
		التعرف على الكلام (تحويل النص إلى صوت، وبالعكس).
	</li>
</ul>
<h2>
	الموازنة بين التطبيقات المذكورة لإنشاء تطبيقك الخاص
</h2>

<p>
	من خلال ما سبق وتعرفت عليه، فما هو اختيارك من بين الطرق المذكورة أعلاه لإنشاء تطبيقك الخاص؟
</p>

<p>
	يتردد المطور في استخدام الطريقة الأمثل لتطوير التطبيق، فقد يكون المطور ذو مهارات عالية لكن تطبيقه بسيط، أو العكس، فالمتغيرات في آلية اختيار طريقة التطوير كثيرة، ويتحتم على المطور الموازنة بينها. sنحاول من خلال المخطط التالي الإجابة على بعض التساؤلات التي تمر في خاطر المطور، ونخلُص من خلال الإجابات إلى طريقة التطوير المناسبة للتطبيق.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="70325" href="https://academy.hsoub.com/uploads/monthly_2021_06/60dabd6781c06_01_choosemobileappdevelopmentapproach.JPG.67b3bdfaa708c21aac04d8a7aeeed563.JPG" rel=""><img alt="01_choose mobile app development approach.JPG" class="ipsImage ipsImage_thumbnailed" data-fileid="70325" data-unique="j02j2xach" src="https://academy.hsoub.com/uploads/monthly_2021_06/60dabd6798ca9_01_choosemobileappdevelopmentapproach.thumb.JPG.fe7bb5f0cf98f0dd89fa0a5af86c9a7b.JPG"></a>
</p>

<h3>
	إنشاء تطبيق أصيل
</h3>

<p>
	هذه الطريقة هي المثلى، حيث تكون كل الخيارات للتطوير متاحة، وبلا شك ستُرضي كافة المستخدمين عبر تجربة مستخدم متكاملة، لكن يجب رصد ميزانية جيدة لها، إضافةً إلى زيادة عدد المطورين في فريق العمل لتشمل نظامي التشغيل Android وiOS، مع الأخذ بالحسبان الوقت الذي يتطلبه التطوير لإنشاء التطبيق وإطلاقه لمتجر التطبيقات وسوق العمل.
</p>

<h3>
	إنشاء تطبيق متعدد الأنظمة الأساسية
</h3>

<p>
	تُعَد هذه الطريقة حلًا وسطًا بين خيارات طرق تطوير تطبيقات الهواتف، فهي أقل تكلفةً موازنةً بالتطبيقات الأصيلة، مع أداء في مستوى جيد ومرضٍ للمستخدمين، إضافةً إلى كسب الوقت المستغرق في إنشاء نفس التطبيق لكافة أنظمة التشغيل.
</p>

<h3>
	إنشاء تطبيق هجين
</h3>

<p>
	ما تتميز به هذه الطريقة هو سرعة وقت تطوير التطبيق مع تكلفة متواضعة، وغالبا ما تستفيد الشركة الناشئة من إنشاء تطبيق هجين مثل حل تجريبي.
</p>

<h3>
	إنشاء تطبيق ويب PWA
</h3>

<p>
	رغم سرعة وقت تطوير التطبيق في هذه الطريقة، إلا أنها تُستخدم في حالات مخصصة، مثل تخطي الحاجة إلى متجر التطبيقات حيث يمكن الوصول إلى التطبيق من المتصفح، وكذا قلة الحاجة لاستخدام بيانات الإنترنت، إلى جانب إمكانية التصفح في وضع عدم الاتصال.
</p>

<h2>
	خاتمة
</h2>

<p>
	لقد تعرفنا في هذا المقال على تصنيف تطبيقات الهاتف، وصنّفنا طرق تطوير هذه التطبيقات في أربعة طرق، حيث وضحنا منهجية كل طريقة في إنشاء أو تطوير تطبيقات الهاتف، إضافةً إلى التركيز على بيان ميّزات كل طريقة وعيوبها، ثم تطرّقنا إلى الحديث عن تقسيمٍ لعملية تطوير تطبيق الهاتف، والتي تنقسم لفئتين أولاهما فئة تصميم واجهات التطبيق Front-End والتي تهتم بالشكل الجمالي لواجهات وصفحات التطبيق، والتي بدورها تراعي تجربة المستخدم وتعمل على تطويرها وتطويع التطبيق ليكون أسهل ما يكون للمستخدم؛ أما الفئة الثانية فتختص بتطوير وظائف وعمليات التطبيق وتسمى تطوير الواجهات الخلفية Back-End. وقد خُتم المقال بآلية توجه المستخدِم نحو اختيار الطريقة المناسبة في التطوير، متبوعةً برسم توضيحي عن المزايا التي يتطلبها المستخدم في التطبيق، والطريقة المثلى لتطوير هذه التطبيق.
</p>

<p>
	سنتحدث في المقال القادم عن الخطوة الأولى في تطوير تطبيقات الهاتف بالطريقة الهجينة، بالاعتماد على تقنيات الويب القياسية HTML5, CSS, JS من خلال إطار العمل أباتشي كوردوفا Apache Cordova وما تتطلبه من أدوات لتجهيز بيئة العمل والبدء بإنشاء أول تطبيق جوال من خلال كوردوفا.
</p>

<h2>
	اقرأ أيضًا
</h2>

<ul>
<li>
		<a href="https://academy.hsoub.com/programming/javascript/cordova/%D9%86%D8%B8%D8%B1%D8%A9-%D9%87%D9%8A%D9%83%D9%84%D9%8A%D9%91%D8%A9-%D8%B9%D8%A7%D9%85%D9%91%D8%A9-%D9%84%D9%85%D9%86%D8%B5%D9%91%D8%A9-cordova-r583/" rel="">نظرة هيكلية عامة لمنصة Cordova</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/javascript/cordova/%D8%A3%D9%86%D8%B4%D8%A6-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D9%83-%D8%A7%D9%84%D8%A3%D9%88%D9%84-%D9%81%D9%8A-cordova-r594/" rel="">أنشئ تطبيقك الأول في Cordova</a>
	</li>
	<li>
		<a href="https://academy.hsoub.com/programming/general/%D8%AA%D8%B9%D9%84%D9%85-%D8%AA%D8%B7%D9%88%D9%8A%D8%B1-%D8%A7%D9%84%D9%88%D9%8A%D8%A8/" rel="">المدخل الشامل لتعلم تطوير الويب</a>
	</li>
</ul>
]]></description><guid isPermaLink="false">1261</guid><pubDate>Wed, 30 Jun 2021 15:00:00 +0000</pubDate></item><item><title>&#x623;&#x646;&#x634;&#x626; &#x62A;&#x637;&#x628;&#x64A;&#x642;&#x643; &#x627;&#x644;&#x623;&#x648;&#x644; &#x641;&#x64A; Cordova</title><link>https://academy.hsoub.com/programming/javascript/cordova/%D8%A3%D9%86%D8%B4%D8%A6-%D8%AA%D8%B7%D8%A8%D9%8A%D9%82%D9%83-%D8%A7%D9%84%D8%A3%D9%88%D9%84-%D9%81%D9%8A-cordova-r594/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2018_01/08-2.png.eae37f85dfd852ded23b8090b72e7236.png" /></p>

<p>
	تُظهر هذ الإرشادات كيفية إنشاء تطبيقات JS/HTML Cordova ونشرها على منصّات موبايل أصليّة متنوعة باستخدام واجهة سطر أوامر كوردوفا (cordova (CLI, راجع <a href="http://cordova.apache.org/docs/en/latest/reference/cordova-cli/index.html" rel="external nofollow">CLI reference</a> لتفاصيل مرجعية عن واجهة سطر أوامر Cordova.
</p>

<h2 id="تثبيت-cordova-cli">
	تثبيت Cordova CLI
</h2>

<p>
	واجهة سطر أوامر Cordova موزّعة كحزمة npm (نظام إدارة حزم). اتبع الخطوات التالية لتثبيت أداة cordova CLI :<br>
	1- حمّل وثبّت <a href="https://nodejs.org/en/download/" rel="external nofollow">Node.js</a>. خلال التثبيت يجب أن تكون قادراً على استدعاء <code>node</code> و <code>npm</code> على سطر الأوامر الخاص بك.<br>
	2- (اختياري) حمّل وثبّت <a href="http://git-scm.com/downloads" rel="external nofollow">git client</a>, إذا لم يكن لديك نسخة مسبقًا. قم بتثبيتها, وبعدها يجب أن تكون قادرًا على استدعاء <code>git</code> على سطر الأوامر الخاص بك. حيث يستخدمها CLI لتحميل الموارد عندما يتم الاشارة إليها باستخدام <code>git repo</code><br>
	3- ثبّت cordova باستخدام أداة <code>npm</code> لـ Node.js. حيث سيُحمّل cordova أوتوماتيكيًا باستخدام أداة <code>npm</code> .
</p>

<ul>
<li>
		في OS ولينكس
	</li>
</ul>
<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<span class="pln">$ sudo npm install </span><span class="pun">-</span><span class="pln">g cordova</span></pre>

<p>
	في أنظمة OSX و LINUX قد يكون الحاق الأمر <code>npm</code> بـ <code>sudo</code> ضروريًا لتثبيت أداة التطوير هذه في الأدلة المقيّدة مثل <code>/usr/local/share</code><br>
	إذا كنت تستخدم الأداة الاختيارية <code>nvm/nave</code> أو تمتلك صلاحية الوصول الى دليل التثبيت. يمكنك الاستغناء عن البادئة <code>sudo</code> .
</p>

<ul>
<li>
		في نظام التشغيل ويندوز Windows
	</li>
</ul>
<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs mathematica"><span class="hljs-keyword"><span class="pln">C</span></span><span class="pun">:</span><span class="pln">\&gt;npm install </span><span class="pun">-</span><span class="pln">g cordova</span></code></pre>

<p>
	تخبر العلامة <code>g-</code> الأمر <code>npm</code> بتثبيت cordova بشكل عام. وإذا لم يتم التحديد سيتم التثبيت في الدليل الفرعي <code>node_modules</code> من مسار التثبيت الحالي. بعد إتمام التثبيت يجب أن تتمكن من تشغيل cordova من موجه الأوامر بدون معامِلات، ويجب أن تقوم Cordova بطباعة نص للمساعدة على شاشة موجه الأوامر..
</p>

<h2 id="إنشاء-التطبيق">
	إنشاء التطبيق
</h2>

<p>
	اذهب الى الدليل الذي تدير فيه شفرتك المصدرية. وأنشئ مشروع Cordova
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs avrasm"><span class="pln">$ cordova create hello </span><span class="hljs-keyword"><span class="pln">com</span></span><span class="hljs-preprocessor"><span class="pun">.</span><span class="pln">example</span></span><span class="hljs-preprocessor"><span class="pun">.</span><span class="pln">hello</span></span><span class="pln"> </span><span class="typ">HelloWorld</span></code></pre>

<p>
	هذا ينشئ بنية الدليل المطلوب لتطبيق cordova الخاص بك. افتراضيًا, سكريب <code>cordova create</code> يولد هيكلية تطبيق معتمد على الوب والذي صفحته الرئيسية هي ملف المشروع <code>www/index.html</code>.
</p>

<h2 id="إضافة-منصات">
	إضافة منصّات
</h2>

<p>
	يجب تشغيل جميع الأوامر اللاحقة ضمن الدليل الرئيسي المشروع، أو أي دليل فرعي:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs bash"><span class="pln">$ </span><span class="hljs-built_in"><span class="pln">cd</span></span><span class="pln"> hello</span></code></pre>

<p>
	أضف المنصّات التي ترد لتطبيقك أن يستهدفها. سنضيف منصّة أندرويد و IOS والتأكد من حفظها الى <code>config.xml</code> و <code>package.json</code>:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs livecodeserver"><span class="pln">$ cordova </span><span class="hljs-built_in"><span class="pln">platform</span></span><span class="pln"> </span><span class="hljs-built_in"><span class="pln">add</span></span><span class="pln"> ios
$ cordova </span><span class="hljs-built_in"><span class="pln">platform</span></span><span class="pln"> </span><span class="hljs-built_in"><span class="pln">add</span></span><span class="pln"> android</span></code></pre>

<p>
	للتأكد من مجموعتك الحاليّة للمنصّات:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">cordova platform ls</span></code></pre>

<p>
	تشغيل أوامر لإضافة أو إزالة المنصّات يؤثّر على محتويات دليل منصّات المشروع، حيث تظهر كل منصّة محدّدة كدليل فرعي.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة:</strong> عند استخدام CLI لبناء تطبيقك، يجب عدم تحرير أي ملفات في الدليل /platforms/. تستبدل الملفات في هذا الدليل بشكل روتيني عند تحضير التطبيقات للبناء، أو عند إعادة تثبيت الإضافات.
		</p>
	</div>
</blockquote>

<h2 id="ثبيت-المتطلبات-المسبقة-للبناء">
	ثبيت المتطلبات المسبقة للبناء
</h2>

<p>
	لإنشاء التطبيقات وتشغيلها، يلزمك تثبيت حزم SDK لكل منصّة تريد استهدافها. بدلاً من ذلك، إذا كنت تستخدم متصفح للتطوير فيمكنك استخدام منصّة browser التي لا تتطلب أية SDKs للمنصّة. للتحقق مما إذا كنت مستوفيًا لمتطلبات إنشاء المنصّة:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">cordova requirements
</span><span class="hljs-constant"><span class="typ">Requirements</span></span><span class="pln"> check results </span><span class="hljs-keyword"><span class="kwd">for</span></span><span class="pln"> </span><span class="hljs-symbol"><span class="pln">android</span><span class="pun">:</span></span><span class="pln">
</span><span class="hljs-constant"><span class="typ">Java</span></span><span class="pln"> </span><span class="hljs-constant"><span class="pln">JDK</span></span><span class="hljs-symbol"><span class="pun">:</span></span><span class="pln"> installed </span><span class="pun">.</span><span class="pln">
</span><span class="hljs-constant"><span class="typ">Android</span></span><span class="pln"> </span><span class="hljs-constant"><span class="pln">SDK</span></span><span class="hljs-symbol"><span class="pun">:</span></span><span class="pln"> installed
</span><span class="hljs-constant"><span class="typ">Android</span></span><span class="pln"> </span><span class="hljs-symbol"><span class="pln">target</span><span class="pun">:</span></span><span class="pln"> installed android</span><span class="pun">-</span><span class="hljs-number"><span class="lit">19</span></span><span class="pun">,</span><span class="pln">android</span><span class="pun">-</span><span class="hljs-number"><span class="lit">21</span></span><span class="pun">,</span><span class="pln">android</span><span class="pun">-</span><span class="hljs-number"><span class="lit">22</span></span><span class="pun">,</span><span class="pln">android</span><span class="pun">-</span><span class="hljs-number"><span class="lit">23</span></span><span class="pun">,</span><span class="hljs-constant"><span class="typ">Google</span></span><span class="pln"> </span><span class="hljs-constant"><span class="typ">Inc</span></span><span class="pun">.</span><span class="hljs-symbol"><span class="pun">:</span><span class="typ">Google</span></span><span class="pln"> </span><span class="hljs-constant"><span class="typ">APIs</span></span><span class="hljs-symbol"><span class="pun">:</span></span><span class="hljs-number"><span class="lit">19</span></span><span class="pun">,</span><span class="hljs-constant"><span class="typ">Google</span></span><span class="pln"> </span><span class="hljs-constant"><span class="typ">Inc</span></span><span class="pun">.</span><span class="hljs-symbol"><span class="pun">:</span><span class="typ">Google</span></span><span class="pln"> </span><span class="hljs-constant"><span class="typ">APIs</span></span><span class="pln"> </span><span class="pun">(</span><span class="pln">x86 </span><span class="hljs-constant"><span class="typ">System</span></span><span class="pln"> </span><span class="hljs-constant"><span class="typ">Image</span></span><span class="pun">)</span><span class="hljs-symbol"><span class="pun">:</span></span><span class="hljs-number"><span class="lit">19</span></span><span class="pun">,</span><span class="hljs-constant"><span class="typ">Google</span></span><span class="pln"> </span><span class="hljs-constant"><span class="typ">Inc</span></span><span class="pun">.</span><span class="hljs-symbol"><span class="pun">:</span><span class="typ">Google</span></span><span class="pln"> </span><span class="hljs-constant"><span class="typ">APIs</span></span><span class="hljs-symbol"><span class="pun">:</span></span><span class="hljs-number"><span class="lit">23</span></span><span class="pln">
</span><span class="hljs-constant"><span class="typ">Gradle</span></span><span class="hljs-symbol"><span class="pun">:</span></span><span class="pln"> installed

</span><span class="hljs-constant"><span class="typ">Requirements</span></span><span class="pln"> check results </span><span class="hljs-keyword"><span class="kwd">for</span></span><span class="pln"> </span><span class="hljs-symbol"><span class="pln">ios</span><span class="pun">:</span></span><span class="pln">
</span><span class="hljs-constant"><span class="typ">Apple</span></span><span class="pln"> </span><span class="hljs-constant"><span class="pln">OS</span></span><span class="pln"> </span><span class="hljs-constant"><span class="pln">X</span></span><span class="hljs-symbol"><span class="pun">:</span></span><span class="pln"> </span><span class="hljs-keyword"><span class="kwd">not</span></span><span class="pln"> installed
</span><span class="hljs-constant"><span class="typ">Cordova</span></span><span class="pln"> tooling </span><span class="hljs-keyword"><span class="kwd">for</span></span><span class="pln"> iOS requires </span><span class="hljs-constant"><span class="typ">Apple</span></span><span class="pln"> </span><span class="hljs-constant"><span class="pln">OS</span></span><span class="pln"> </span><span class="hljs-constant"><span class="pln">X</span></span><span class="pln">
</span><span class="hljs-constant"><span class="typ">Error</span></span><span class="hljs-symbol"><span class="pun">:</span></span><span class="pln"> </span><span class="hljs-constant"><span class="typ">Some</span></span><span class="pln"> of requirements check failed</span></code></pre>

<h2 id="بناء-التطبيق">
	بناء التطبيق
</h2>

<p>
	افتراضيًا، Cordova تنشئ سكريبت يولد هيكلية تطبيق معتمد على الوب والذي صفحة البداية له هي ملف المشروع <code>www/index.html</code>. يجب تحديد أيّة تهيئة كجزء من معالج حدث <code>deviceready</code> المعرّف في <code>www/js/index.js</code>. قم بتشغيل الأمر التالي لبناء المشروع لجميع المنصّات:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">cordova build</span></code></pre>

<p>
	يمكنك اختياريًا تحديد المجال في كل بناء لمنصّات محدّدة- في هذه الحالة"ios"
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">cordova build ios</span></code></pre>

<h2>
	اختبار التطبيق
</h2>

<p>
	غالباً ما تأتي حزم SDK لمنصّات الموبايل مع محاكي تشغّل صورة الجهاز, وبذلك يمكنك تشغيل التطبيق من الشاشة الرئيسية ومشاهدة كيفية تفاعله مع العديد من ميزات المنصّة.<br>
	شغّل أمر مثل التالي لإعادة بناء التطبيق وعرضه ضمن محاكي منصّة معيّنة:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">cordova emulate android</span></code></pre>

<p style="text-align: center;">
	<img alt="android_emulate_init_02.png" class="ipsImage ipsImage_thumbnailed" data-fileid="26428" data-unique="3iexzisfd" src="https://academy.hsoub.com/uploads/monthly_2018_01/android_emulate_init_02.png.183e1a2feb7952405304d8b8c0e12d10.png"> 
</p>

<p>
	تبعاً لأوامر محاكي Cordova تحدّث (refreshes) صورة المحاكي لعرض أحدث تطبيق, والذي قد أصبح متاحاً للوصول من الشاشة الرئيسية:
</p>

<p style="text-align: center;">
	 <img alt="android_emulate_install_02.png" class="ipsImage ipsImage_thumbnailed" data-fileid="26426" data-unique="a8fwm3eht" src="https://academy.hsoub.com/uploads/monthly_2018_01/android_emulate_install_02.png.466a02bcf71afab031f8fb28428d2cf6.png"></p>

<p>
	في نفس الوقت يمكنك توصيل الهاتف إلى حاسوبك واختبار التطبيق مباشرةً:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">cordova run android</span></code></pre>

<p>
	قبل تشغيل هذا الأمر، تحتاج إلى إعداد الجهاز للاختبار، باتباع الإجراءات التي تختلف حسب كل منصّة.
</p>

<h2 id="إضافة-الإضافات-plugins">
	إضافة الإضافات Plugins
</h2>

<p>
	يمكنك تعديل التطبيق المولَّد افتراضياً للاستفادة من ميزات تقنيات الوب المعيارية, ولكن ستكون بحاجة لإضافة Plugins لكي يتمكّن التطبيق من الوصول لميزات على مستوى الجهاز. تعرض الإضافة واجهة برمجة تطبيقات جافا سكربت Javascript <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> لوظيفة SDK الأصلية. يتم استضافة الإضافات عادةً على <code>npm</code> ويمكنك البحث عنهم في صفحة <code>plugin search</code>. تُزوَّد بعض مفاتيح <abbr title="Application Programming Interface | واجهة برمجية">API</abbr> من قبل مشروع المصدر المفتوح Apache Cordova ويشار إليها باسم Core Plugin APIs
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">cordova plugin search camera</span></code></pre>

<p>
	لإضافة وحفظ إضافة الكاميرا إلى <code>config.xml</code> و <code>package.json</code>، سنحدّد اسم حزمة لإضافة الكاميرا:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">cordova plugin add cordova</span><span class="pun">-</span><span class="pln">plugin</span><span class="pun">-</span><span class="pln">camera
</span><span class="hljs-constant"><span class="typ">Fetching</span></span><span class="pln"> plugin </span><span class="hljs-string"><span class="str">"cordova-plugin-camera@~2.1.0"</span></span><span class="pln"> via npm
</span><span class="hljs-constant"><span class="typ">Installing</span></span><span class="pln"> </span><span class="hljs-string"><span class="str">"cordova-plugin-camera"</span></span><span class="pln"> </span><span class="hljs-keyword"><span class="kwd">for</span></span><span class="pln"> android
</span><span class="hljs-constant"><span class="typ">Installing</span></span><span class="pln"> </span><span class="hljs-string"><span class="str">"cordova-plugin-camera"</span></span><span class="pln"> </span><span class="hljs-keyword"><span class="kwd">for</span></span><span class="pln"> ios</span></code></pre>

<p>
	يمكن أن تضاف الإضافات أيضاً باستخدام الدليل أو باستخدام <code>git repo</code>
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة:</strong> يضيف الـ CLI شفرة الإضافة لتناسب كل منصّة. إذا أردت التطوير من خلال أداة شيل منخفضة المستوى أو منصّات SDK كما نوقش في <a href="https://academy.hsoub.com/programming/javascript/cordova/%D9%86%D8%B8%D8%B1%D8%A9-%D9%87%D9%8A%D9%83%D9%84%D9%8A%D9%91%D8%A9-%D8%B9%D8%A7%D9%85%D9%91%D8%A9-%D9%84%D9%85%D9%86%D8%B5%D9%91%D8%A9-cordova-r583/" rel="">مقال مدخل إلى Apache Cordova</a>, ستكون بحاجة لتشغيل أداة Plugman لإضافة إضافات منفصلة لكل منصّة.
		</p>
	</div>
</blockquote>

<p>
	استخدم <code>plugin ls</code> أو <code>plugin list</code> أو <code>plugin</code> لوحدها لعرض الإضافات المثبّتة حالياً. كلٌ يُعرض من خلال معرّفه الخاص:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs lasso"><span class="pln">$ cordova plugin ls
cordova</span><span class="hljs-attribute"><span class="pun">-</span><span class="pln">plugin</span></span><span class="hljs-attribute"><span class="pun">-</span><span class="pln">camera</span></span><span class="pln"> </span><span class="hljs-number"><span class="lit">2.1</span></span><span class="hljs-number"><span class="pun">.</span><span class="lit">0</span></span><span class="pln"> </span><span class="hljs-string"><span class="str">"Camera"</span></span><span class="pln">
cordova</span><span class="hljs-attribute"><span class="pun">-</span><span class="pln">plugin</span></span><span class="hljs-attribute"><span class="pun">-</span><span class="pln">whitelist</span></span><span class="pln"> </span><span class="hljs-number"><span class="lit">1.2</span></span><span class="hljs-number"><span class="pun">.</span><span class="lit">1</span></span><span class="pln"> </span><span class="hljs-string"><span class="str">"Whitelist"</span></span></code></pre>

<h2 id="استخدام-mergesلتخصيص-كل-منصة">
	استخدام mergesلتخصيص كل منصّة
</h2>

<p>
	في حين أن Cordova تسمح لك بنشر التطبيق بسهولة على منصّات مختلفة, إلا أنه في بعض الأحيان ستحتاج لإضافة تخصيصات. في هذه الحالة, لن تقوم بتعديل الملفات المصدرية في أدّلة www المتعددة ضمن دليل المستوى العالي platforms , لأنه يتم استبداله بشكل منتظم مع مصدر المنصّات المتعددة لدليل المستوى العالي www<br>
	بدلاً من ذلك، دليل المستوى الأعلى merges يوفر مكاناً لتحديد الموارد للنشر على منصّات محدّدة. يعكس كل دليل فرعي خاص بالمنصّة ضمن عمليات merges بنية الدليل لشجرة المصدر www، مما يسمح لك بتجاوز أو إضافة ملفات حسب الحاجة. على سبيل المثال، إليك كيفية استخدام عمليات merges لزيادة حجم الخط الافتراضي لأجهزة أندرويد:
</p>

<ul>
<li>
		حرّر ملف <code>www/index.html</code> , مضيفاُ رابط ملف CSS إضافي, <code>overrides.css</code> في هذه الحالة:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs rust"><span class="tag">&lt;link</span><span class="pln"> </span><span class="atn">rel</span><span class="pun">=</span><span class="hljs-string"><span class="atv">"stylesheet"</span></span><span class="pln"> </span><span class="hljs-keyword"><span class="atn">type</span></span><span class="pun">=</span><span class="hljs-string"><span class="atv">"text/css"</span></span><span class="pln"> </span><span class="atn">href</span><span class="pun">=</span><span class="hljs-string"><span class="atv">"css/overrides.css"</span></span><span class="pln"> </span><span class="tag">/&gt;</span></code></pre>

<ul>
<li>
		يمكن اختياريا إنشاء ملف <code>www/css/overrides.css</code> فارغ. والذي سيطبق من أجل كل بناء غير مخصص للأندرويد, لمنع خطأ الملف مفقود (missing-file)
	</li>
	<li>
		أنشئ ملف css على دليل فرعي ضمن merges/android, ثم أضف ملف <code>overrides.css</code> المقابل. حدّد CSS الذي يتجاوز حجم الخط الافتراضي 12-نقطة داخل <code>www/css/index.css</code>, على سبيل المثال:
	</li>
</ul>
<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs css"><span class="hljs-tag"><span class="pln">body</span></span><span class="pln"> </span><span class="hljs-rules"><span class="pun">{</span><span class="pln"> </span><span class="hljs-rule"><span class="hljs-attribute"><span class="pln">font</span><span class="pun">-</span><span class="pln">size</span></span><span class="pun">:</span><span class="hljs-value"><span class="hljs-number"><span class="lit">14</span></span><span class="lit">px</span></span></span><span class="pun">;</span><span class="pln"> </span><span class="hljs-rule"><span class="pun">}</span></span></span></code></pre>

<p>
	عندما تعيد بناء المشروع, تضمّن نسخة الأندرويد حجم الخط المخصص, بينما تظل البقية دون تغيير. كما يمكن استخدام merges لإضافة ملفات غير موجودة في الدليل الأصلي <code>www</code>. على سبيل المثال, تطبيق يمكنه تضمين back button رسومي داخل واجهة الـ iOS, مخزّن في <code>merges/ios/img/back_button.png</code> , ، في حين أنه يمكن لنسخة الأندرويد بدلاً من ذلك التقاط الأحداث backbutton من زر الأجهزة المقابلة.
</p>

<h2 id="تحديث-كوردوفا-وتطبيقك">
	تحديث كوردوفا وتطبيقك
</h2>

<p>
	بعد تثبيت أداة Cordova, يمكنك دوماً تحديثها إلى آخر إصدار من خلال تشغيل الأمر
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs bash"><span class="pln">$ </span><span class="hljs-built_in"><span class="pln">sudo</span></span><span class="pln"> npm update </span><span class="pun">-</span><span class="pln">g cordova</span></code></pre>

<p>
	استخدم هذه الصّياغة لتثبيت إصدار محدّد:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">sudo npm install </span><span class="pun">-</span><span class="pln">g cordova</span><span class="hljs-variable"><span class="pln">@3</span></span><span class="pun">.</span><span class="hljs-number"><span class="lit">1.0</span></span><span class="pun">-</span><span class="hljs-number"><span class="lit">0</span></span><span class="lit">.</span><span class="hljs-number"><span class="lit">2</span><span class="pun">.</span><span class="lit">0</span></span></code></pre>

<p>
	نفّذ <code>cordova -v</code> لمعرفة النسخة الحالية قيد التشغيل. شغّل الأمر التالي لإيجاد آخر نسخة تم إصدارها Cordova:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs ruby"><span class="hljs-variable"><span class="pln">$ </span></span><span class="pln">npm info cordova version</span></code></pre>

<p>
	لتحديث المنصّة التي تستهدفها:
</p>

<pre class="ipsCode prettyprint lang-javascript prettyprinted" id="ips_uid_466_7" style="">
<code class="hljs livecodeserver"><span class="pln">$ cordova </span><span class="hljs-built_in"><span class="pln">platform</span></span><span class="pln"> update android </span><span class="hljs-comment"><span class="pun">--</span><span class="pln">save</span></span><span class="pln">
$ cordova </span><span class="hljs-built_in"><span class="pln">platform</span></span><span class="pln"> update ios </span><span class="hljs-comment"><span class="pun">--</span><span class="pln">save</span></span><span class="pln">
</span><span class="pun">...</span><span class="pln">etc</span><span class="pun">.</span></code></pre>

<p>
	ترجمة -وبتصرّف- للمقال <a href="http://cordova.apache.org/docs/en/latest/guide/cli/index.html" rel="external nofollow">Create your first Cordova app</a> للمساهمين في كتابة المقال على <a href="https://github.com/apache/cordova-docs/blob/master/www/docs/en/dev/guide/overview/index.md" rel="external nofollow">GitHub</a>
</p>

<hr>
<p>
	هذا المقال منشور تحت الرخصة <a href="http://www.apache.org/licenses/LICENSE-2.0" rel="external nofollow">Apache License, Version 2.0</a>
</p>
]]></description><guid isPermaLink="false">594</guid><pubDate>Mon, 08 Jan 2018 15:08:00 +0000</pubDate></item><item><title>&#x646;&#x638;&#x631;&#x629; &#x647;&#x64A;&#x643;&#x644;&#x64A;&#x629; &#x639;&#x627;&#x645;&#x629; &#x644;&#x645;&#x646;&#x635;&#x629; Cordova</title><link>https://academy.hsoub.com/programming/javascript/cordova/%D9%86%D8%B8%D8%B1%D8%A9-%D9%87%D9%8A%D9%83%D9%84%D9%8A%D8%A9-%D8%B9%D8%A7%D9%85%D8%A9-%D9%84%D9%85%D9%86%D8%B5%D8%A9-cordova-r583/</link><description><![CDATA[
<p><img src="https://academy.hsoub.com/uploads/monthly_2017_12/01-2.png.dcc15b8e10a02da3ad2ee69a5bd1a04f.png" /></p>

<h2>
	نظرة عامة
</h2>

<p>
	أباتشي كوردوفا (Apache Cordova) هي منصّة مفتوحة المصدر لتطوير تطبيقات الموبايل. تمكّنك من استخدام تقنيات الويب المعياريّة مثل HTML5, CSS3, وJavaScript للتطوير متعدد المنصّات “cross-platform development” حيث تنفذ التطبيقات من خلال محزّم مخصص لكل منصّة، ويعتمد على الواجهات البرمجيّة القياسيّة للوصول إلى موارد الأجهزة كالحسّاسات، البيانات، وحالة الشبكة.<br>
	قم باستخدام Apache Cordova إذا كنت:
</p>

<ul>
<li>
		مطوّر تطبيقات موبايل وتريد أن توسّع قدرة تطبيقك ليعمل على أكثر من منصّة، بدون الحاجة إلى إعادة تنفيذه بلغة ومجموعة الأدوات الخاصّة بكل منصّة.
	</li>
	<li>
		مطوّر تطبيقات ويب، وتريد أن تنشر تطبيق محزّم للتوزيع على متاجر تطبيقات متنوعة.
	</li>
	<li>
		مطوّر تطبيقات موبايل مهتم بدمج مكونات التطبيق الأصليّة بطريقة عرض الويب WebView (نافذة تصفح خاصّة) يمكنها الوصول إلى الواجهات البرمجية للتطبيقات على مستوى الأجهزة (device-level APIs)، أو إذا كنت تودّ تطوير واجهة إضافة (plugin interface) بين المكونات الأصليّة ومكونات الويب.
	</li>
</ul>
<h2 id="البنية">
	البنية
</h2>

<p>
	يتواجد العديد من المكونات لتطبيقات Cordova, يبيّن المخطط التالي نظرة عالية المستوى على بنية تطبيق Cordova.
</p>

<p style="text-align: center;">
	<a class="ipsAttachLink ipsAttachLink_image" data-fileid="26214" href="https://academy.hsoub.com/uploads/monthly_2017_12/1.png.8ac20e634ce237c1825d1f6e6db79f35.png" rel=""><img alt="1.png" class="ipsImage ipsImage_thumbnailed" data-fileid="26214" data-unique="xctrd0jq3" src="https://academy.hsoub.com/uploads/monthly_2017_12/1.thumb.png.7c056524f1edf17db6e79ff7a1dc83f7.png"></a>
</p>

<h3 id="عرض-الوب-webview">
	عرض الويب WebView
</h3>

<p>
	WebViewالمدعم بـ Cordova يمكن أن يزود التطبيق بكل واجهات المستخدم الخاصّة به، كما يمكن أن يكون في بعض المنصّات كمكوّن ضمن تطبيق مختلط أكبر يدمج WebView مع مكوّنات التطبيق الأصليّة
</p>

<h3 id="تطبيق-الوب-web-app">
	تطبيق الويب Web App
</h3>

<p>
	هو الجزء الذي تتوضع فيه شفرة تطبيقك، التطبيق بحد ذاته ينفذ كصفحة ويب، وبشكل افتراضي هو الملف المسمّى <code>index.html</code> والذي يرتبط بـ JavaScript ، CSS، صور، ملفات وسائط متعددة، أو مصادر أخرى ضرورية لتشغيله. ينفذ التطبيق في WEBVIEW ضمن محزّم البرنامج الأصلي, الذي قمت بتوزيعه على متاجر التطبيقات.<br>
	ويحتوي أيضًا على ملف مهم للغاية وهو <code>config.xml</code> والذي يؤمّن معلومات عن التطبيق ويحدّد البارامترات التي تؤثر على كيفية عمله، كتحديد فيما إذا كان يستجيب لتغيرات الاتجاه.
</p>

<h3 id="الإضافات-plugins">
	الإضافات Plugins
</h3>

<p>
	تشكل الإضافات جزء أساسي من النظام الوظيفي لـ Cordova. فهي تؤمن الواجهة لـ Cordova والمكونات الأساسيّة للاتصال فيما بينها، وعملية التغليف إلى واجهات تطبيقات الجهاز القياسيّة APIS ، وهذا يمكنك من استدعاء الشفرة الأصليّة للبرنامج من خلال Javascript. مشروع Apache Cordova يدير مجموعة من الإضافات تسمّى الإضافات الجوهرية Core Plugins. هذه الإضافات تمكّن تطبيقك من الوصول إلى موارد جهازك (كالبطارية، الكاميرا، جهات الاتصال، ..الخ). وبالإضافة إلى المكونات الجوهريّة يوجد العديد من الإضافات التابعة لجهات أخرى third-party plugins والتي تؤمّن تغليفات إضافية لخصائص قد لا تكون متوافرة بالضرورة في جميع الأجهزة. يمكنك البحث عن إضافات Cordova باستخدام (plugin search(npm، كما يمكنك أيضًا تطوير إضافاتك الخاصة. يمكن أن تكون الإضافات ضروريّة . كمثال، من أجل الاتصال بين Cordova والمكونات الاصليّة العاديّة.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة:</strong> عندما تقوم بإنشاء مشروع باستخدام Cordova, فإن المشروع لا يمتلك أيّة إضافة، و هو السلوك الافتراضي حديثًا، فأيّة إضافات ترغب بها، حتى الإضافات الجوهرية, يجب أن تضاف بشكل دقيق.
		</p>
	</div>
</blockquote>

<p>
	لا تؤمن Cordova أي أدوات واجهات UI widgets أو بنى تعتمد عرض النماذج MV* frameworks. تؤمن لها فقط زمن التشغيل الذي يمكنها التنفيذ خلاله. إذا كنت تريد استخدام أدوات الواجهات أو بيئة عرض النماذج، يتوجب عليك اختيارهم وتضمينهم في تطبيقك.
</p>

<h3 id="مسارات-التطوير-development-paths">
	مسارات التطوير Development Paths
</h3>

<p>
	تزودك Cordova بمخططي عمل workflow أساسيين من أجل إنشاء تطبيق موبايل، بينما يمكنك غالبًا استخدام أيّ منهما لإنجاز نفس المهمة، فإنّ كل منهم يقدم خصائص إيجابية:
</p>

<ul>
<li>
		<strong>مخطط عمل موجه الأوامر متعدد المنصات (Cross-platform (CLI) workflow)</strong>
	</li>
</ul>
<p>
	استخدم هذا المخطط إذا كنت تودّ أن يعمل تطبيقك على أنظمة تشغيل مختلفة قدر الامكان. مع حاجة قليلة للتطوير المتعلق بالمنصة (platform-specific development)<br>
	يركّز مخطط العمل هذا على موجه الأوامر في كوردوفا (Cordova CLI)، والذي هو عبارة عن أداة عالية المستوى تمكنك من بناء مشاريع لمنصّات متعددة في نفس الوقت. تستخرج العديد من خصائص سكربتات شيل(الصدفة) الأقل المستوى lower-level shell .scripts يقوم CLI بنسخ مجموعة من تجهيزات الويب الشائعة إلى مجلدات فرعية لكل منصّة موبايل، القيام بتغيير الإعدادات الضرورية لعمل كل منها، وتشغيل سكريبتات البناء لتوليد الملفات التنفيذية للتطبيقات. يؤمن CLI أيضًا واجهة عامة لتنصيب الإضافات على تطبيقك. إذا لم تكن بحاجة إلى مخطط مخصّص لمنصّة محددة يفضل اعتماد المخطط لمنصّات متعددة.
</p>

<ul>
<li>
		<strong>مخطط العمل المتعلق بمنصّة Platform-centered workflow</strong>
	</li>
</ul>
<p>
	قم باستخدام هذا المخطط إذا كنت تودّ إنشاء تطبيق مخصّص لمنصّة واحدة, ولديك حاجة لأن تكون قادرًا على تعديله بالمستويات الأدنى. وكمثال إذا كنت تريد من تطبيقك أن يدمج المكونات الأصلية العادية مع مكونات Cordova المعتمدة على الويب (web-based Cordova components)، كما نوقش في تضمين WebViews. وكقاعدة متعارف عليها، استخدم هذا المخطط إذا كنت تريد تعديل المشروع من خلال حزمة تطوير النظام الخاصّة به SDK. هذا CLI مجموعة على مجموعة من سكريبتات المستوى الأدنى التي تم تعديلها لتلائم كل من المنصّات المدعومة. بالإضافة إلى أداة منفصلة (Plugman) تمكّنك من تنصيب الإضافات. بالرغم من أنّه يمكنك استخدام هذا المخطط لإنشاء تطبيقات لمنصّات متعددة، لكن ذلك يتم عادة بصعوبة أكبر، وذلك بسبب أن نقص أدوات المستوى الأعلى يعني دورات بناء منفصلة وتعديلات على الإضافة لكل منصّة. في بداية العمل، من الأسهل البدء باستخدام مخطط العمل متعدد المنصّات لإنشاء التطبيق، يمكننا بعدها الانتقال إلى مخطط العمل المخصص لمنصّة إذا كنت تريد تحكم أوسع يتم تأمينه من قبل حزمة تطوير النظام الخاصة بالتطبيق SDK.
</p>

<blockquote class="ipsQuote" data-ipsquote="">
	<div class="ipsQuote_citation">
		اقتباس
	</div>

	<div class="ipsQuote_contents ipsClearfix">
		<p>
			<strong>ملاحظة:</strong> عندما تنتقل من مخطط العمل المعتمد على موجّه الاوامر CLI-based workflow إلى آخر يركّز على أدوات شيل shell tools وحزم تطوير النظام الخاصّة بمنصّة محددة (platform-specific SDKs) ، فإنّه لا يمكنك التراجع.
		</p>
	</div>
</blockquote>

<p>
	تدير CLI مجموعة شائعة من الشفرات المصدرية متعددة المنصّات، تستخدمها في كل عمليّة بناء للكتابة فوق الشفرة المخصصة لمنصّة واحدة. للحفاظ على أيّة تعديلات قمت بإجرائها على المكونات المخصصة لمنصّة، يتوجب عليك الانتقال إلى استخدام أدوات شيل المخصصة لتلك المنصّة التي تتجاهل الشفرات المصدريّة متعددة المنصّات وتقوم بدلاً عن ذلك بالاعتماد على شفرات مصدريّة مخصصة لمنصّة واحدة.
</p>

<h3 id="تنصيب-cordova">
	تنصيب Cordova
</h3>

<p>
	يختلف تنصيب Cordova بحسب مخطط العمل الذي تختاره.
</p>

<ul>
<li>
		مخطط العمل متعدد المنصّات: (سنتعرّف عليه في الدرس القادم)
	</li>
	<li>
		مخطط العمل المخصص لمنصّة.
	</li>
</ul>
<p>
	بعد تنصيب Cordova, يفضل الاطلاع على قسم (Develop for Platforms) لمنصّات الموبايل التي تطوّر التطبيق من أجلها.
</p>

<p>
	ترجمة -وبتصرّف- للمقال <a href="http://cordova.apache.org/docs/en/latest/guide/overview/index.html" rel="external nofollow">Architectural overview of Cordova platform</a> للمساهمين في كتابة المقال على <a href="https://github.com/apache/cordova-docs/blob/master/www/docs/en/dev/guide/overview/index.md" rel="external nofollow">GitHub</a>
</p>

<hr>
<p>
	هذا المقال منشور تحت الرخصة <a href="http://www.apache.org/licenses/LICENSE-2.0" rel="external nofollow">Apache License, Version 2.0</a>
</p>
]]></description><guid isPermaLink="false">583</guid><pubDate>Mon, 01 Jan 2018 07:09:00 +0000</pubDate></item></channel></rss>
