أندرويد للمبتدئين مدخل إلى برمجة تطبيقات أندرويد


أحمد النوبي

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

android-programming-intro.png

 

الطبقات الرئيسية المكونة لنظام أندرويد

الصورة التالية توضح الهيكل الداخلي للأندرويد والطبقات الرئيسية المكونة لنظام التشغيل. 

img1 (1).png

ينقسم نظام التشغيل إلى خمس طبقات وظيفتها كالآتي:

طبقة التطبيقات Application Layer (الطبقة العلوية)

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

الطبقة الخاصة ببيئة عمل التطبيقات Application Framework Layer

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

  • View System: وهي مكتبة تحتوي على العناصر اللازمة لإنشاء واجهة المستخدم مثل TextViews و Buttons و Checkboxes و غيرها من العناصر الخاصة بواجهة المستخدم.
  • Notification Manager: تحتوي هذه المكتبة على العناصر اللازمة لإنشاء و إرسال الإشعارات للمستخدم الخاصة بتطبيقك.
  • Telephony Manager: وهي المكتبة المسؤولة عن استقبال و إرسال المكالمات الهاتفية من داخل تطبيقك. 
  • Location Manager: وهي المكتبة المسؤولة عن تحديد المواقع باستخدام GPS Sensors المتواجدة بالهاتف.

أسفل هذه الطبقة سنجد طبقة خاصة تنقسم إلى جزئين:

طبقة المكتبات المطورة بلغة C و ++C (المعروفة باسم Libraries Layer)

وتحتوي هذه الطبقة على مكتبات مكتوبة بلغة C لقدرة لغة C على القيام بالمهام القوية بشكل كفء دون إهدار لموارد النظام. أمثلة على ذلك:

  • SQLite: تستخدم للتعامل مع قواعد البيانات.
  • OpenGL|ES: تستخدم للتعامل مع الرسوميات ثنائية و ثلاثية الأبعاد و تستخدم بشكل أكبر مع ثلاثية الأبعاد.
  • FreeType: تستخدم للتعامل مع أنواع الخطوط المختلفة.
  • Media FrameWork: تستخدم للتعامل مع الصيغ المختلفة لملفات الفيديو.

Android Runtime

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

كما تحتوى على الآلة الافتراضية (Virtual Machine) المسؤولة عن تشغيل التطبيقات والتي تم تطويرها لكي تعمل على الهواتف المحمولة وتتميز باستهلاكها القليل للموارد من الذاكرة العشوائية والمعالج وبطارية الهاتف وتسمى بـ Dalvik Virtual machine.

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

طبقة النواة (Kernel)

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

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

إصدارات أندرويد

قبل البدء بتطوير التطبيقات ينبغي علينا معرفة ما هي إصدارات أندرويد، سأقوم سريعًا بذكر كافة إصدارات أندرويد المختلفة ورقم الإصدار ورقم الـ API الخاص بها.

  • Cupcake 1.5 API 3
  • Dount 1.6 API 4
  • Eclair 2.0 API 5
  • Froyo 2.2 API 8
  • Gingerbread 2.3.3 API 10
  • Honeycomb 3.0 API 11
  • Ice Cream sandwich 4.0 API 14
  • Jellybean 4.1 API 16
  • Kitkat 4.4 API 19
  • Lollipop 5.0 API 22
  • Marshmallow 6.0 API 23

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

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

img2 (1).png

لكل إصدار من إصدارات أندرويد مزايا خاصة أُضيفت له لم تكن متوافرة في الإصدارات الأقدم، ولكي تستطيع بناء هذه المزايا في تطبيقك ينبغي اختيار الإصدار الأدنى المناسب لمزايا تطبيقك لأنك تستطيع دعم المزايا الخاصة بالإصدار الأدنى فقط، لذا كلما قمنا بدعم إصدارات أقدم كلما فقدنا المزايا الحديثة وفي المقابل نحصل على عدد مستخدمين أكثر وإذا قمنا بدعم أحدث الإصدارات سوف نحصل على مزايا أكثر وعدد مستخدمين أقل. لذا سنختار الحد الأدنى الذي سنحتاجه من المزايا دون خسارة عدد المستخدمين، وإصدار Jellybean يتيح لك مزايا جيدة واستهداف عدد مستخدمين أكبر لأن تطبيقك سيعمل على كل من Jellybean و kitkat و lollipop و marshmallow وما سيأتي بعد ذلك من إصدارات أحدث وهو كما يتضح في الرسم البياني السابق أكثر من 90% من مستخدمي أندرويد، ولكنه لن يعمل على أي هاتف يعمل بإصدار أقدم من Jellybean.

المتطلبات للبدء ببرمجة تطبيقات أندرويد

كل ما تحتاجه هو حاسوب يعمل بأي نظام من أنظمة التشغيل الرئيسية -ويندوز أو لينكس أو ماك- لتبدأ معنا هذه الدروس.

لا يوجد حاجة لمعرفة سابقة بلغة برمجة فسنتعلم معاً ما نحتاج إليه.

هذه الدروس موجهة بشكل أساسي للمبتدئين.

البرامج التي سنعمل عليها خلال الدروس القادمة:

  1. JDK
  2. Android Studio

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

ملاحظة: ينبغي تثبيت JDK أولاً قبل البدء في تثبيت Android Studio حيث أنه يحتاج إليه عند التثبيت.

إنشاء مشروع جديد

الآن بعد الانتهاء من تثبيت البرامج اللازمة لتطوير تطبيقات أندرويد دعنا نُنشئ مشروعنا الأول وهو مشروع "أهلاً بالعالم Hello World".

  1. قم بفتح برنامج Android Studio واختر Start a new android studio project من القائمة.

img3.png

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

img4.png

  1. اختر تطوير التطبيق من أجل Phone and Tablet ثم اختر إصدار Jellybean كإصدار أدنى كما ذكرنا سابقًا.

img5.png

  1. اختر Blank Activity ثم أضغط Next.

img6.png

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

img7.png

  1. تم إنشاء أول مشروع لك بنجاح.

img8.png

ملفات ومجلدات المشروع

دعنا الآن نستعرض بيئة التطوير وما توفره لنا كمطورين من مزايا.

على اليسار هناك ثلاثة ملفات / مُجلّدات رئيسية تكونت تلقائياً بداخل app وهي:

  • manifests
  • java
  • res

مجلد manifest

والذي يحتوي على ملف AndroidManifest.xml ويعتبر هذا الملف مهم جداً لنظام أندرويد لما يقدمه من معلومات أساسية للنظام قبل أن يقوم بتشغيله، أبرز هذه المعلومات:

  • يحتوي على اسم الحزمة Package Name: وهو اسم مميز للتطبيق لتمييزه عن باقي التطبيقات المتواجدة على الهاتف ، فمثلاً إن كان اسم تطبيقك Gallery و هناك تطبيق آخر على الهاتف يسمى Gallery كيف يستطيع النظام التفرقة بين صلاحيات كل منهما و معلوماتهما الخاصة؟
    يقوم النظام بتمييزهما عن طريق Package Name لذا فهو يعتبر اسمًا مُميّزًا لتطبيقك لا ينبغي أن يتشابه مع Package Name لأي تطبيق آخر ، من أجل ذلك وضعت قواعد لتسمية الـ Package أهمها هو أن تجعل تطبيقك على هيئة اسم نطاق لموقعك - إن وجد – فمثلا نجد شركة Google عند تسمية حزم تطبيقاتها تستخدم com.google.appName فيكون لها اسم حزمة Package Name فريد لا يتكرر.

ملحوظة: يتم تحديد Package Name عند إنشاء التطبيق في الخانة الخاصة بالـ Company Domain.

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

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

مجلد java

يختص هذا المُجلّد بالشيفرة التى سنكتبها للتطبيق و هي الشيفرة الذى يحدد وظيفة التطبيق و استجابة الواجهة و تنفيذها للأوامر.

مجلد res

و يهتم هذا المُجلّد بكل الموارد التي يتعامل معها التطبيق من صور و عناصر مكونة لواجهة المستخدم و عناصر مكونة للقوائم ويتكون من مجموعة من المجلّدات المرتبة كالآتي:

  • drawable ويخص هذا المُجلد كافة الصور التي سيتم استخدامها في التطبيق.
  • layout ويخص هذا المجلد بالتصميم الخاص بواجهة المستخدم و ما تحتويه من عناصر مختلفة.
  • menu ويخص هذا المجلد بالقوائم و ما تحتويه من عناصر.
  • mipmap ويخص هذا المجلد بالأيقونة الخاصة بالتطبيق فقط.
  • values ويحتوى هذا المجلد على ملفات أخرى لكل منها وظيفة مختلفة و لكنها تشترك في فكرة عامة واحدة وهي جعل التطبيق أكثر مرونة لدعم دقة الشاشات المختلفة و الأحجام المختلفة ودعم اللغات المختلفة كما سنرى لاحقا في الدروس القادمة.

المحاكي Simulator

كما تتميز بيئة تطوير Android Studio بأنها بيئة تطوير متكاملة وتحتوي على ما يحتاجه المطور من أدوات لصنع تطبيق أندرويد فكما رأينا فهي تحتوي على مستعرض للمشروع وملفاته وتحتوي على المترجم الخاص والذي يحول الشيفرة إلى صيغته التنفيذية والتي تعمل على الهواتف وأيضاً تحتوي على محاكي للهواتف والحواسيب اللوحية ونستطيع تجربته عن طريق الضغط على (AVD (Android Virtual Device من داخل Android Studio في شريط القوائم وسنجد أنه تلقائياُ لديه هاتف جاهز للعمل.

كما يمكنك أن تقوم بصنع محاكي آخر عن طريق الضغط على Create Virtual Device.

img9.png

الآن قم بتشغيل المحاكي و انتظر حتى يعمل كالتالي.

img10.png

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

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

img11.png

ثم اختر المحاكي وأضغط ok.

ستجد التطبيق يعمل الآن على المحاكي.

img12.png

ملحوظة: عند إنشاء أي مشروع داخل بيئة عمل Android Studio يقوم تلقائياً بإنشاء مشروع يعرض فقط كلمة !Hello World أمام المستخدم وهو الذي شاهدناه في الصورة السابقة حيث أننا لم نقوم بتغيير أي شيء في المشروع الأصلي.

بهذا نكون قد وصلنا إلى نهاية أول دروسنا من هذه السلسة وإلى لقاء قريب بإذن الله، في انتظار تجربتكم وما مررتم به من مشاكل إن وجدت.



10 اشخاص أعجبوا بهذا


تفاعل الأعضاء


السلام عليكم

بارك الله فيكم على الشرح الأكثر من وافي

هل يمكنني  متابعة العمل بنسخة 1.5 

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية
بتاريخ On 4/6/2016 at 21:00 قال صالح السوفي:

السلام عليكم

بارك الله فيكم على الشرح الأكثر من وافي

هل يمكنني  متابعة العمل بنسخة 1.5 

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

1-إذا كنت تقصد نسخة الأندرويد 1.5 CupCake فلا يمكنك العمل عليها إذ أنها لم تعد تستخدم من قبل أي هاتف ذكي، وبحسب آخر إحصائيات[1] من Google لنسبة كل نسخة فالحد الأدنى المتواجد حاليا هو Froyo 2.2 وقاربت على الزوال.
ويمكنك العمل على ما تريد من نسخ الأندرويد ولكن ستفقد مميزات الأندرويد التي أعتدنا عليها ولن تستطيع تفعيلها داخل تطبيقك. كما سيكون هناك دروس قادمة تحتاج إلى نسخ حديثة لكي يعمل التطبيق.
 

2-إذا كنت تقصد نسخة 1.5 من Android Studio فنعم يمكنك العمل عليها، ويُنصح بالترقية للنسخة 2.0 والتي تم الإعلان عنها مؤخرًا.

[1] http://developer.android.com/about/dashboards/index.html

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية

ما صدته هو الجزء الثاني من اجابتك بارك الله فيك استاذنا الكريم

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

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية

أخي أشكرك بشدة على هذه الدورة الأكتر من رائعة ..  تطرقت لجميع الملفات التي تكون التطبيق لكن لم تتطرق لملف رئيسي ألا و هو Gradle script !! لذالك أتمنى أن تعطينا معلومات أوفر حول هذا الملف .. دوره و اهميته  و هل سيحدت مشكل إذا لم يتوفر في أحد مشاريع التطبيقات ! 

 

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية

سؤالي التاني .. لماذا عندما أقوم بإستدعاء أحد المشاريع الكاملة لأحد الأكود الجاهزة للتطبيقات ,  لا يتم توليد ملف Gradle script  +  تختلف صيغة ترتيب الملفات عن تلك المعهودة عندما نقوم بإنشاء مشروع من البداية .. المرجو أن توضح لي هذا الأمر !   و شكرا على مجهوداتك !   :) 

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية

السلام عليكم ورحمة الله وبركاته ..

أولا اود شكرك علي مجهودك الاكثر من رائع الذي تبدله في هذه الدورة وانا من المتطلعين لان اكون من مبرمجي الاندرويد ولكن واجهتني مشكله لم استطع حلها مع برنامج الاندرويد استديو

عند فتح التطبيق لاول مرة تواجهني هذه المشكله 

قمت بحذف البرنامج وتركيبه من جديد ولكن نفس المشكه 

Ashampoo_Snap_2016.10.13_18h23m03s_002_.png

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية

جاري تلخيص الدرس

تمّ تعديل بواسطة صالح السوفي

شارك هذا التعليق


رابط هذا التعليق
شارك على الشبكات الإجتماعية


يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن