الفرق بين المراجعتين ل"Cordova/next steps"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: موضوعات متقدمة عن كوردوفا}}</noinclude> تصنيف: Cordova بالنسبة للمطورين الذين لديهم...')
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: موضوعات متقدمة عن كوردوفا}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: موضوعات متقدمة عن كوردوفا}}</noinclude>
[[تصنيف: Cordova]]
+
[[تصنيف: Cordova]]
بالنسبة للمطورين الذين لديهم يفهمون كيفية استخدام [[Cordova/cli|واجهة سطر الأوامر]] الخاصة بكوردوفا وكيفية الاستفادة من الإضافات، فهناك بعض الأشياء التي قد ترغب في تعلمها لأجل إنشاء تطبيقات أفضل وأكثر فاعلية. تقدم الوثيقة التالية نصائح حول عدة مواضيع تتعلق بأفضل الممارسات، وطرق الاختبار والترقية، ومواضيع أخرى، ولكنها غير ملزمة ملزمة. يمكن اعتبارها نقطة انطلاق كمطور نحو مرحلة أكثر تقدمًا. أيضا، إن كنت ترى شيئا يمكن تحسينه، يرجى [http://cordova.apache.org/contribute/ contribute]!
+
بعد أن تفهم كيفية استخدام [[Cordova/cli|واجهة سطر الأوامر]] الخاصة بكوردوفا، وكيفية الاستفادة من الإضافات، فهناك بعض الأشياء التي قد ترغب في تعلمها لأجل إنشاء تطبيقات أفضل وأكثر فاعلية. تقدم الوثيقة التالية نصائح تتمحور حول عدة مواضيع تتعلق بأفضل الممارسات المُتعارف عليها بين المطورين، وطرق الاختبار والترقية، ومواضيع أخرى، ولكنها ليست ملزمة. ويمكن اعتبارها نقطة انطلاق كمطور نحو مرحلة أكثر تقدمًا. إن رأيت خصاصًا أو نقصًا يمكن تحسينه، فأنت مُرحّب بك للمساهمة في موسوعة حسوب.
  
يحتوي هذا الدليل على المواضيع التالية:  
+
يتحث هذا الدليل عن المواضيع التالية:
*أفضل الممارسات  
+
*أفضل الممارسات
* معالجة الترقيات  
+
*إدارة الترقيات
* اختبار تطبيقات كوردوفا  
+
*اختبار تطبيقات كوردوفا
* تصحيح تطبيقات كوردوفا  
+
*تصحيح تطبيقات كوردوفا
*واجهة المستخدم  
+
*واجهة المستخدم
*إعتبارات خاصة  
+
*إعتبارات خاصة
*المواكبة  
+
*المواكبة
*الحصول على المساعدة  
+
*الحصول على المساعدة
  
 +
== أفضل ممارسات التطوير في كوردوفا ==
  
== اعتمد على التطبيقات أحادية الصفحة (SPA) ==  
+
===التطبيقات أحادية الصفحة (SPA)===
 +
من المهم أن تُصمّم تطبيقات كوردوفا خاصتك وفق مقاربة التطبيقات أحادية الصفحة (SPA). وهي تطبيقات من جانب العميل (client-side application) تُشغّل عبر طلبية (request) واحدة من صفحة إلكترونية. حيث يحمِّل المستخدم في البداية مجموعة أولية من الموارد (ملفات [[HTML]] و [[CSS]] و و[[JavaScript|جافاسكريبت]])، أما التحديثات الأخرى (إظهار معرض [view] جديد، وتحميل البيانات...) فتُجرى عبر تقنية أجاكس (AJAX).
  
أولا وقبل كل شيء - يجب أن تُصمّم تطبيقات كوردوفا خاصتك وفق مقاربة التطبيقات أحادية الصفحة (SPA). وهي تطبيقات من جانب العميل (client-side application) تُشغّل من طلبية (request) واحدة من صفحة إلكترونية. يحمِّل المستخدم مجموعة أولية من الموارد (ملفاتHTML و CSS و و[[JavaScript|[[Java|جافا]]اسكريبت]]) ويجراء مزيدًا من التحديثات (إظهار معرض [view] جديد، وتحميل البيانات...) عبر أجاكس (AJAX). تُستخدم مقاربة SPA عادةً لإنشاء تطبيقات معقدة من جانب العميل. GMail هو أحد المثلة الرائعة على ذلك. بعد تحميل GMail، فإنّ استعراض البريد، والتحرير والتنظيم كلها تتم من خلال تحديث الدوم (DOM) بدلاً من مغادرة الصفحة الحالية لتحميل صفحة جديدة تمامًا.  
+
تُستخدم مقاربة SPA عادةً لإنشاء التطبيقات المعقدة من جانب العميل. GMail هو أحد المثلة الرائعة على ذلك. فبعد تحميل GMail، فكل الوظائف التي يقدمها للمستخدم (استعراض البريد، التحرير، والتنظيم...) تتم من خلال تحديث الدوم (DOM) بدلاً من مغادرة الصفحة الحالية لتحميل صفحة جديدة.
  
يمكن أن تساعدك مقاربة SPA على تنظيم تطبيقك بطريقة أكثر كفاءة، ولكن لها أيضًا بعض الفوائد لتطبيقات كوردوفا. يجب أن ينتظر تطبيق كوردوفا إطلاق الحدث [../../cordova/events/events.html#deviceready deviceready] قبل استخدام أي إضافات. إن لم تستخدم SPA، وقام المستخدم بالنقر للانتقال من صفحة إلى أخرى، فسيتعين عليك الانتظار حتى يتم يُفعّل الحدث [../../cordova/events/events.html#deviceready deviceready] مرة أخرى قبل استخدام الإضافات.  
+
يمكن أن تساعدك مقاربة SPA على تنظيم تطبيقك بطريقة أكثر كفاءة، ولكن لها أيضًا بعض الفوائد الخاصة لتطبيقات كوردوفا. فمثلًا، يجب على تطبيقات كوردوفا أن تنتظر إطلاق الحدث <code>[https://cordova.apache.org/docs/en/latest/cordova/events/events.html#deviceready deviceready]</code> قبل استخدام أي إضافة. لذلك إن لم تستخدم SPA، وقام المستخدم بالنقر للانتقال من صفحة إلى أخرى، فسيتعين عليك الانتظار حتى يُفعّل الحدث<code>[https://cordova.apache.org/docs/en/latest/cordova/events/events.html#deviceready deviceready]</code> مرة أخرى قبل أن تستطيع استخدام الإضافات.
  
حتى لو لم تكن تستخدم كوردوفا، فإنشاء تطبيق هاتفي بدون استخدام المقاربة أحادية الصفحة سيضر بأداء تطبيقك. وذلك لأن التنقل بين الصفحات سيتطلب إعادة تحميل النصوص البرمجية والأصول (assets) وغير ذلك. وحتى في حال تخزين تلك الأصول مؤقتًا، فستظل هناك بعض المشكلات المتعلقة بالأداء.  
+
حتى لو لم تكن تستخدم كوردوفا، فإنشاء تطبيق هاتفي بدون استخدام المقاربة أحادية الصفحة سيضر بأداء تطبيقك. ذلك لأن التنقل بين الصفحات يتطلب إعادة تحميل النصوص البرمجية والأصول (assets) وغير ذلك. وحتى في حال تخزين تلك الأصول مؤقتًا، فهذا لن يحل كل المشكلات المتعلقة بالأداء.
  
إليك بعض الأمثلة عن مكتبات SPA التي يمكنك استخدامها في تطبيقات كوردوفا:  
+
إليك بعض الأمثلة عن مكتبات SPA التي يمكنك استخدامها في تطبيقات كوردوفا:
[http://angularjs.org AngularJS]  
+
* [http://angularjs.org/ AngularJS]
[http://emberjs.com EmberJS]  
+
* [http://emberjs.com/ EmberJS]
[http://backbonejs.org Backbone]  
+
* [http://backbonejs.org/ Backbone]
[http://www.telerik.com/kendo-ui Kendo UI]
+
* [http://www.telerik.com/kendo-ui Kendo UI]
[http://monaca.mobi/en/ Monaca]
 
[http://facebook.github.io/react/ ReactJS]
 
[http://www.sencha.com/products/touch/ Sencha Touch]
 
[http://jquerymobile.com jQuery Mobile]  
 
  
وغيرها كثير.  
+
* [http://monaca.mobi/en/ Monaca]
 +
* [http://facebook.github.io/react/ ReactJS]
 +
* [http://www.sencha.com/products/touch/ Sencha Touch]
 +
* [http://jquerymobile.com/ jQuery Mobile]
 +
وغيرها كثير.
 +
===اعتبارات متعلقة بالأداء===
 +
في هذه الفقرة، سنتكلم عن بعض الأساليب المُتبعة لتحسين أداء تطبيقاتك:
  
== 2) اعتبارات متعلقة بالأداء ==  
+
==== النقر مقابل اللمس (Click versus Touch) ====
 +
أكبر خطأ يمكن أن ترتكبه هو استخدام أحداث النقر (click events). فعلى الرغم من أن هذا الأمر قد يعمل بشكل جيد على الهواتف، فإن معظم الأجهزة تفرض تاخيرُا على النقرات بـ 300 ميليثانية (300ms) للتمييز بين الحدث <code>touch</code> والحدث <code>hold</code>.
  
في هذه الفقرة سنتكلم عن بعض الأساليب المفيدة في تحسين أداء تطبيقاتك:  
+
استخدام <code>touchstart</code>، أو <code>touchend</code>، سيؤدي إلى تحسّن كبير في الأداء - قد لا تبدوا 300 ميليثانية بالشيء الخطير، ولكن يمكن أن تؤدي إلى تحديثات كثيرة في واجهة المستخدم (UI). يجب أيضًا مراعاة حقيقة أن الأحداث "touch" غير مدعومة في المتصفحات التي لا تدعم webkit، راجع الصفحة [http://caniuse.com/#search=touch CanIUse] لمعرفة المزيد.
  
'''Click versus Touch''' - أكبر وأبسط خطأ يمكن أن تفعله هو استخدام أحداث النقر (click events). في حين أن هذا الأمر يعمل بشكل جيد على الهواتف، فإن معظم الأجهزة تفرض تاخيرُا على النقرات بـ 300 ميليثانية (300ms) للتمييز بين الحدث touch والحدث hold. استخدام <code>touchstart</code>، أو <code>touchend</code>، سيؤدي إلى تحسن كبير - قد لا تبدوا 300 ميليثانية بالشيء الخطير، ولكن يمكن أن تؤدي إلى تحديثات كثيرة في واجهة المستخدم (UI). يجب أيضًا مراعاة حقيقة أن الأحداث "touch" غير مدعومة في المتصفحات التي لا تدعم متصفحات webkit، راجع الصفحة [http://caniuse.com/#search=touch CanIUse]. لتجاوز هذه القيود، يمكنك استخدام بعض المكتبات مثل HandJS و Fastclick.  
+
لتجاوز هذه القيود، يمكنك استخدام بعض المكتبات مثل <code>HandJS</code> و <code>Fastclick</code>.
  
'''CSS Transitions versus DOM Manipulation''' - استخدام تحويلات CSS المُسرّعة للأجهزة (hardware accelerated CSS transitions) أفضل بشكل كبير من استخدام [[JavaScript|[[Java|جافا]]اسكريبت]] لإنشاء الرسوميات (animations). انظر في قائمة الموارد في نهاية هذا القسم لتحصل على أمثلة.  
+
==== تحويلات CSS مقابل تداول الدوم (CSS Transitions versus DOM Manipulation) ====
 +
استخدام تحويلات CSS المُسرّعة (accelerated CSS transitions) للأجهزة أفضل بكثير من استخدام [[JavaScript|جافاسكريبت]] لإنشاء الرسوميات (animations). انظر في قائمة الموارد في نهاية هذا القسم للحصول على أمثلة.
  
'''Networks Suck''' - الشبكات ليست سيئة دائمًا، ولكن زمن الانتظار الخاص بشبكات الجوّال، مهما كانت جيدة، أسوأ بكثير مما تعتقد. فتطبيق على سطح المكتب يعمل على إفراغ 500 صف من بيانات JSON، كل 30 ثانية، سيكون بطيئا على جهاز الجوّال، كما سيستنزف البطارية. ضع في اعتبارك أن لتطبيقات كوردوفا عدة طرق لحفظ البيانات في التطبيق (مثل التخزين المحلي [LocalStorage] ونظام الملفات [file system]). استخدم ذاكرة التخزين المؤقت لحفظ البيانات محليا، ولكن انتبه لكمية البيانات التي ترسلها ذهابا وإيابا. خصوصًا إن كان تطبيقك متصلًا بشبكة خلوية.  
+
==== بطؤ الشبكة (Networks Suck) ====
 +
قد لا تكون الشبكات سيئة دائمًا، ولكن زمن الانتظار في شبكات الجوّال، مهما كانت جيدة، أسوأ بكثير مما تعتقد. فتطبيق على سطح المكتب يعمل على إفراغ 500 صف من بيانات JSON كل 30 ثانية، سيكون بطيئا جدًّا على جهاز الجوّال، كما سيستنزف البطارية. ضع في اعتبارك أن لتطبيقات كوردوفا عدة طرق لحفظ البيانات في التطبيق (مثل [[Cordova/storage#.D8.A7.D9.84.D8.AA.D8.AE.D8.B2.D9.8A.D9.86 .D8.A7.D9.84.D9.85.D8.AD.D9.84.D9.8A .28LocalStorage.29|التخزين المحلي]] والواجهة البرمجية [[Cordova/storage#FileSystem API|FileSystem]]). استخدم ذاكرة التخزين المؤقت لحفظ البيانات محليا، ولكن انتبه لكمية البيانات التي ترسلها ذهابا وإيابا. خصوصًا إن كان تطبيقك متصلًا بشبكة خلوية.
  
'''Additional Performance Articles and Resources'''
+
==== مقالات ومصادر إضافية ====
[http://sintaxi.com/you-half-assed-it "You half assed it"]  
+
* [http://sintaxi.com/you-half-assed-it "You half assed it"]
[http://coenraets.org/blog/2013/10/top-10-performance-techniques-for-phonegap-and-hybrid-apps-slides-available/ "Top Ten Performance Tips for PhoneGap and Hybrid Apps"]  
+
* [http://coenraets.org/blog/2013/10/top-10-performance-techniques-for-phonegap-and-hybrid-apps-slides-available/ "Top Ten Performance Tips for PhoneGap and Hybrid Apps"]
[https://channel9.msdn.com/Events/Build/2013/4-313 "Fast Apps and Sites with JavaScript"]  
+
* [https://channel9.msdn.com/Events/Build/2013/4-313 "Fast Apps and Sites with JavaScript"]
  
== 3) رصد انقطاع الاتصال (Offline) والتعامل معه ==  
+
===رصد انقطاع الاتصال (Offline) والتعامل معه===
 +
قد لا يكون تطبيقك على شبكة بطيئة وحسب، بل من الممكن أن يكون منقطعًا بالكامل عن الشبكة. يجب أن يتعامل طلبك مع هذا الوضع بطريقة ذكية وصحيحة. أو قد يعتقد الناس أن تطبيقك معطل. نظرًا لسهولة التعامل مع هذا (كوردوفا توفر أحداثًا ترصد حالة الاتصال [online] أو انقطاع الاتصال [offline] بشبكة الإنترنت)، لذلك لا يوجد أي سبب على الإطلاق لئلًا يتجاوب تطبيقك بالشكل الصحيح عند انقطاع الاتصال. تأكد من اختبار (راجع قسم الاختبار أدناه) تطبيقك وتأكد من اختبار كيفية يتعامل تطبيقك مع الحالات التي يبدء فيها من حالة ثم ينتقل إلى أخرى.
  
قد لا يكون تطبيقك على شبكة بطيئة وحسب، بل من الممكن أن يكون منقطعًا بالكامل عن الشبكة. يجب أن يتعامل طلبك مع هذا الوضع بطريقة ذكية وصحيحة. أو قد يعتقد الناس أن تطبيقك معطل. نظرًا لسهولة التعامل مع هذا (كوردوفا توفر أحداثًا ترصد حالة الاتصال [online] أو انقطاع الاتصال [offline] بشبكة الإنترنت)، لذلك لا يوجد أي سبب على الإطلاق لئلًا يتجاوب تطبيقك بالشكل الصحيح عند انقطاع الاتصال. تأكد من اختبار (راجع قسم الاختبار أدناه) تطبيقك وتأكد من اختبار كيفية يتعامل تطبيقك مع الحالات التي يبدء فيها من حالة ثم ينتقل إلى أخرى.  
+
لاحظ أن الحدثين online و offline، وكذلك الواجهة البرمجية للاتصال بالشبكة (Network Connection API) ليست مثالية. قد تحتاج إلى استخدام طلبية XHR للتحقق مما إن كان الجهاز متصلًا أو منقطعًا عن الإنترنت. حاول أيضًا إضافة بعض أشكال الدعم للمسائل المتعلق بالشبكة - في الواقع، متجر Apple (وربما متاجر أخرى) سيرفض التطبيقات التي لا تعالج بشكل صحيح حالات الاتصال/الانقطاع عن الشبكة. لمزيد من المناقشات حول هذا الموضوع، راجع صفحة [http://blogs.telerik.com/appbuilder/posts/13-04-23/is-this-thing-on-%28part-1%29 "Is This Thing On?"]
  
لاحظ أن الحدثين online و offline، وكذلك الواجهة البرمجية للاتصال بالشبكة (Network Connection API) ليست مثالية. قد تحتاج إلى استخدام طلبية XHR للتحقق مما إن كان الجهاز متصلًا أو منقطعًا عن الإنترنت. حاول أيضًا إضافة بعض أشكال الدعم للمسائل المتعلق بالشبكة - في الواقع، متجر Apple (وربما متاجر أخرى) سيرفض التطبيقات التي لا تعالج بشكل صحيح حالات الاتصال/الانقطاع عن الشبكة. لمزيد من المناقشات حول هذا الموضوع، راجع صفحة [http://blogs.telerik.com/appbuilder/posts/13-04-23/is-this-thing-on-%28part-1%29 "Is This Thing On?"]
+
==ترقية مشاريع كوردوفا==
 +
إن أنشأت مشروعك الحالي باستخدام كوردوفا ‎3.x‎، فيمكنك ترقية المشروع من خلال تنفيذ الأمر التالي:<syntaxhighlight lang="console">cordova platform update platform-name ios, android, etc.‎</syntaxhighlight>أما إن كنت قد أنشأت مشروعك الحالي باستخدام إصدار سابق لكوردوفا 3.x، فمن الأفضل إنشاء مشروع جديد بالإصدار كوردوفا 3.x، ثم نسخ الشيفرة البرمجية لمشروعك الحالي وأصولِه إلى المشروع الجديد. عبر الخطوات التالية:
 +
*أنشئ مشروعًا جديدًا باستخدام كوردوفا ‎3.x
 +
*انسخ المجلد www من مشروعك القديم نحو المشروع الجديد
 +
*انسخ إعدادات المشروع القديم إلى المشروع الجديد
 +
*أضف كل الإضافات المستخدمة في المشروع القديم إلى المشروع الجديد
 +
*قم ببناء مشروعك
 +
*اختبر، واختبر، واختبر!
 +
بغض النظر عن الإصدار السابق للمشروع، فمن الضروري أن تنتبه إلى ما تم تغييره في الإصدار المحدث، لأن التحديث قد يكسر شيفرتك البرمجية. أفضل مكان للعثور على هذه المعلومات سيكون في ملاحظات الإصدار المنشورة في المستودعات وعلى مدونة كوردوفا. سيكون عليك اختبار تطبيقك للتحقق من أنه يعمل بشكل صحيح بعد إجراء التحديث.
  
 +
ملاحظة: قد لا تتوافق بعض الإضافات مع الإصدار الجديد من كوردوفا. إذا لم تكن الإضافة متوافقةً مع إصدار كوردوفا الجديد، فربما تعثر على إضافةٍ بديلةٍ تؤدي العمل الذي تحتاجه، وإلا فربما عليك تأخير ترقية المشروع. أو يمكنك تعديل الإضافة بحيث تعمل ضمن الإصدار الجديد، وتساعد المطورين الآخرين.
 +
==ترقية الإضافات==
 +
لا توجد حاليًا آلية لترقية الإضافات التي تم تغييرها باستخدام أمر واحد. بدلاً من ذلك، أزل الإضافة وأعد إضافتها إلى مشروعك، وسيُثبّت الإصدار الجديد:<syntaxhighlight lang="console">cordova plugin rm "some-plugin"
 +
cordova plugin add "some-plugin"‎</syntaxhighlight>ارجع إلى صفحة [../../platform_plugin_versioning_ref/index.html Manage versions and platforms] لمزيد من التفاصيل.
  
== ترقية مشاريع كوردوفا ==
+
تأكد من مراجعة توثيق الإضافة المحدّثة، حيث قد تحتاج إلى تعديل شيفرتك لتعمل مع الإصدار الجديد. تأكد أيضًا من أن الإصدار الجديد من الإضافة يعمل دون مشاكل مع إصدار مشروع كوردوفا خاصتك.
  
إن أنشأت مشروعك الحالي باستخدام كوردوفا ‎3.x‎، فيمكنك ترقية المشروع من خلال تنفيذ الأمر التالي:
+
اختبر تطبيقاتك على الدوام للتأكد من أن تثبيت الإضافة الجديدة لم يؤدي إلى كسر أو تعطيل شيء ما.
<syntaxhighlight lang="console">cordova platform update platform-name ios, android, etc.‎</syntaxhighlight>
 
  
أما إن كنت قد أنشأت مشروعك الحالي باستخدام إصدار سابق لكوردوفا 3.x، فمن الأفضل إنشاء مشروع جديد بالإصدار كوردوفا 3.x، ثم نسخ الشيفرة البرمجية لمشروعك الحالي وأصولِه إلى المشروع الجديد. عبر الخطوات التالية:
+
إن كان مشروعك يحتوي على الكثير من الإضافات التي تحتاج إلى تحديثها، فيمكنك ربح الوقت بإنشاء نص برمجي shell أو رُقعة (batch script) تضيف وتزيل الإضافات عبر أمرِ واحدِ فقط.
* أنشئ مشروعًا جديدًا باستخدام كوردوفا ‎3.x
 
* انسخ المجلد www من مشروعك القديم نحو المشروع الجديد
 
* انسخ إعدادات المشروع القديم إلى المشروع الجديد
 
* أضف كل الإضافات المستخدمة في المشروع القديم إلى المشروع الجديد
 
* قم ببناء مشروعك
 
* اختبر، واختبر، واختبر!
 
  
بغض النظر عن الإصدار السابق للمشروع، فمن الضروري أن تنتبه إلى ما تم تغييره في الإصدار المحدث، لأن التحديث قد يكسر شيفرتك البرمجية. أفضل مكان للعثور على هذه المعلومات سيكون في ملاحظات الإصدار المنشورة في المستودعات وعلى مدونة كوردوفا. سيكون عليك اختبار تطبيقك للتحقق من أنه يعمل بشكل صحيح بعد إجراء التحديث.  
+
يعد اختبار تطبيقاتك أمرًا بالغ الأهمية. يستخدم فريق كوردوفا أداة Jasmine، ولكن يمكنك استخدام ما يناسبك من حلول الاختبار.
 +
==الاختبار على محاكي والاختبار على جهاز حقيقي==
 +
من الشائع استخدام متصفحات سطح المكتب ومحاكيات الأجهزة عند تطوير تطبيقات كوردوفا. ومع ذلك، فمن المهم أن تختبر تطبيقك على أكبر عدد ممكن من الأجهزة الفعلية:
 +
*فالمحاكيات تبقى مجرد محاكيات. على سبيل المثال، قد يعمل تطبيقك في محاكي iOS بدون مشاكل، ولكنه قد يفشل على جهاز حقيقي (خاصة في ظروف معينة، مثل حالة انحسار الذاكرة). أو قد يفشل تطبيقك في المحاكي بينما يعمل بشكل جيد على جهاز حقيقي.
 +
*المحاكيات هي مجرد محاكيات. لا تمثل مدى جودة تشغيل تطبيقك على جهاز فعلي. على سبيل المثال، قد تعرض بعض المحاكيات تطبيقك بطريقة مشوهة، في حين أن الجهاز الحقيقي سيعرضه بشكل طبيعي. (إذا واجهت هذه المشكلة، قم بتعطيل المضيف GPU في المحاكي.)
 +
*المحاكيات (Simulators) أسرع بشكل عام من الجهاز المادي. على خلا المشاكلات (Emulators) التي تكون أبطأ بشكل عام. لا تحكم على أداء تطبيقك من أدائه على المُحاكي أو المُشاكل. ولكن احكم على أداء تطبيقك من خلال تشغيله على مجموعة من الأجهزة الحقيقية.
 +
*من المستحيل الحصول على فكرة جيدة عن كيفية استجابة تطبيقك للّمس عن طريق استخدام المُحاكيات أو المُشاكلات. بدلاً من ذلك، تشغيل التطبيق على جهاز حقيقي سيكشف عن المشكلات المتعلقة بأحجام عناصر واجهة المستخدم، والاستجابة، وما إلى ذلك.
 +
*على الرغم من أنه سيكون من الجيد أن تكون قادراً على الاختبار على جهاز واحد فقط لكل منصة، فمن الأفضل اختبار العديد من الأجهزة بمُختَلَف المنصات التي تدعمها. على سبيل المثال، ما قد ينجح على هاتف أندرويد معيّن قد يفشل على جهاز أندرويد آخر. وما قد يعمل على جهاز iOS 7 قد يفشل على جهاز iOS 6.
 +
بالطبع، من المستحيل اختبار كل الأجهزة الموجودة في السوق. لهذا السبب، قد يكون من الحكمة توظيف عدة أشخاص يملكون أجهزة مختلفة للاختبار. على الرغم من أنهم لن يكشفوا كل المشاكل الممكنة، إلا أنهم على الأرجح سيكتشفون ثغرات ومشاكل لن يكون بمقدورك إيجادها لوحدك.
  
ملاحظة: قد لا تتوافق بعض الإضافات مع الإصدار الجديد من كوردوفا. إذا لم تكن الإضافة متوافقةً مع إصدار كوردوفا الجديد، فربما تعثر على إضافةٍ بديلةٍ تؤدي العمل الذي تحتاجه، وإلا فربما عليك تأخير ترقية المشروع. أو يمكنك تعديل الإضافة بحيث تعمل ضمن الإصدار الجديد، وتساعد المطورين الآخرين.  
+
نصيحة: على أجهزة Android Nexus، يمكن تثبيت عدة إصدارات مختلفة من أندرويد بسهولة على الجهاز. ستتيح لك هذه العملية البسيطة اختبار تطبيقك بسهولة على مستويات مختلفة من أندرويد باستخدام جهاز واحد، وستعفيك من شراء عدد كبير من الأجهزة الضمان أو اختراق (jailbreak) جهازك. للمزيد من التفاصيل ارجع إلى الصفحة [https://developers.google.com/android/nexus/images#instructions Google Android factory images and instructions].
  
== ترقية الإضافات ==  
+
يتطلب التصحيح في (Debugging) كوردوفا بعض الإعدادات. فعلى عكس تطبيقات سطح المكتب، لا يمكنك ببساطة فتح أدوات المطورين على جهازك المحمول وبدء التصحيح، لحسن الحظ هناك بعض البدائل الممتازة.
 +
==تصحيح تطبيقات iOS==
 +
===Xcode===
 +
يمكنك عبر Xcode تصحيح الجانب الأصلي (native side) لمنصة iOS من تطبيقات كوردوفا. تحقق من أنّ إظهار منطقة التصحيح ‎(View -> Debug Area)‎. بمجرد تشغيل التطبيق على الجهاز (أو المُحاكي)، فيمكنك مطالعة مُخرجات السجل (log output) في منطقة التصحيح. فذلك هو المكان الذي ستُطبع فيه الأخطاء والتنبيهات. يمكنك أيضًا وضع نقاط توقف (breakpoints) داخل الملفات المصدرية. هذا سيسمح لك بالمرور عبر الشيفرة البرمجية سطرًا سطرًا، واستعراض حالة المتغيرات في كل خطوة. يتم إظهار حالة المتغيرات في منطقة التصحيح عند كل نقطة توقف. بمجرد تشغيل تطبيقك على الجهاز، يمكنك إظهار مفتش Safari - ‏Safari's web inspector‏ - (كما هو موضح أدناه) لتصحيح [[Cordova/webviews|المعرض]] وملفات [[JavaScript|جافااسكريبت]] الخاصة بالتطبيق. لمزيد من التفاصيل، راجع توثيق [https://developer.apple.com/support/debugging/ Apple Support].
 +
===التصحيح عند بًُعد عبر مفتش سافاري===
 +
باستخدام مفتش Safari ‏(Safari's web inspector‏)‏، يمكنك تصحيح طريقة [[Cordova/webviews|المعرض]] و ملفات [[JavaScript|جافااسكريبت]] الخاصة بتطبيقك. هذه الأداة تعمل فقط على منصات OSX، ابتداءً من iOS 6. إذ يستخدم متصفح Safari للاتصال بجهازك (أو المحاكي) وسيقوم بين أدوات المطورين الخاصة بالمتصفح وبين تطبيق كوردوفا. هكذا يمكنك الاستفادة من أدوات التطوير - فحص/ومعالجة الدوم DOM، تصحيح أخطاء [[JavaScript|جافااسكريبت]]، فحص الشبكة، وحدة التحكم والمزيد. مثل Xcode، يُمكِّنك مفتش Safari من تعيين نقاط توقف في شيفرة [[JavaScript|جافااسكريبت]]، وعرض حالة المتغيرات عند تلك النقاط. يمكنك الاطلاع على الأخطاء والتنبيهات والرسائل المطبوعة على وحدة التحكم. يمكنك أيضًا تشغيل أوامر [[JavaScript|جافااسكريبت]] مباشرة من وحدة التحكم أثناء تشغيل التطبيق. لمزيد من التفاصيل حول كيفية إعداد مفتش Safari وما يمكنك فعله به، راجع الصفحتين [http://moduscreate.com/enable-remote-web-inspector-in-ios-6/ Enabling Remote Web Inspector in iOS 6] و [https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/Introduction/Introduction.html Safari Web Inspector Guide].
 +
==التصحيح عن بعد عبر كروم==
 +
مثل Safari، يعمل كروم مع أندرويد فقط، ولكن يمكن استخدامه من أي منصة مكتبية. فهو يتطلب على الأقل الإصدار Android 4.4 (KitKat)‎، والمستوى 19 من واجهة برمجة التطبيقات (API)، و Chrome 30+‎ (على سطح المكتب). بمجرد ربط الاتصال، ستحصل على نفس أدوات المطورين (Chrome Dev) لأجل تطبيقات الجوال كما تفعل مع تطبيقات سطح المكتب. والأفضل من ذلك، أن أدوات Chrome Dev تعطيك خيار المرآة، والذي يعرض تطبيقك على محاكي جهاز هاتفي. ولكنه أكثر من مجرد عرض - إذ يمكنك التمرير والنقر من أدوات التطوير، وسترى التحديثات على جهاز الهاتف. يمكن الاطلاع على مزيد من التفاصيل حول التصحيح عن بُعد عبر Chrome من هنا: https://developers.google.com/chrome/mobile/docs/debugging
  
لا توجد حاليًا آلية لترقية الإضافات التي تم تغييرها باستخدام أمر واحد. بدلاً من ذلك، أزل الإضافة وأعد إضافتها إلى مشروعك، وسيُثبّت الإصدار الجديد:  
+
إن كان بإمكانك رؤية جهازك في قسم فحص الأجهزة (inspect devices section)، ولكن لم تستطتع مشاهدة [[Cordova/webviews|معرض]] كوردوفا، فقد تحتاج إلى إضافة <code>android:debuggable="true"</code> في العقدة <code><application></code> في الملف <code>AndroidManifest.xml</code>.
<syntaxhighlight lang="console">cordova plugin rm "some-plugin"
 
cordova plugin add "some-plugin"‎</syntaxhighlight>  
 
  
ارجع إلى صفحة [../../platform_plugin_versioning_ref/index.html Manage versions and platforms] لمزيد من التفاصيل.  
+
من الممكن استخدام أدوات Chrome Dev لفحص تطبيقات iOS، من خلال خادم WebKit وسيط (WebKit proxy)‏: https://github.com/google/ios-webkit-debug-proxy/
 +
==Ripple==
 +
Ripple هو مُشاكل (emulator) لمشاريع كوردوفا يعمل على سطح المكتب. حيث يتيح لك تشغيل تطبيق كوردوفا على سطح المكتب، وإنشاء (اختلاق) العديد من ميزات كوردوفا. على سبيل المثال، يتيح لك محاكاة مقياس التسارع (accelerometer) لاختبار أحداث الاهتزاز (shake events). حيث يقوم بتزييف الواجهة البرمجية للكاميرا من خلال السماح لك بتحديد صورة من القرص الصلب. يساعدك Ripple على التركيز أكثر على شيفرتك البرمجية بدلاً من القلق بشأن إضافات كوردوفا. يمكنك معرفة المزيد عن Ripple من هنا: http://ripple.incubator.apache.org/
 +
==Weinre==
 +
ينشئ Weinre خادمًا محليًا يمكنه استضافة عميل تصحيح (debug client) يعمل عن بًعد لاستخدامه مع تطبيقات كوردوفا. بعد تثبيته وتشغيله، يمكنك نسخ سطر من الشيفرة البرمجية إلى تطبيق كوردوفا ثم إعادة تشغيله. يمكنك بعد ذلك فتح لوحة أدوات التطوير على سطح المكتب لبدء العمل على التطبيق. قد لا يبدو Weinre بنفس أناقة مُصحِّحَي Chrome و Safari Remote، ولكنه يتميز بالقدرة على العمل مع مجموعة أكبر بكثير من أنظمة التشغيل والمنصات. يمكن الاطلاع على مزيد من المعلومات هنا: http://people.apache.org/~pmuellr/weinre/docs/latest/
 +
==خيارات أخرى==
 +
*لمزيد من الأمثلة والشروحات حول نصائح التصحيح أعلاه، راجع الصفحة: http://developer.telerik.com/featured/a-concise-guide-to-remote-debugging-on-ios-android-and-windows-phone/
  
تأكد من مراجعة توثيق الإضافة المحدّثة، حيث قد تحتاج إلى تعديل شيفرتك لتعمل مع الإصدار الجديد. تأكد أيضًا من أن الإصدار الجديد من الإضافة يعمل دون مشاكل مع إصدار مشروع كوردوفا خاصتك.  
+
ليس من السهل بناء تطبيقات جميلة وأنيقة بكوردوفا، خاصة على المطورين. العديد من الناس يختارون استخدام إطار لواجهة المستخدمين (UI framework) لتسهيل ذلك. فيما يلي قائمة مختصرة بالخيارات الممكنة:
 +
*[http://jquerymobile.com/ jQuery Mobile] - يعمل jQuery Mobile تلقائيًا على تحسين تخطيطك (layout) ليمنحك أداءً أفضل على الهاتف. كما أنه يتولى إنشاء تطبيقات الصفحة الأحادية (SPA) تلقائيا.
 +
*[http://ionicframework.com/ ionic] - يملك هذا الإطار المُتميّز واجهة سطر أوامر خاصة به لمعالجة إنشاء المشاريع.
 +
*[http://goratchet.com/ Ratchet] - مُطوّر من قبل نفس الأشخاص الذين طوروا Bootstrap.
 +
*[http://www.telerik.com/kendo-ui Kendo UI] - واجهة مستخدم وإطار تطبيقات مفتوح المصدر من Telerik.
 +
[http://topcoat.io/ Topcoat] [http://facebook.github.io/react/ ReactJS]
  
اختبر تطبيقاتك على الدوام للتأكد من أن تثبيت الإضافة الجديدة لم يؤدي إلى كسر أو تعطيل شيء ما.  
+
عند بناء واجهة المستخدم، من المهم التفكير في جميع المنصات التي تستهدفها، وفي توقعات المستخدمين على كل منصة. على سبيل المثال، تطبيقات أندرويد التي تعتمد واجهة مستخدم على شاكلة نمط المنصة iOS، قد لا تتناسب مع مستخدمي أندرويد. يتم فرض نمط واجهة المستخدم في بعض الأحيان من قبل مخازن التطبيقات (application stores). ولهذا السبب، من المهم أن تحترم خصوصيات كل منصة، وأن تكون على دراية بمختلف إرشادات واجهات المستخدمين لتلك المنصات: [https://developer.apple.com/library/ios/documentation/userexperience/conceptual/MobileHIG/index.html iOS] [http://developer.android.com/design/index.html Android] [https://dev.windows.com/en-us/design Windows Phone]
 +
==مقالات ومصادر إضافية عن واجهة المستخدم==
 +
على الرغم من أن معايير المتصفحات أصبحت أكثر وأكثر اتساقا، فلا نزال مضطرين أحيانًا للتعامل مع بعض المعايير المخصوصة بكل متصفح على حدة (عبر البادئات المُزعجة webkit- و ‎-ms.) المقالة التالية مهمة لمن يريد تطوير واجهة مستخدمين لتطبيقات عابرة للمنصات (cross browser): http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10.aspx
  
إن كان مشروعك يحتوي على الكثير من الإضافات التي تحتاج إلى تحديثها، فيمكنك ربح الوقت بإنشاء نص برمجي shell أو رُقعة (batch script) تضيف وتزيل الإضافات عبر أمرِ واحدِ فقط.  
+
على الرغم من أن كوردوفا تسهّل عملية التطوير العابر للمنصات، فلا تتوقع أبدًا أن تعزلك بشكل كامل عن المنصة الأصلية. لذلك يجب أن تكون على وعي بالقيود الموجودة.
 +
==تحميل المحتوى عن بُعد==
 +
استدعاء دوال [[JavaScript|جافااسكريبت]] (في كوردوفا) من صفحة HTML محملة عن بُعد (أي صفحة HTML غير مُخزّنة محليًا على الجهاز) ليس مدعومًا. هذا لأن كوردوفا لم تُصمّم لأجل ذلك، ولم يقم مجتمع كوردوفا باختبار هذا الإعداد. في حين أنه قد يعمل في بعض الظروف، إلا أنه غير موصى به وغير مدعوم. هناك تحديات من هذه السياسة، وهو الحفاظ على التزامن بين إصداري الأجزاء المكتوبة بلغة [[JavaScript|جافااسكريبت]] والأجزاء الأصلية من كوردوفا (نظرًا لأنها موصولة بواجهات برمجيي خاصة قابلة للتغيير)، إضافة إلى موثوقية المحتويات البعيدة التي تستدعي دوال محلية أصلية (native local functions)، وكذلك احتمال الرفض من متجر التطبيقات.
  
 +
عرض محتويات HTML المُحمّلة عن بعد في [[Cordova/webviews|معرض]] يجب أن يحدث باستخدام InAppBrowser. صُمِّم InAppBrowser بحيث يمنع شيفرات [[JavaScript|جافااسكريبت]] المُنفّدة في تلك المحتويات الخارية من الوصول إلى الواجهة البرمجية لتطبيقات [[JavaScript|جافااسكريبت]]-كوردوفا للأسباب المذكورة أعلاه. يرجى الرجوع إلى الدليل [../appdev/security/index.html Security Guide].
  
يعد اختبار تطبيقاتك أمرًا بالغ الأهمية. يستخدم فريق كوردوفا أداة Jasmine، ولكن يمكنك استخدام ما يناسبك من حلول الاختبار.  
+
فيما يلي بعض الطرق لمواكبة مستجدات كوردوفا.
 +
*اشترك في [http://cordova.apache.org/#news Cordova blog].
 +
*اشترك في [http://cordova.apache.org/#mailing-list developer list]. ملاحظة - هذه ليست مجموعة دعم! ولكنه المكان الذي تتم فيه مناقشة كل ما يتعلق بتطوير كوردوفا.
  
== الاختبار على محاكي والاختبار على جهاز حقيقي ==
+
الروابط التالية هي أفضل الأماكن التي يمكن أن تحصل منها على المساعدة حول كل ما يتعلق بكوردوفا:
 
+
*StackOverflow: http://stackoverflow.com/questions/tagged/cordova باستخدام الوسم Cordova، يمكنك استعراض وتصفح جميع الأسئلة المتعلقة بكوردوفا. لاحظ أن StackOverflow يحوّل تلقائيًا الوسم"Phonegap" إلى الوسم "Cordova"، وبذلك ستتمكن من الوصول إلى الأسئلة القديمة أيضًا
من الشائع استخدام متصفحات سطح المكتب ومحاكيات الأجهزة عند تطوير تطبيقات كوردوفا. ومع ذلك، فمن المهم أن تختبر تطبيقك على أكبر عدد ممكن من الأجهزة الفعلية:
+
*PhoneGap Google Group: https://groups.google.com/forum/#!forum/phonegap مجموعة جوجل هذه كانت منتدى الدعم القديم لمّا كانت كوردوفا لا تزال تسمى PhoneGap صحيح أنه لا يزال هناك الكثير من مستخدمي كوردوفا الذين يترددون على هذه المجموعة، إلا أنّ مجتمع كوردوفا قد أعرب عن اهتمامه بالتركيز بشكل أكبر على استخدام StackOverflow للحصول على الدعم
* فالمحاكيات تبقى مجرد محاكيات. على سبيل المثال، قد يعمل تطبيقك في محاكي iOS بدون مشاكل، ولكنه قد يفشل على جهاز حقيقي (خاصة في ظروف معينة، مثل حالة انحسار الذاكرة). أو قد يفشل تطبيقك في المحاكي بينما يعمل بشكل جيد على جهاز حقيقي.
+
*الملتقيات: [http://phonegap.meetup.com/ http://phonegap.meetup.com] - حاول العثور على مجموعات الملتقيات المحلية لكوردوفا أو PhoneGap.
* المحاكيات هي مجرد محاكيات. لا تمثل مدى جودة تشغيل تطبيقك على جهاز فعلي. على سبيل المثال، قد تعرض بعض المحاكيات تطبيقك بطريقة مشوهة، في حين أن الجهاز الحقيقي سيعرضه بشكل طبيعي. (إذا واجهت هذه المشكلة، قم بتعطيل المضيف GPU في المحاكي.)
 
* المحاكيات (Simulators) أسرع بشكل عام من الجهاز المادي. على خلا المشاكلات (Emulators) التي تكون أبطأ بشكل عام. لا تحكم على أداء تطبيقك من أدائه على المُحاكي أو المُشاكل. ولكن احكم على أداء تطبيقك من خلال تشغيله على مجموعة من الأجهزة الحقيقية.
 
* من المستحيل الحصول على فكرة جيدة عن كيفية استجابة تطبيقك للّمس عن طريق استخدام المُحاكيات أو المُشاكلات. بدلاً من ذلك، تشغيل التطبيق على جهاز حقيقي سيكشف عن المشكلات المتعلقة بأحجام عناصر واجهة المستخدم، والاستجابة، وما إلى ذلك.
 
* على الرغم من أنه سيكون من الجيد أن تكون قادراً على الاختبار على جهاز واحد فقط لكل منصة، فمن الأفضل اختبار العديد من الأجهزة بمُختَلَف المنصات التي تدعمها. على سبيل المثال، ما قد ينجح على هاتف أندرويد معيّن قد يفشل على جهاز أندرويد آخر. وما قد يعمل على جهاز iOS 7 قد يفشل على جهاز iOS 6.
 
 
 
بالطبع، من المستحيل اختبار كل الأجهزة الموجودة في السوق. لهذا السبب، قد يكون من الحكمة توظيف عدة أشخاص يملكون أجهزة مختلفة للاختبار. على الرغم من أنهم لن يكشفوا كل المشاكل الممكنة، إلا أنهم على الأرجح سيكتشفون ثغرات ومشاكل لن يكون بمقدورك إيجادها لوحدك.
 
 
 
نصيحة: على أجهزة Android Nexus، يمكن تثبيت عدة إصدارات مختلفة من أندرويد بسهولة على الجهاز. ستتيح لك هذه العملية البسيطة اختبار تطبيقك بسهولة على مستويات مختلفة من أندرويد باستخدام جهاز واحد، وستعفيك من شراء عدد كبير من الأجهزة الضمان أو اختراق (jailbreak) جهازك. للمزيد من التفاصيل ارجع إلى الصفحة [https://developers.google.com/android/nexus/images#instructions Google Android factory images and instructions].
 
 
 
 
 
يتطلب التصحيح في (Debugging) كوردوفا بعض الإعدادات. فعلى عكس تطبيقات سطح المكتب، لا يمكنك ببساطة فتح أدوات المطورين على جهازك المحمول وبدء التصحيح، لحسن الحظ هناك بعض البدائل الممتازة.
 
 
 
== تصحيح تطبيقات iOS ==
 
=== Xcode ===
 
 
 
يمكنك عبر Xcode تصحيح الجانب الأصلي (native side) لمنصة iOS من تطبيقات كوردوفا. تحقق من أنّ إظهار منطقة التصحيح ‎(View -> Debug Area)‎. بمجرد تشغيل التطبيق على الجهاز (أو المُحاكي)، فيمكنك مطالعة مُخرجات السجل (log output) في منطقة التصحيح. فذلك هو المكان الذي ستُطبع فيه الأخطاء والتنبيهات. يمكنك أيضًا وضع نقاط توقف (breakpoints) داخل الملفات المصدرية. هذا سيسمح لك بالمرور عبر الشيفرة البرمجية سطرًا سطرًا، واستعراض حالة المتغيرات في كل خطوة. يتم إظهار حالة المتغيرات في منطقة التصحيح عند كل نقطة توقف. بمجرد تشغيل تطبيقك على الجهاز، يمكنك إظهار مفتش Safari - ‏Safari's web inspector‏ - (كما هو موضح أدناه) لتصحيح [[Cordova/webviews|المعرض]] وملفات [[JavaScript|[[Java|جافا]]اسكريبت]] الخاصة بالتطبيق. لمزيد من التفاصيل، راجع توثيق [https://developer.apple.com/support/debugging/ Apple Support].
 
=== التصحيح عند بًُعد عبر مفتش سافاري ===
 
 
 
باستخدام مفتش Safari ‏(Safari's web inspector‏)‏، يمكنك تصحيح طريقة [[Cordova/webviews|المعرض]] و ملفات [[JavaScript|[[Java|جافا]]اسكريبت]] الخاصة بتطبيقك. هذه الأداة تعمل فقط على منصات OSX، ابتداءً من iOS 6. إذ يستخدم متصفح Safari للاتصال بجهازك (أو المحاكي) وسيقوم بين أدوات المطورين الخاصة بالمتصفح وبين تطبيق كوردوفا. هكذا يمكنك الاستفادة من أدوات التطوير - فحص/ومعالجة الدوم DOM، تصحيح أخطاء [[JavaScript|[[Java|جافا]]اسكريبت]]، فحص الشبكة، وحدة التحكم والمزيد. مثل Xcode، يُمكِّنك مفتش Safari من تعيين نقاط توقف في شيفرة [[JavaScript|[[Java|جافا]]اسكريبت]]، وعرض حالة المتغيرات عند تلك النقاط. يمكنك الاطلاع على الأخطاء والتنبيهات والرسائل المطبوعة على وحدة التحكم. يمكنك أيضًا تشغيل أوامر [[JavaScript|[[Java|جافا]]اسكريبت]] مباشرة من وحدة التحكم أثناء تشغيل التطبيق. لمزيد من التفاصيل حول كيفية إعداد مفتش Safari وما يمكنك فعله به، راجع الصفحتين [http://moduscreate.com/enable-remote-web-inspector-in-ios-6/ Enabling Remote Web Inspector in iOS 6] و [https://developer.apple.com/library/safari/documentation/AppleApplications/Conceptual/Safari_Developer_Guide/Introduction/Introduction.html Safari Web Inspector Guide].
 
 
 
== التصحيح عن بعد عبر كروم ==
 
 
 
مثل Safari، يعمل كروم مع أندرويد فقط، ولكن يمكن استخدامه من أي منصة مكتبية. فهو يتطلب على الأقل الإصدار Android 4.4 (KitKat)‎، والمستوى 19 من واجهة برمجة التطبيقات (API)، و Chrome 30+‎ (على سطح المكتب). بمجرد ربط الاتصال، ستحصل على نفس أدوات المطورين (Chrome Dev) لأجل تطبيقات الجوال كما تفعل مع تطبيقات سطح المكتب. والأفضل من ذلك، أن أدوات Chrome Dev تعطيك خيار المرآة، والذي يعرض تطبيقك على محاكي جهاز هاتفي. ولكنه أكثر من مجرد عرض - إذ يمكنك التمرير والنقر من أدوات التطوير، وسترى التحديثات على جهاز الهاتف. يمكن الاطلاع على مزيد من التفاصيل حول التصحيح عن بُعد عبر Chrome من هنا: [https://developers.google.com/chrome/mobile/docs/debugging https://developers.google.com/chrome/mobile/docs/debugging]
 
 
 
إن كان بإمكانك رؤية جهازك في قسم فحص الأجهزة (inspect devices section)، ولكن لم تستطتع مشاهدة [[Cordova/webviews|معرض]] كوردوفا، فقد تحتاج إلى إضافة <code>android:debuggable="true"</code> في العقدة <code><application></code> في الملف <code>AndroidManifest.xml</code>.
 
 
 
من الممكن استخدام أدوات Chrome Dev لفحص تطبيقات iOS، من خلال خادم WebKit وسيط (WebKit proxy)‏: [https://github.com/google/ios-webkit-debug-proxy/ https://github.com/google/ios-webkit-debug-proxy/]
 
 
 
== Ripple ==
 
 
 
Ripple هو مُشاكل (emulator) لمشاريع كوردوفا يعمل على سطح المكتب. حيث يتيح لك تشغيل تطبيق كوردوفا على سطح المكتب، وإنشاء (اختلاق) العديد من ميزات كوردوفا. على سبيل المثال، يتيح لك محاكاة مقياس التسارع (accelerometer) لاختبار أحداث الاهتزاز (shake events). حيث يقوم بتزييف الواجهة البرمجية للكاميرا من خلال السماح لك بتحديد صورة من القرص الصلب. يساعدك Ripple على التركيز أكثر على شيفرتك البرمجية بدلاً من القلق بشأن إضافات كوردوفا. يمكنك معرفة المزيد عن Ripple من هنا: [http://ripple.incubator.apache.org/ http://ripple.incubator.apache.org/]
 
 
 
== Weinre ==
 
 
 
ينشئ Weinre خادمًا محليًا يمكنه استضافة عميل تصحيح (debug client) يعمل عن بًعد لاستخدامه مع تطبيقات كوردوفا. بعد تثبيته وتشغيله، يمكنك نسخ سطر من الشيفرة البرمجية إلى تطبيق كوردوفا ثم إعادة تشغيله. يمكنك بعد ذلك فتح لوحة أدوات التطوير على سطح المكتب لبدء العمل على التطبيق. قد لا يبدو Weinre بنفس أناقة مُصحِّحَي Chrome و Safari Remote، ولكنه يتميز بالقدرة على العمل مع مجموعة أكبر بكثير من أنظمة التشغيل والمنصات. يمكن الاطلاع على مزيد من المعلومات هنا: [http://people.apache.org/%7Epmuellr/weinre/docs/latest/ http://people.apache.org/~pmuellr/weinre/docs/latest/]
 
 
 
== خيارات أخرى ==
 
* لمزيد من الأمثلة والشروحات حول نصائح التصحيح أعلاه، راجع الصفحة: [http://developer.telerik.com/featured/a-concise-guide-to-remote-debugging-on-ios-android-and-windows-phone/ http://developer.telerik.com/featured/a-concise-guide-to-remote-debugging-on-ios-android-and-windows-phone/]
 
 
 
 
 
ليس من السهل بناء تطبيقات جميلة وأنيقة بكوردوفا، خاصة على المطورين. العديد من الناس يختارون استخدام إطار لواجهة المستخدمين (UI framework) لتسهيل ذلك. فيما يلي قائمة مختصرة بالخيارات الممكنة:
 
* [http://jquerymobile.com jQuery Mobile] - يعمل jQuery Mobile تلقائيًا على تحسين تخطيطك (layout) ليمنحك أداءً أفضل على الهاتف. كما أنه يتولى إنشاء تطبيقات الصفحة الأحادية (SPA) تلقائيا.
 
* [http://ionicframework.com/ ionic] - يملك هذا الإطار المُتميّز واجهة سطر أوامر خاصة به لمعالجة إنشاء المشاريع.
 
* [http://goratchet.com/ Ratchet] - مُطوّر من قبل نفس الأشخاص الذين طوروا Bootstrap.
 
* [http://www.telerik.com/kendo-ui Kendo UI] - واجهة مستخدم وإطار تطبيقات مفتوح المصدر من Telerik.
 
[http://topcoat.io Topcoat]
 
[http://facebook.github.io/react/ ReactJS]
 
 
 
عند بناء واجهة المستخدم، من المهم التفكير في جميع المنصات التي تستهدفها، وفي توقعات المستخدمين على كل منصة. على سبيل المثال، تطبيقات أندرويد التي تعتمد واجهة مستخدم على شاكلة نمط المنصة iOS، قد لا تتناسب مع مستخدمي أندرويد. يتم فرض نمط واجهة المستخدم في بعض الأحيان من قبل مخازن التطبيقات (application stores). ولهذا السبب، من المهم أن تحترم خصوصيات كل منصة، وأن تكون على دراية بمختلف إرشادات واجهات المستخدمين لتلك المنصات:
 
[https://developer.apple.com/library/ios/documentation/userexperience/conceptual/MobileHIG/index.html iOS]
 
[http://developer.android.com/design/index.html Android]
 
[https://dev.windows.com/en-us/design Windows Phone]
 
 
 
== مقالات ومصادر إضافية عن واجهة المستخدم ==
 
 
 
على الرغم من أن معايير المتصفحات أصبحت أكثر وأكثر اتساقا، فلا نزال مضطرين أحيانًا للتعامل مع بعض المعايير المخصوصة بكل متصفح على حدة (عبر البادئات المُزعجة webkit- و ‎-ms.) المقالة التالية مهمة لمن يريد تطوير واجهة مستخدمين لتطبيقات عابرة للمنصات (cross browser): [http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10.aspx http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10.aspx]
 
 
 
 
 
على الرغم من أن كوردوفا تسهّل عملية التطوير العابر للمنصات، فلا تتوقع أبدًا أن تعزلك بشكل كامل عن المنصة الأصلية. لذلك يجب أن تكون على وعي بالقيود الموجودة.
 
 
 
== تحميل المحتوى عن بُعد ==
 
 
 
استدعاء دوال [[JavaScript|[[Java|جافا]]اسكريبت]] (في كوردوفا) من صفحة HTML محملة عن بُعد (أي صفحة HTML غير مُخزّنة محليًا على الجهاز) ليس مدعومًا. هذا لأن كوردوفا لم تُصمّم لأجل ذلك، ولم يقم مجتمع كوردوفا باختبار هذا الإعداد. في حين أنه قد يعمل في بعض الظروف، إلا أنه غير موصى به وغير مدعوم. هناك تحديات من هذه السياسة، وهو الحفاظ على التزامن بين إصداري الأجزاء المكتوبة بلغة [[JavaScript|[[Java|جافا]]اسكريبت]] والأجزاء الأصلية من كوردوفا (نظرًا لأنها موصولة بواجهات برمجيي خاصة قابلة للتغيير)، إضافة إلى موثوقية المحتويات البعيدة التي تستدعي دوال محلية أصلية (native local functions)، وكذلك احتمال الرفض من متجر التطبيقات.
 
 
 
عرض محتويات HTML المُحمّلة عن بعد في [[Cordova/webviews|معرض]] يجب أن يحدث باستخدام InAppBrowser. صُمِّم InAppBrowser بحيث يمنع شيفرات [[JavaScript|[[Java|جافا]]اسكريبت]] المُنفّدة في تلك المحتويات الخارية من الوصول إلى الواجهة البرمجية لتطبيقات [[JavaScript|[[Java|جافا]]اسكريبت]]-كوردوفا للأسباب المذكورة أعلاه. يرجى الرجوع إلى الدليل [../appdev/security/index.html Security Guide].
 
 
 
 
 
فيما يلي بعض الطرق لمواكبة مستجدات كوردوفا.
 
* اشترك في [http://cordova.apache.org/#news Cordova blog].
 
* اشترك في [http://cordova.apache.org/#mailing-list developer list]. ملاحظة - هذه ليست مجموعة دعم! ولكنه المكان الذي تتم فيه مناقشة كل ما يتعلق بتطوير كوردوفا.
 
 
 
 
 
الروابط التالية هي أفضل الأماكن التي يمكن أن تحصل منها على المساعدة حول كل ما يتعلق بكوردوفا:  
 
* StackOverflow: [http://stackoverflow.com/questions/tagged/cordova http://stackoverflow.com/questions/tagged/cordova] باستخدام الوسم Cordova، يمكنك استعراض وتصفح جميع الأسئلة المتعلقة بكوردوفا. لاحظ أن StackOverflow يحوّل تلقائيًا الوسم"Phonegap" إلى الوسم "Cordova"، وبذلك ستتمكن من الوصول إلى الأسئلة القديمة أيضًا  
 
* PhoneGap Google Group: [https://groups.google.com/forum/#!forum/phonegap https://groups.google.com/forum/#!forum/phonegap] مجموعة جوجل هذه كانت منتدى الدعم القديم لمّا كانت كوردوفا لا تزال تسمى PhoneGap صحيح أنه لا يزال هناك الكثير من مستخدمي كوردوفا الذين يترددون على هذه المجموعة، إلا أنّ مجتمع كوردوفا قد أعرب عن اهتمامه بالتركيز بشكل أكبر على استخدام StackOverflow للحصول على الدعم  
 
* الملتقيات: [http://phonegap.meetup.com http://phonegap.meetup.com] - حاول العثور على مجموعات الملتقيات المحلية لكوردوفا أو PhoneGap.
 
 
==مصادر==
 
==مصادر==
 
*[https://cordova.apache.org/docs/en/latest/guide/next/index.html صفحة Best Practices Cordova app development في توثيق كوردوفا الرسمي.]
 
*[https://cordova.apache.org/docs/en/latest/guide/next/index.html صفحة Best Practices Cordova app development في توثيق كوردوفا الرسمي.]

مراجعة 15:34، 24 نوفمبر 2018

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

يتحث هذا الدليل عن المواضيع التالية:

  • أفضل الممارسات
  • إدارة الترقيات
  • اختبار تطبيقات كوردوفا
  • تصحيح تطبيقات كوردوفا
  • واجهة المستخدم
  • إعتبارات خاصة
  • المواكبة
  • الحصول على المساعدة

أفضل ممارسات التطوير في كوردوفا

التطبيقات أحادية الصفحة (SPA)

من المهم أن تُصمّم تطبيقات كوردوفا خاصتك وفق مقاربة التطبيقات أحادية الصفحة (SPA). وهي تطبيقات من جانب العميل (client-side application) تُشغّل عبر طلبية (request) واحدة من صفحة إلكترونية. حيث يحمِّل المستخدم في البداية مجموعة أولية من الموارد (ملفات HTML و CSS و وجافاسكريبت)، أما التحديثات الأخرى (إظهار معرض [view] جديد، وتحميل البيانات...) فتُجرى عبر تقنية أجاكس (AJAX).

تُستخدم مقاربة SPA عادةً لإنشاء التطبيقات المعقدة من جانب العميل. GMail هو أحد المثلة الرائعة على ذلك. فبعد تحميل GMail، فكل الوظائف التي يقدمها للمستخدم (استعراض البريد، التحرير، والتنظيم...) تتم من خلال تحديث الدوم (DOM) بدلاً من مغادرة الصفحة الحالية لتحميل صفحة جديدة.

يمكن أن تساعدك مقاربة SPA على تنظيم تطبيقك بطريقة أكثر كفاءة، ولكن لها أيضًا بعض الفوائد الخاصة لتطبيقات كوردوفا. فمثلًا، يجب على تطبيقات كوردوفا أن تنتظر إطلاق الحدث deviceready قبل استخدام أي إضافة. لذلك إن لم تستخدم SPA، وقام المستخدم بالنقر للانتقال من صفحة إلى أخرى، فسيتعين عليك الانتظار حتى يُفعّل الحدثdeviceready مرة أخرى قبل أن تستطيع استخدام الإضافات.

حتى لو لم تكن تستخدم كوردوفا، فإنشاء تطبيق هاتفي بدون استخدام المقاربة أحادية الصفحة سيضر بأداء تطبيقك. ذلك لأن التنقل بين الصفحات يتطلب إعادة تحميل النصوص البرمجية والأصول (assets) وغير ذلك. وحتى في حال تخزين تلك الأصول مؤقتًا، فهذا لن يحل كل المشكلات المتعلقة بالأداء.

إليك بعض الأمثلة عن مكتبات SPA التي يمكنك استخدامها في تطبيقات كوردوفا:

وغيرها كثير.

اعتبارات متعلقة بالأداء

في هذه الفقرة، سنتكلم عن بعض الأساليب المُتبعة لتحسين أداء تطبيقاتك:

النقر مقابل اللمس (Click versus Touch)

أكبر خطأ يمكن أن ترتكبه هو استخدام أحداث النقر (click events). فعلى الرغم من أن هذا الأمر قد يعمل بشكل جيد على الهواتف، فإن معظم الأجهزة تفرض تاخيرُا على النقرات بـ 300 ميليثانية (300ms) للتمييز بين الحدث touch والحدث hold.

استخدام touchstart، أو touchend، سيؤدي إلى تحسّن كبير في الأداء - قد لا تبدوا 300 ميليثانية بالشيء الخطير، ولكن يمكن أن تؤدي إلى تحديثات كثيرة في واجهة المستخدم (UI). يجب أيضًا مراعاة حقيقة أن الأحداث "touch" غير مدعومة في المتصفحات التي لا تدعم webkit، راجع الصفحة CanIUse لمعرفة المزيد.

لتجاوز هذه القيود، يمكنك استخدام بعض المكتبات مثل HandJS و Fastclick.

تحويلات CSS مقابل تداول الدوم (CSS Transitions versus DOM Manipulation)

استخدام تحويلات CSS المُسرّعة (accelerated CSS transitions) للأجهزة أفضل بكثير من استخدام جافاسكريبت لإنشاء الرسوميات (animations). انظر في قائمة الموارد في نهاية هذا القسم للحصول على أمثلة.

بطؤ الشبكة (Networks Suck)

قد لا تكون الشبكات سيئة دائمًا، ولكن زمن الانتظار في شبكات الجوّال، مهما كانت جيدة، أسوأ بكثير مما تعتقد. فتطبيق على سطح المكتب يعمل على إفراغ 500 صف من بيانات JSON كل 30 ثانية، سيكون بطيئا جدًّا على جهاز الجوّال، كما سيستنزف البطارية. ضع في اعتبارك أن لتطبيقات كوردوفا عدة طرق لحفظ البيانات في التطبيق (مثل التخزين المحلي والواجهة البرمجية FileSystem). استخدم ذاكرة التخزين المؤقت لحفظ البيانات محليا، ولكن انتبه لكمية البيانات التي ترسلها ذهابا وإيابا. خصوصًا إن كان تطبيقك متصلًا بشبكة خلوية.

مقالات ومصادر إضافية

رصد انقطاع الاتصال (Offline) والتعامل معه

قد لا يكون تطبيقك على شبكة بطيئة وحسب، بل من الممكن أن يكون منقطعًا بالكامل عن الشبكة. يجب أن يتعامل طلبك مع هذا الوضع بطريقة ذكية وصحيحة. أو قد يعتقد الناس أن تطبيقك معطل. نظرًا لسهولة التعامل مع هذا (كوردوفا توفر أحداثًا ترصد حالة الاتصال [online] أو انقطاع الاتصال [offline] بشبكة الإنترنت)، لذلك لا يوجد أي سبب على الإطلاق لئلًا يتجاوب تطبيقك بالشكل الصحيح عند انقطاع الاتصال. تأكد من اختبار (راجع قسم الاختبار أدناه) تطبيقك وتأكد من اختبار كيفية يتعامل تطبيقك مع الحالات التي يبدء فيها من حالة ثم ينتقل إلى أخرى.

لاحظ أن الحدثين online و offline، وكذلك الواجهة البرمجية للاتصال بالشبكة (Network Connection API) ليست مثالية. قد تحتاج إلى استخدام طلبية XHR للتحقق مما إن كان الجهاز متصلًا أو منقطعًا عن الإنترنت. حاول أيضًا إضافة بعض أشكال الدعم للمسائل المتعلق بالشبكة - في الواقع، متجر Apple (وربما متاجر أخرى) سيرفض التطبيقات التي لا تعالج بشكل صحيح حالات الاتصال/الانقطاع عن الشبكة. لمزيد من المناقشات حول هذا الموضوع، راجع صفحة "Is This Thing On?"

ترقية مشاريع كوردوفا

إن أنشأت مشروعك الحالي باستخدام كوردوفا ‎3.x‎، فيمكنك ترقية المشروع من خلال تنفيذ الأمر التالي:

cordova platform update platform-name ios, android, etc.‎

أما إن كنت قد أنشأت مشروعك الحالي باستخدام إصدار سابق لكوردوفا 3.x، فمن الأفضل إنشاء مشروع جديد بالإصدار كوردوفا 3.x، ثم نسخ الشيفرة البرمجية لمشروعك الحالي وأصولِه إلى المشروع الجديد. عبر الخطوات التالية:

  • أنشئ مشروعًا جديدًا باستخدام كوردوفا ‎3.x
  • انسخ المجلد www من مشروعك القديم نحو المشروع الجديد
  • انسخ إعدادات المشروع القديم إلى المشروع الجديد
  • أضف كل الإضافات المستخدمة في المشروع القديم إلى المشروع الجديد
  • قم ببناء مشروعك
  • اختبر، واختبر، واختبر!

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

ملاحظة: قد لا تتوافق بعض الإضافات مع الإصدار الجديد من كوردوفا. إذا لم تكن الإضافة متوافقةً مع إصدار كوردوفا الجديد، فربما تعثر على إضافةٍ بديلةٍ تؤدي العمل الذي تحتاجه، وإلا فربما عليك تأخير ترقية المشروع. أو يمكنك تعديل الإضافة بحيث تعمل ضمن الإصدار الجديد، وتساعد المطورين الآخرين.

ترقية الإضافات

لا توجد حاليًا آلية لترقية الإضافات التي تم تغييرها باستخدام أمر واحد. بدلاً من ذلك، أزل الإضافة وأعد إضافتها إلى مشروعك، وسيُثبّت الإصدار الجديد:

cordova plugin rm "some-plugin"
cordova plugin add "some-plugin"‎

ارجع إلى صفحة [../../platform_plugin_versioning_ref/index.html Manage versions and platforms] لمزيد من التفاصيل.

تأكد من مراجعة توثيق الإضافة المحدّثة، حيث قد تحتاج إلى تعديل شيفرتك لتعمل مع الإصدار الجديد. تأكد أيضًا من أن الإصدار الجديد من الإضافة يعمل دون مشاكل مع إصدار مشروع كوردوفا خاصتك.

اختبر تطبيقاتك على الدوام للتأكد من أن تثبيت الإضافة الجديدة لم يؤدي إلى كسر أو تعطيل شيء ما.

إن كان مشروعك يحتوي على الكثير من الإضافات التي تحتاج إلى تحديثها، فيمكنك ربح الوقت بإنشاء نص برمجي shell أو رُقعة (batch script) تضيف وتزيل الإضافات عبر أمرِ واحدِ فقط.

يعد اختبار تطبيقاتك أمرًا بالغ الأهمية. يستخدم فريق كوردوفا أداة Jasmine، ولكن يمكنك استخدام ما يناسبك من حلول الاختبار.

الاختبار على محاكي والاختبار على جهاز حقيقي

من الشائع استخدام متصفحات سطح المكتب ومحاكيات الأجهزة عند تطوير تطبيقات كوردوفا. ومع ذلك، فمن المهم أن تختبر تطبيقك على أكبر عدد ممكن من الأجهزة الفعلية:

  • فالمحاكيات تبقى مجرد محاكيات. على سبيل المثال، قد يعمل تطبيقك في محاكي iOS بدون مشاكل، ولكنه قد يفشل على جهاز حقيقي (خاصة في ظروف معينة، مثل حالة انحسار الذاكرة). أو قد يفشل تطبيقك في المحاكي بينما يعمل بشكل جيد على جهاز حقيقي.
  • المحاكيات هي مجرد محاكيات. لا تمثل مدى جودة تشغيل تطبيقك على جهاز فعلي. على سبيل المثال، قد تعرض بعض المحاكيات تطبيقك بطريقة مشوهة، في حين أن الجهاز الحقيقي سيعرضه بشكل طبيعي. (إذا واجهت هذه المشكلة، قم بتعطيل المضيف GPU في المحاكي.)
  • المحاكيات (Simulators) أسرع بشكل عام من الجهاز المادي. على خلا المشاكلات (Emulators) التي تكون أبطأ بشكل عام. لا تحكم على أداء تطبيقك من أدائه على المُحاكي أو المُشاكل. ولكن احكم على أداء تطبيقك من خلال تشغيله على مجموعة من الأجهزة الحقيقية.
  • من المستحيل الحصول على فكرة جيدة عن كيفية استجابة تطبيقك للّمس عن طريق استخدام المُحاكيات أو المُشاكلات. بدلاً من ذلك، تشغيل التطبيق على جهاز حقيقي سيكشف عن المشكلات المتعلقة بأحجام عناصر واجهة المستخدم، والاستجابة، وما إلى ذلك.
  • على الرغم من أنه سيكون من الجيد أن تكون قادراً على الاختبار على جهاز واحد فقط لكل منصة، فمن الأفضل اختبار العديد من الأجهزة بمُختَلَف المنصات التي تدعمها. على سبيل المثال، ما قد ينجح على هاتف أندرويد معيّن قد يفشل على جهاز أندرويد آخر. وما قد يعمل على جهاز iOS 7 قد يفشل على جهاز iOS 6.

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

نصيحة: على أجهزة Android Nexus، يمكن تثبيت عدة إصدارات مختلفة من أندرويد بسهولة على الجهاز. ستتيح لك هذه العملية البسيطة اختبار تطبيقك بسهولة على مستويات مختلفة من أندرويد باستخدام جهاز واحد، وستعفيك من شراء عدد كبير من الأجهزة الضمان أو اختراق (jailbreak) جهازك. للمزيد من التفاصيل ارجع إلى الصفحة Google Android factory images and instructions.

يتطلب التصحيح في (Debugging) كوردوفا بعض الإعدادات. فعلى عكس تطبيقات سطح المكتب، لا يمكنك ببساطة فتح أدوات المطورين على جهازك المحمول وبدء التصحيح، لحسن الحظ هناك بعض البدائل الممتازة.

تصحيح تطبيقات iOS

Xcode

يمكنك عبر Xcode تصحيح الجانب الأصلي (native side) لمنصة iOS من تطبيقات كوردوفا. تحقق من أنّ إظهار منطقة التصحيح ‎(View -> Debug Area)‎. بمجرد تشغيل التطبيق على الجهاز (أو المُحاكي)، فيمكنك مطالعة مُخرجات السجل (log output) في منطقة التصحيح. فذلك هو المكان الذي ستُطبع فيه الأخطاء والتنبيهات. يمكنك أيضًا وضع نقاط توقف (breakpoints) داخل الملفات المصدرية. هذا سيسمح لك بالمرور عبر الشيفرة البرمجية سطرًا سطرًا، واستعراض حالة المتغيرات في كل خطوة. يتم إظهار حالة المتغيرات في منطقة التصحيح عند كل نقطة توقف. بمجرد تشغيل تطبيقك على الجهاز، يمكنك إظهار مفتش Safari - ‏Safari's web inspector‏ - (كما هو موضح أدناه) لتصحيح المعرض وملفات جافااسكريبت الخاصة بالتطبيق. لمزيد من التفاصيل، راجع توثيق Apple Support.

التصحيح عند بًُعد عبر مفتش سافاري

باستخدام مفتش Safari ‏(Safari's web inspector‏)‏، يمكنك تصحيح طريقة المعرض و ملفات جافااسكريبت الخاصة بتطبيقك. هذه الأداة تعمل فقط على منصات OSX، ابتداءً من iOS 6. إذ يستخدم متصفح Safari للاتصال بجهازك (أو المحاكي) وسيقوم بين أدوات المطورين الخاصة بالمتصفح وبين تطبيق كوردوفا. هكذا يمكنك الاستفادة من أدوات التطوير - فحص/ومعالجة الدوم DOM، تصحيح أخطاء جافااسكريبت، فحص الشبكة، وحدة التحكم والمزيد. مثل Xcode، يُمكِّنك مفتش Safari من تعيين نقاط توقف في شيفرة جافااسكريبت، وعرض حالة المتغيرات عند تلك النقاط. يمكنك الاطلاع على الأخطاء والتنبيهات والرسائل المطبوعة على وحدة التحكم. يمكنك أيضًا تشغيل أوامر جافااسكريبت مباشرة من وحدة التحكم أثناء تشغيل التطبيق. لمزيد من التفاصيل حول كيفية إعداد مفتش Safari وما يمكنك فعله به، راجع الصفحتين Enabling Remote Web Inspector in iOS 6 و Safari Web Inspector Guide.

التصحيح عن بعد عبر كروم

مثل Safari، يعمل كروم مع أندرويد فقط، ولكن يمكن استخدامه من أي منصة مكتبية. فهو يتطلب على الأقل الإصدار Android 4.4 (KitKat)‎، والمستوى 19 من واجهة برمجة التطبيقات (API)، و Chrome 30+‎ (على سطح المكتب). بمجرد ربط الاتصال، ستحصل على نفس أدوات المطورين (Chrome Dev) لأجل تطبيقات الجوال كما تفعل مع تطبيقات سطح المكتب. والأفضل من ذلك، أن أدوات Chrome Dev تعطيك خيار المرآة، والذي يعرض تطبيقك على محاكي جهاز هاتفي. ولكنه أكثر من مجرد عرض - إذ يمكنك التمرير والنقر من أدوات التطوير، وسترى التحديثات على جهاز الهاتف. يمكن الاطلاع على مزيد من التفاصيل حول التصحيح عن بُعد عبر Chrome من هنا: https://developers.google.com/chrome/mobile/docs/debugging

إن كان بإمكانك رؤية جهازك في قسم فحص الأجهزة (inspect devices section)، ولكن لم تستطتع مشاهدة معرض كوردوفا، فقد تحتاج إلى إضافة android:debuggable="true" في العقدة <application> في الملف AndroidManifest.xml.

من الممكن استخدام أدوات Chrome Dev لفحص تطبيقات iOS، من خلال خادم WebKit وسيط (WebKit proxy)‏: https://github.com/google/ios-webkit-debug-proxy/

Ripple

Ripple هو مُشاكل (emulator) لمشاريع كوردوفا يعمل على سطح المكتب. حيث يتيح لك تشغيل تطبيق كوردوفا على سطح المكتب، وإنشاء (اختلاق) العديد من ميزات كوردوفا. على سبيل المثال، يتيح لك محاكاة مقياس التسارع (accelerometer) لاختبار أحداث الاهتزاز (shake events). حيث يقوم بتزييف الواجهة البرمجية للكاميرا من خلال السماح لك بتحديد صورة من القرص الصلب. يساعدك Ripple على التركيز أكثر على شيفرتك البرمجية بدلاً من القلق بشأن إضافات كوردوفا. يمكنك معرفة المزيد عن Ripple من هنا: http://ripple.incubator.apache.org/

Weinre

ينشئ Weinre خادمًا محليًا يمكنه استضافة عميل تصحيح (debug client) يعمل عن بًعد لاستخدامه مع تطبيقات كوردوفا. بعد تثبيته وتشغيله، يمكنك نسخ سطر من الشيفرة البرمجية إلى تطبيق كوردوفا ثم إعادة تشغيله. يمكنك بعد ذلك فتح لوحة أدوات التطوير على سطح المكتب لبدء العمل على التطبيق. قد لا يبدو Weinre بنفس أناقة مُصحِّحَي Chrome و Safari Remote، ولكنه يتميز بالقدرة على العمل مع مجموعة أكبر بكثير من أنظمة التشغيل والمنصات. يمكن الاطلاع على مزيد من المعلومات هنا: http://people.apache.org/~pmuellr/weinre/docs/latest/

خيارات أخرى

ليس من السهل بناء تطبيقات جميلة وأنيقة بكوردوفا، خاصة على المطورين. العديد من الناس يختارون استخدام إطار لواجهة المستخدمين (UI framework) لتسهيل ذلك. فيما يلي قائمة مختصرة بالخيارات الممكنة:

  • jQuery Mobile - يعمل jQuery Mobile تلقائيًا على تحسين تخطيطك (layout) ليمنحك أداءً أفضل على الهاتف. كما أنه يتولى إنشاء تطبيقات الصفحة الأحادية (SPA) تلقائيا.
  • ionic - يملك هذا الإطار المُتميّز واجهة سطر أوامر خاصة به لمعالجة إنشاء المشاريع.
  • Ratchet - مُطوّر من قبل نفس الأشخاص الذين طوروا Bootstrap.
  • Kendo UI - واجهة مستخدم وإطار تطبيقات مفتوح المصدر من Telerik.

Topcoat ReactJS

عند بناء واجهة المستخدم، من المهم التفكير في جميع المنصات التي تستهدفها، وفي توقعات المستخدمين على كل منصة. على سبيل المثال، تطبيقات أندرويد التي تعتمد واجهة مستخدم على شاكلة نمط المنصة iOS، قد لا تتناسب مع مستخدمي أندرويد. يتم فرض نمط واجهة المستخدم في بعض الأحيان من قبل مخازن التطبيقات (application stores). ولهذا السبب، من المهم أن تحترم خصوصيات كل منصة، وأن تكون على دراية بمختلف إرشادات واجهات المستخدمين لتلك المنصات: iOS Android Windows Phone

مقالات ومصادر إضافية عن واجهة المستخدم

على الرغم من أن معايير المتصفحات أصبحت أكثر وأكثر اتساقا، فلا نزال مضطرين أحيانًا للتعامل مع بعض المعايير المخصوصة بكل متصفح على حدة (عبر البادئات المُزعجة webkit- و ‎-ms.) المقالة التالية مهمة لمن يريد تطوير واجهة مستخدمين لتطبيقات عابرة للمنصات (cross browser): http://blogs.windows.com/windows_phone/b/wpdev/archive/2012/11/15/adapting-your-webkit-optimized-site-for-internet-explorer-10.aspx

على الرغم من أن كوردوفا تسهّل عملية التطوير العابر للمنصات، فلا تتوقع أبدًا أن تعزلك بشكل كامل عن المنصة الأصلية. لذلك يجب أن تكون على وعي بالقيود الموجودة.

تحميل المحتوى عن بُعد

استدعاء دوال جافااسكريبت (في كوردوفا) من صفحة HTML محملة عن بُعد (أي صفحة HTML غير مُخزّنة محليًا على الجهاز) ليس مدعومًا. هذا لأن كوردوفا لم تُصمّم لأجل ذلك، ولم يقم مجتمع كوردوفا باختبار هذا الإعداد. في حين أنه قد يعمل في بعض الظروف، إلا أنه غير موصى به وغير مدعوم. هناك تحديات من هذه السياسة، وهو الحفاظ على التزامن بين إصداري الأجزاء المكتوبة بلغة جافااسكريبت والأجزاء الأصلية من كوردوفا (نظرًا لأنها موصولة بواجهات برمجيي خاصة قابلة للتغيير)، إضافة إلى موثوقية المحتويات البعيدة التي تستدعي دوال محلية أصلية (native local functions)، وكذلك احتمال الرفض من متجر التطبيقات.

عرض محتويات HTML المُحمّلة عن بعد في معرض يجب أن يحدث باستخدام InAppBrowser. صُمِّم InAppBrowser بحيث يمنع شيفرات جافااسكريبت المُنفّدة في تلك المحتويات الخارية من الوصول إلى الواجهة البرمجية لتطبيقات جافااسكريبت-كوردوفا للأسباب المذكورة أعلاه. يرجى الرجوع إلى الدليل [../appdev/security/index.html Security Guide].

فيما يلي بعض الطرق لمواكبة مستجدات كوردوفا.

  • اشترك في Cordova blog.
  • اشترك في developer list. ملاحظة - هذه ليست مجموعة دعم! ولكنه المكان الذي تتم فيه مناقشة كل ما يتعلق بتطوير كوردوفا.

الروابط التالية هي أفضل الأماكن التي يمكن أن تحصل منها على المساعدة حول كل ما يتعلق بكوردوفا:

  • StackOverflow: http://stackoverflow.com/questions/tagged/cordova باستخدام الوسم Cordova، يمكنك استعراض وتصفح جميع الأسئلة المتعلقة بكوردوفا. لاحظ أن StackOverflow يحوّل تلقائيًا الوسم"Phonegap" إلى الوسم "Cordova"، وبذلك ستتمكن من الوصول إلى الأسئلة القديمة أيضًا
  • PhoneGap Google Group: https://groups.google.com/forum/#!forum/phonegap مجموعة جوجل هذه كانت منتدى الدعم القديم لمّا كانت كوردوفا لا تزال تسمى PhoneGap صحيح أنه لا يزال هناك الكثير من مستخدمي كوردوفا الذين يترددون على هذه المجموعة، إلا أنّ مجتمع كوردوفا قد أعرب عن اهتمامه بالتركيز بشكل أكبر على استخدام StackOverflow للحصول على الدعم
  • الملتقيات: http://phonegap.meetup.com - حاول العثور على مجموعات الملتقيات المحلية لكوردوفا أو PhoneGap.

مصادر