اساسيات التطبيق

الإعلانات

اساسيات التطبيق

 

 

اساسيات التطبيق

 يمكن برمجة تطبيقات أندرويد، بإستخدام لغات مثل، Kotlin, Java, و C++. تقوم أدوات حزمة تطوير البرمجيات SDK، بدمج الكود
الخاص بك، مع ما يحتويه من بيانات، وملفات مصادر في ملف APK.
وهو حزمة اندرويد، عبارة عن ملف أرشيف ينتهي باللاحقة .apk، يحتوي ملف APK الواحد، على جميع محتويات تطبيق الأندرويد، وهو الملف الذي تستخدمه أجهزة الأندرويد، لتثبيت التطبيق.

 

 

يقع كل تطبيق للأندرويد، في المجال الآمن الخاص به، محمياً بميزات أمان الاندرويد التالية:

 

1- نظام الأندرويد، هو نظام لينوكس متعدد المستخدمين، حيث يمثل كل تطبيق مستخدم مختلف.

 

2- بشكلٍ إفتراضي، يعين النظام لكل تطبيق معرف لينوكس فريد، (يتم إستخدام المعرف من قبل النظام فقط، ويكون غير معروف للتطبيق).

 

يقوم النظام بتعيين أذونات لجميع ملفات التطبيق. لذا فقط، المعرف الذي تم تعيينه لذلك التطبيق يمكنه الوصول إليهم.

 

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

 

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

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

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

وهذا يخلق بيئة آمنة للغايه، حيث أنه لا يمكن للتطبيق الوصول إلى أجزاء من النظام، لم يمنح الإذن بالوصول إليها.

 

ومع ذلك، هناك طرق للتطبيق لمشاركة البيانات، مع التطبيقات الأخرى وللتطبيق للوصول إلى خدمات النظام:

 

1- من الممكن تعديل تطبيقين ليتشاركا معرف لينوكس واحد، وفي هذه الحالة يتمكنان من الوصول إلى ملفات بعضهما. و للحفاظ على موارد النظام، يمكن أيضاً تعديل التطبيقات التي تتشارك نفس المعرف.

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

 

2- يمكن للتطبيق، طلب إذن للوصول إلى بيانات الجهاز مثل جهات الإتصال، الرسائل النصية القصيرة، الذاكرة الخارجية SD، الكاميرا و البلوثوت.

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

 

باقي المستند يقدم المفاهيم التاليه:

 

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

 

 

 

 

اساسيات التطبيق

 

مكونات التطبيق


مكونات التطبيق، هي اللبنات الأساسية لتطبيق الأندرويد. حيث يمثل كل مكون نقطة دخول يمكن للنظام، أو المستخدم من خلالها الدخول إلى تطبيقك.

بعض المكونات تعتمد على مكونات أخرى.

هناك أربعة أنواع مختلفة من مكونات التطبيق:

 

  • الأنشطة Activities
  • الخدمات Services
  • مستقبلات البث Broadcast receivers
  • موفري المحتوى Content providers

 

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

 

 

 

 

اساسيات التطبيق

 

الأنشطة


النشاط هو نقطة دخول للتفاعل مع المستخدم. ويمثل شاشة واحدة في واجهة المستخدم.

على سبيل المثال، قد يتضمن أحد تطبيقات البريد الإلكتروني، نشاطاً واحداً يعرض قائمة بالرسائل الجديدة.

ونشاطاً آخر لإنشاء رسالة، ونشاط آخر لقراءة الرسائل.

 

على الرغم، من أن الأنشطة معاً تشكل تجربة مستخدم مترابطة، في تطبيق البريد الإلكتروني، إلا أن كلٍ منها مستقل عن الآخر.

وعلى هذا النحو، يمكن لتطبيق آخر أن يقوم بتشغيل أي من هذه الأنشطة، إذا كان تطبيق البريد يسمح بذلك.

 

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

يسهل النشاط، التفاعلات الرئيسية التاليه بين النظام والتطبيق:

 

  • الإستمرار في تتبع ما يهتم به المستخدم حالياً، (ما يعرض على الشاشه) للتأكد من إستمرار النظام، في تشغيل العملية، التي تستضيف ذلك النشاط.

 

  • معرفة أن العمليات المستخدمة سابقاً، تحتوي على أشياء قد يعود إليها المستخدم (أنشطة متوقفه)، وبالتالي إعطاء أولوية أكبر للإحتفاظ بتلك العمليات.

 

  • مساعدة التطبيق، على التعامل مع عملية تعطيله حتى يتمكن المستخدم، من العودة إلى الأنشطة التي تمت إستعادة حالتها السابقة.

 

  • توفير طرق للتطبيقات، لتنفيذ تدفقات بين المستخدمين، وللنظام لتنسيق هذه التدفقات (مثل المشاركة).

تقوم أنت بتنفيذ نشاط كفئة فرعية، من فئة النشاط. لمزيد من المعلومات حول فئة النشاط، أنظر دليل مطور الأنشطة.

 

 

 

اساسيات التطبيق

 

الخدمات Services

هي نقطة دخول للأغراض العامه، للإستمرار في تشغيل التطبيق، في الخلفية لأي سبب كان. وهو مكون يتم تشغيله في الخلفية.

إما لإجراء عمليات طويلة الأمد، أو لتنفيذ مهمات لعمليات بعيدة. الخدمة لا توفر واجهة مستخدم.

على سبيل المثال، قد تعمل إحدى الخدمات، على تشغيل الموسيقى في الخلفية، بينما يتواجد المستخدم في تطبيق آخر.

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

 

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

في الواقع، هناك نوعان من الخدمات الدلالية المتميزة، التي تخبر النظام بكيفية إدارة التطبيق:

 

بدء الخدمات، يخبر النظام بأن يستمر في تشغيل الخدمات حتى يكتمل عملها.

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

مزامنة البيانات في الخلفية أو تشغيل الموسيقى، تمثلان أيضاً نوعين مختلفين من بدء الخدمات، التي تقوم بتعديل النظام ليتمكن من التعامل معها:

1- يعد تشغيل الموسيقى، أمراً يلاحظه المستخدم مباشرة.

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

لأن المستخدم لن يكون سعيداً إن اختفت.

2- الخدمة الإعتيادية، التي تعمل في الخلفية، ليست شيئاً يلاحظه المستخدم مباشرة.

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

 

تعمل الخدمات المقيدة، لأن تطبيق آخر (أو النظام) يريد الإستفادة من الخدمة. هذه الخدمة أساساً هي من تقوم بتوفير API لعملية أخرى.

 

وبالتالي يعلم النظام، بوجود ترابط ( إعتماد عملية على الأخرى) بين هذه العمليات، لذا لو كانت العملية “أ” مرتبطة بخدمة، في

العملية “ب”، فإن النظام يعلم بأن هناك حاجة للإبقاء على العملية “ب” قيد التشغيل، (والخدمة الخاصة بها) من أجل العملية “أ”.

إضافة إلى ذلك، لو كانت العمليه “أ” شيء يهتم به المستخدم، فإنه يقوم أيضاً بمعاملة العملية “ب” كشيء يهتم به المستخدم.

بسبب مرونتها (للأفضل أو للأسوأ)، تبين أن الخدمات هي لبنة بناء مفيدة لجميع أنواع مفاهيم الأنظمة العليا.

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

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

يتم تنفيذ الخدمة، كفئة فرعية من الخدمة. لمزيد من المعلومات حول فئة الخدمة، انظر دليل مطور الخدمات.

ملاحظة: إذا كان تطبيقك، يستهدف إصدارات أندرويد 5 (API level 21) أو أحدث، أستخدم الفئة JobScheduler لجدولة الإجراءات.

يتمتع JobScheduler بميزة الحفاظ على البطارية، من خلال جدولة الوظائف، على نحو أمثل لتقليل إستهلاك الطاقة، ومن خلال التعامل مع Doze API.

لمزيد من المعلومات حول إستخدام هذه الفئة، انظر الوثائق المرجعية لجدولة الأعمال.

 

 

 

 

اساسيات التطبيق

 

مستقبلات البث 

 

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

نظراً لأن، مستقبلات البث هي إدخال آخر واضح في التطبيق، يمكن للنظام القيام بتسليم البث حتى، للتطبيقات التي لا تعمل حالياً.

على سبيل المثال، يمكن، لأحد التطبيقات جدولة تنبيه لنشر إشعار، يخبر المستخدم عن حدث قادم…

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

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

 

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

على الرغم، من أن مستقبلات البث لا تعرض واجهة مستخدم، إلا أنها قد تنشئ إشعار شريط الحاله، لتنبيه المستخدم عند حدوث “حدث بث”.

على الرغم من أن الأكثر شيوعاً، أن يكون مستقبل البث، مجرد مدخل لمكونات أخرى، ومعد للقيام بعمل ضئيل جداً.

على سبيل المثال، قد تقوم بجدولة خدمة العمل JobService لأداء بعض الأعمال، بناءً على الحدث مع جدولة العمل.

يتم تنفيذ مستقبل البث كفئة فرعية، من مستقبل البث ويتم تسليم كل بث، ككائن هدف. لمزيد من المعلومات، راجع فئة مستقبلات البث.

 

 

 

 

 

 

اساسيات التطبيق

 

موفري المحتوى

 

موفر المحتوى، يدير مجموعة مشتركة، من بيانات التطبيق التي يمكنك تخزينها في ملفات النظام، أو في قاعدة بيانات SQLite، أو على الويب.

أو على أي موقع تخزين ثابت يمكن لتطبيقك الوصول إليه.

من خلال مزود المحتوى، يمكن للتطبيقات الأخرى، الإستعلام عن البيانات أو تعديلها، إذا كان موفر المحتوى يسمح بذلك.

على سبيل المثال، يوفر نظام أندرويد “موفر محتوى”، يدير معلومات إتصال المستخدم.

وكذلك، يمكن لأي تطبيق يحمل الأذونات المناسبة، أن يقوم بالإستعلام عن موفر المحتوى، مثل بيانات عقد المتصلين Contacts Contract Data ، لقراءة وكتابة معلومات عن شخص محدد.

من المغري التفكير، في موفر المحتوى كقاعدة بيانات مجردة، نظراً لوجود الكثير من API واجهة برمجة التطبيقات، والدعم المدمج بها لهذه الحالة الشائعة.

 

ومع ذلك، لديها هدف أساسي مختلف، من منظور النظام ، بالنسبة للنظام.

يعتبر موفر المحتوى نقطة دخول، للتطبيق لنشر عناصر “البيانات المسماه”، المعرفه بواسطة مخطط URI.

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

 

هناك بعض الأشياء المحددة التي تسمح للنظام بإدارة تطبيق:

 

1- تعيين URI، لا يتطلب أن يبقى التطبيق قيد التشغيل، لذا يمكن لـURIs أن تستمر بعد الخروج من تطبيقاتها.

النظام يحتاج فقط للتأكد، من أن التطبيق لا يزال قيد التشغيل عندما يتعين عليه، إسترداد بيانات التطبيق من عنوان URI المقابله.

 

2- توفر هذه URIs أيضاً نموذجاً أمنياً هاماً. على سبيل المثال، يمكن للتطبيق وضع عنوان URI لصورة لديه على الحافظه، ولكن يترك موفر المحتوى الخاص به، مقفلاً بحيث لا تتمكن التطبيقات الأخرى من الوصول إليه بحريه.

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

البيانات، من خلال منحه أذونات URI مؤقته، بحيث يتم السماح بالدخول إلى البيانات الموجودة، فقط خلف هذا URI، لكن لا شيء آخر في التطبيق الثاني.

 

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

 يتم تنفيذ موفر المحتوى، كفئة فرعية من ContentProvider و لابد من تنفيذ، مجموعة قياسية من APIs، التي تمكن التطبيقات الأخرى من تنفيذ الإجراءات. لمزيد من المعلومات راجع دليل مطوري موفر المحتوى.

 

يتمثل أحد الجوانب الفريدة في نظام الأندرويد، في إمكانية تشغيل أي تطبيق لمكون خاص بتطبيق آخر.

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

ويمكن لتطبيقك إستخدامه بدلاً من قيامك ببرمجة نشاط لإلتقاط الصور. لست بحاجة لدمجه أو حتى ربطه بكود تطبيق الكاميرا.

بدلاً من ذلك، يمكنك ببساطه، بدء النشاط الذي يلتقط الصور في تطبيق الكاميرا.

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

عندما يبدأ النظام في تشغيل أحد المكونات، فإنه يبدأ عملية هذا التطبيق، إذا لم يكن قيد التشغيل بالفعل، ويقوم بإنشاء الفئات المطلوبة للمكون.

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

لذلك، على عكس تطبيقات معظم الأنظمة الأخرى، لا تحتوي تطبيقات أندرويد، على نقطة دخول واحدة (ليس هناك وظيفة رئيسيه) main() function.

 

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

فإنه لا يمكن لتطبيقك، تنشيط مكون من تطبيق آخر بشكلٍ مباشر. ومع ذلك، يمكن لنظام أندرويد فعل ذلك. لتنشيط أحد المكونات لتطبيق آخر.

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

 

 

 

 

اساسيات التطبيق

 

تنشيط المكونات


ثلاثة أنواع، من العناصر الأربعة – الأنشطة، الخدمات و مستقبلات البث – يتم تنشيطها من خلال رسالة غير متزامنه، تسمى الغرض.

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

يتم إنشاء الغرض بإستخدام، كائن الغرض، والذي يحدد رسالة، إما لتنشيط مكون محدد (غرض صريح)، أو لتنشيط نوع محدد من المكونات (غرض ضمني).

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

وقد تحدد بيانات URI للعمل عليها، من بين أشياء أخرى يحتاج المكون “الذي تم بدء تشغيله” إلى معرفتها.

مثال، الغرض قد ينقل طلب إلى نشاط ما، لعرض صورة أو لفتح متصفح الويب.

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

 

 

 

اساسيات التطبيق

 

مثال

يمكنك نشر غرض، يسمح للمستخدم بإختيار جهة إتصال شخصية وإعادتها إليك.  غرض الإرجاع، يحتوي على URI تشير إلى جهة الإتصال المختارة.

بالنسبة إلى مستقبلات البث، الغرض ببساطة يقوم بتحديد الإعلان الذي يتم بثه.

مثال، يحتوي البث الذي يشير إلى إنخفاض مستوى البطارية، فقط على سلسلة عمل معروفة action string تشير إلى، إنخفاض مستوى البطارية.

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

بدلاً من ذلك، يتم تنشيطها، عند إستهدافها بواسطة طلب من محلل المحتوى ContentResolver.

يقوم محلل المحتوى بمعالجة جميع الإجراءات المباشرة، مع مزود المحتوى. بحيث لا يحتاج المكون، الذي يقوم بالإجراءات مع المزود إلى أغراض.

وبدلاً من ذلك يقوم بإستدعاء، دوال على كائن محلل المحتوى ContentResolverوهذا يترك طبقة تجريدية، بين موفر المحتوى، و مكون طلب المعلومات (لدواعي أمنيه).

 

 

 

 

اساسيات التطبيق

 

 

توجد دوال منفصلة لتنشيط كل نوع من المكونات


  • يمكنك بدء نشاط أو إعطاؤه شيء جديد للقيام به، من خلال تمرير غرض إلى startActivity() أو، startActivityForResult() – (عندما ترغب، في أن يقوم النشاط بإرجاع نتيجه).

 

  • مع إصدار أندرويد 5 (API level 21) أو أحدث، يمكنك إستخدام فئة جدولة عمل لجدولة الإجراءات. بالنسبة لإصدارات أندرويد السابقة، يمكنك بدء خدمة (أو تقديم إرشادات جديدة، إلى خدمة حاليه) بتمرير غرض لبدء الخدمة startService(). يمكنك الربط إلى خدمة، من خلال تمرير غرض إلى bindService().

 

  • يمكنك بدء بث، بتمرير غرض إلى الدوال التاليه sendBroadcast()، أو sendOrderedBroadcast()، أو sendStickyBroadcast().

 

  • يمكنك إجراء إستعلام لموفر محتوى، من خلال إستدعاء إستعلام query() ، على محلل المحتوى ContentResolver.

لمزيد من المعلومات حول إستخدام الأغراض، راجع مستند الأغراض و مرشحات الأغراض.

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

 

 

 

 

اساسيات التطبيق

 

 

ملف الإيضاح


قبل أن يتمكن نظام الأندرويد، من بدء مكون التطبيق، يجب أن يعرف النظام أن المكون موجود.  عن طريق قراءة ملف الإيضاح الخاص بالتطبيق AndroidManifest.xml.

يجب أن يظهر تطبيقك، جميع مكوناته في هذا الملف، التي يجب أن تتواجد في المجلد الأصلي لمشروع التطبيق.

 

 

 

 

اساسيات التطبيق

 

محتويات ملف الإيضاح


يحتوي ملف الإيضاح على عدة أشياء، بالإضافة إلى الكشف عن مكونات التطبيق، مثل ما يلي:

  • يحدد أي “أذونات مستخدم” يتطلبها التطبيق، مثل الوصول إلى الأنترنت أو الوصول إلى جهات الإتصال.

 

  • الإعلان عن الحد الأدنى من مستوى API، الذي يتطلبه التطبيق ليعمل على جهازك، إستناداً إلى APIs التي يستخدمها التطبيق.

 

  • يعلن عن المميزات المطلوبة أو المستخدمة، من قبل التطبيق سواء كانت مكونات الجهاز الماديه hardware أو البرامج software. مثل، الكاميرا، البلوتوث، شاشة اللمس المتعدد.

أساسيات التطبيق

  • الإعلان عن مكتبات API، التي يحتاجها التطبيق ليتم ربطه بها، (بخلاف إطار عمل أندرويد APIs) مثل، مكتبة خرائط قوقل.

 

 

 

اساسيات التطبيق

 

الإعلان عن المكونات


المهمة الأساسية لملف الإيضاح، هي إعلام النظام بمكونات التطبيق. مثال، يمكن لملف الإيضاح أن يعلن عن نشاط على النحو التالي:

 

في عنصر “التطبيق”، تشير سمة android:icon إلى مصادر الأيقونة التي تمثل التطبيق.

في عنصر “النشاط” تحدد سمة android:name، اسم الفئة المناسب تماماً من الفئة الفرعية للنشاط.

 وسمة android:label، تحدد سلسلة لإستخدامها كعلامة المستخدم المرئي للنشاط.

يجب أن تعلن عن جميع، مكونات التطبيق بإستخدام العناصر التالية:

 

الأنشطة، الخدمات، موفري المحتوى الذين قمت بتضمينهم في مصدرك، ولكن لم تقم بالإعلان عنهم في ملف الإيضاح، لن يكونوا

مرئيين للنظام، وبالتالي لا يمكن تشغيلهم أبداً.

مع ذلك، يمكن أن تكون مستقبلات البث إما معلن عنها في ملف الإيضاح، أو تم إنشائها في الكود كعناصر BroadcastReceiver.

 ومسجلة في النظام عن طريق إستدعاء registerReceiver().

لمزيد من المعلومات، حول كيفية تنظيم ملف الإيضاح الخاص بتطبيقك، راجع وثائق ملف الإيضاح.

 

 

 

 

 

اساسيات التطبيق

 

الإعلان عن قدرات المكونات


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

أساسيات التطبيق

يمكنك إستخدام الغرض، عن طريق تسمية “المكون الهدف”، بشكلٍ صريح (بإستخدام اسم فئة المكون) في الغرض.

يمكنك أيضاً إستخدام غرض ضمني، الذي يصف نوع الإجراء المراد تنفيذه. و يمكنك إختيارياً، إختيار البيانات التي ترغب في تنفيذ الإجراء عليها.

يسمح الغرض الضمني، للنظام بإيجاد مكون على الجهاز، يمكنه تنفيذ الإجراء وبدء تشغيله.

لو كانت هناك عدة مكونات، يمكنها تنفيذ الإجراء الموضح في الغرض، فسيقوم المستخدم بإختيار ما يريد إستخدامه منها.

 

 

 

 

اساسيات التطبيق

 

تحذير

 

 تحذير: إذا كنت تستخدم غرض لبدء خدمة، تأكد من أن تطبيقك محمي بإستخدام غرض محدد.

فإستخدام الغرض الضمني لبدء خدمة، يشكل خطراً أمنياً لأنك لن تعرف أي خدمة سوف تستجيب للغرض، ولا يمكن للمستخدم معرفة أي خدمة بدأت.

بدءاً من نسخة أندرويد 5 (API level 21)، يقوم النظام بطرح إستثناء، إذا قمت بإستدعاء ()bindService مع هدف ضمني. لا تعلن عن مرشحات الغرض لخدماتك. 

يحدد النظام المكونات التي يمكنها الإستجابة للغرض، عن طريق مقارنة الغرض المستلم، مع مرشحات الغرض المستهدفه.

والتي تم الإعلان عنها، في ملفات الإيضاح للتطبيقات الأخرى على الجهاز.

عندما تعلن عن نشاط في ملف إيضاح تطبيقك، يمكنك بشكلٍ إختياري، تضمين مرشحات الغرض التي تعلن عن إمكانيات النشاط.

بحيث يمكنه الإستجابة إلى الأغراض في التطبيقات الأخرى. 

يمكنك الإعلان عن مرشح الغرض للمكون الخاص بك، من خلال إضافة عنصر مرشح الغرض، كتابع لعنصر تعريف المكون.

 

 

 

 

اساسيات التطبيق

 

مثال

إذا كنت تنشئ تطبيق للبريد الإلكتروني، يتضمن نشاط لإنشاء رسالة جديدة.

فيمكنك أن تعلن عن، مرشح غرض يستجيب لـ”إرسال” الأغراض (من أجل إرسال بريد إلكتروني جديد)، كما هو موضح في المثال التالي:

 

إذا قام تطبيق آخر بإنشاء غرض، بإستخدام إجراء ACTION_SEND، وتمريره إلى ()startActivity 

 فقد يبدأ النظام نشاطك، لكي يتمكن المستخدم من صياغة وإرسال بريد إلكتروني.

لمعرفة المزيد حول إنشاء مرشحات الغرض، راجع مستند الغرض ومرشحات الغرض.

 

 

 

 

 

اساسيات التطبيق

 

الإعلان عن متطلبات التطبيق


هناك مجموعة متنوعة من الأجهزة، التي تعمل بنظام الأندرويد ولا تتوفر في جميعها نفس الميزات والقدرات.

لمنع تثبيت تطبيقك، على الأجهزة التي تفتقر إلى الميزات التي يحتاج إليها تطبيقك.

من المهم أن تحدد بوضوح، لمحة عن أنواع الأجهزة التي يدعمها تطبيقك، عن طريق تحديد متطلبات الجهاز والبرامج في ملف الإيضاح.

معظم هذه الإعلانات، هي معلوماتية فقط ولا يقوم النظام بقراءتها، ولكن الخدمات الخارجية مثل قوقل بلي.

تقوم بقرائتها من أجل توفير التصفية للمستخدمين عندما يقوموا بالبحث عن التطبيقات من أجهزتهم.

 

مثال

إذا كان تطبيقك يتطلب كاميرا، ويستخدم واجهات برمجة التطبيقات، التي تم تقديمها في أندرويد 2.1 (المستوى 7).

فيجب عليك تعريفها كمتطلبات في ملف الإيضاح، كما هو موضح في المثال التالي:

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

 

ومع ذلك، يمكنك أن تعلن أن تطبيقك يستخدم الكاميرا، ولكنه لا يتطلب ذلك.

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

ثم يقوم بتعطيل أي ميزات خاصة بتطبيق الكاميرا، حسب ما تقتضيه الحاجة.

تتوفر المزيد من المعلومات، حول كيفية إدراة توافق تطبيقك مع الأجهزة المختلفة، في مستند توافق الجهاز.

 

 

 

 

اساسيات التطبيق

 

مصادر التطبيق


تطبيق الأندرويد ليس مجرد كود فقط، فهو يتطلب مصادر منفصلة عن الكود المصدر، مثل الصور، الملفات الصوتيه وأي شيء يتعلق “بالعرض المرئي” للتطبيق.

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

إستخدام مصادر التطبيق، يجعل من السهل عليك تحديث الخصائص المختلفة لتطبيقك، بدون تعديل الكود.

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

لكل مصدر تضيفه في مشروع الأندرويد الخاص بك، تقوم حزمة أدوات SDK بتوفير معرف فريد له، يمكنك إستخدامه، للإشارة إلى المصدر من كود تطبيقك أو من المصادر الأخرى المعرفه في ملف XML.

 

 

 

 

اساسيات التطبيق

 

مثال

 

 إذا كان تطبيقك يحتوي على ملف صورة بأسم logo.png، محفوظة في المسار ( res/drawable/ directory).

فإن حزمة أدوات SDK تقوم بإنشاء “معرف مصدر resource ID” لها، يسمى R.drawable.logo.

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

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

 

على سبيل المثال، من خلال تعريف سلاسل واجهة المستخدم “UI strings“، في ملف XML، يمكنك ترجمة السلاسل.

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

إستناداً إلى، اللغة المؤهله التي تضيفها، إلى أسم مجلد المصدر.  مثل (res/values-fr/) قيمة السلسلة للغة الفرنسية. و إعدادات اللغة الخاصة بجهاز المستخدم.

يدعم نظام الأندرويد، العديد من المؤهلات المختلفة لمصادرك البديله.

فالمؤهل عبارة عن سلسلة قصيرة، تقوم بتضمينها في اسم مجلد المصادر الخاص بك، من أجل تعريف تكوينات الجهاز، لتعرف أي من هذه المصادر يجب إستخدامها.

 

 

 

 

اساسيات التطبيق

 

مثال

 

يجب عليك إنشاء مخططات مختلفة لأنشطتك، إعتماداً على إتجاه الشاشة وحجمها. عندما تكون شاشة الجهاز في إتجاه عمودي،

قد تحتاج إلى إستخدام تخطيط، تكون فيه الأزرار عمودية .

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

مختلفين، ومن ثم تطبيق المؤهل المناسب، لكل “تسمية مجلد مخططات”.

بعد ذلك، يقوم النظام تلقائياً، بتطبيق المخطط المناسب، بناءً على الإتجاه الحالي للجهاز.لمزيد من المعلومات، حول الأنواع

المختلفة من المصادر، التي يمكنك تضمينها في تطبيقك. وكيفية إنشاء مصادر بديلة، لتكوينات الجهاز المختلفة، اقرأ توفير المصادر.

لمعرفة المزيد، حول أفضل الممارسات والتصميمات القوية، تطبيقات ذات جودة عاليه، راجع دليل بنية التطبيق.

 


للإطلاع على المقال باللغة الإنجليزية أضغط هنا.

الإعلانات