أندرويد (Android) هو نظام تشغيل مفتوح المصدر مبني على لب نظام اللينكس Linux kernel. تم بناؤه في بداية الأمر لكي يعمل على أجهزة الهاتف الذكية المدعّمة بتقنية اللمس، ثم تم تطويره تدريجياً لكي يعمل على الأجهزة اللوحية. حالياً، أصبح نظام الأندرويد موجوداً في العديد من الأجهزة؛ وعلى سبيل المثال لا الحصر: الساعات، النظارات، أجهزة التلفاز، منصات الألعاب، أجهزة حاسوبية، … إلخ. هنا قائمة بالأجهزة التي تعمل بنظام الأندرويد:
http://en.wikipedia.org/wiki/Comparison_of_Android_devicesفي 2005، قامت قوقل (Google) بشراء نظام الأندرويد من شركة ناشئة .Android, Inc والتي أنشئت عام 2003. قامت قوقل بالإعلان عن هذا النظام عام 2007. في 23 سبتمبر من عام 2008، تم إصدار أول نسخة من النظام. في 22 أكتوبر من عام 2008، تم إصدار أول هاتف ذكي يعمل على نظام الأندرويد
– تركيبة نظام الأندرويد:
يتكون نظام الأندرويد من 4 طبقات
1- طبقة الـ Linux Kernel: الـ kernel المستخدم في نظام الأندرويد يسمى Monolithic، وهو نسخة معدلة من الـ Linux kernel. تحتوي هذه الطبقة على drivers وهي عبارة عن modules مسؤولة عن التواصل مع عتاد الجهاز (hardware). بالإضافة إلى الـ drivers modules، يوجد module خاص بالـ power management.
2- طبقة الـ Middleware: وهذه الطبقة تحتوي على Android runtime و libraries، وتم تطوير غالبية هذه الطبقة بـ ++C/C:
أ. الـ Android runtime: هذا الجزء مشابه لبيئة الجافا، ولكن بدلاً عن آلة الجافا الافتراضية (JVM)، يحتوي هذا الجزء على آلة افتراضية تم تطويرها خصيصاً لتتناسب مع محدودية إمكانيات أجهزة الهواتف المحمولة حيث تستهلك أقل كمية ممكنة من الطاقة وتعمل بكفاءة مع ذاكرة عشوائية (RAM) صغيرة الحجم ومعالج (CPU) أقل سرعة من الموجود في أجهزة الحواسيب الم
كتبية والمحمولة. تسمى هذه الآلة الافتراضية بآلة دالفِك (Dalvik VM). بالإضافة للآلة الافتراضية، نجد الم
كتبات الأساسية (Class Library) وهي ذاتها م
كتبات منصة الجافا Java SE ولكن الـimplementation ليس Hotspot (الخاص بشركة Oracle، وهذا هو الشائع والذي يستخدمه الأغلبية في الجافا) بل نسخة أخرى تسمى Apache Harmony. ولأن نظام الأندرويد كان موجه لأجهزة الهواتف الذكية، فقد تم إزالة بعض الم
كتبات الخاصة بأنظمة سطح الم
كتب مثل AWT و Swing.
ب. الـ libraries: م
كتبات مساندة تم تطويرها بـ ++C/C. من أهم هذه الم
كتبات:
Surface Manager: هذه الم
كتبة هي حلقة الوصل بين تفاعل المستخدم مع الشاشة وبين الم
كتبة Window Manager الموجودة في الطبقة العلوية.
Media Framework: توفر العديد من الكوديك (codec) اللازمة لتشغيل وتسجيل الـ media من فيديو وأصوات.
SQLite: عبارة عن database engine للتعامل مع قواعد البيانات من نوع SQLite.
OpenGL ES: تستخدم هذه الم
كتبة للتعامل (rendering) مع الرسوميات 2D و 3D.
FreeType: م
كتبة للتعامل مع الخطوط (Fonts).
WebKit: عبارة عن web browser engine يستخدم لعرض صفحات الإنترنت.
SGL: اختصاراً لـ “Scalable Graphics Library” وهي م
كتبة تستخدم أيضاً للتعامل (rendering) مع الرسوميات 2D و 3D.
SSL: تستخدم لدعم الاتصال عبر بروتوكول الـ SSL.
libc: نظام الأندرويد يستخدم نسخة خاصة من م
كتبات
لغة السي تسمى Bionic بدلاً من BSD’s standard C library، وذلك حتى تتناسب مع إمكانيات أجهزة الهواتف المحدودة.
3- طبقة الـ Application Framework: هذه الم
كتبات صُممت خصيصاً لنظام الأندرويد، وهي عبارة عن APIs تستخدم من قبل مطوري الأندرويد لاستغلال موارد النظام. من ضمنها:
Activity Manager: وظيفته التواصل مع الـ activities التي تعمل بالنظام. [سيتم
شرح الـ Activity بالتفصيل في درس لاحق]
Windows Manager: هو المسؤول عن إنشاء وتنظيم النوافذ بالشاشة، وذلك بالتواصل مع الـ Surface Manager.
Content Providers: إدارة عملية مشاركة البيانات بين ال
تطبيقات. [سيتم
شرح الـ Content Providers بالتفصيل في درس لاحق]
View System: يحتوي على العناصر المكونة لواجهة المستخدم (UI) من buttons وغيرها. بالإضافة إلى خصائص هذه العناصر مثل event handlers.
Notification Manager: يستخدم لإرسال إشعارات للمستخدم.
Package Manager: يستخدم لجلب معلومات عن ال
تطبيقات، مثل رقم الإصدار وأيضاً التصاريح التي لدى ال
تطبيق.
Telephony Manager: يستخدم للتحكم بالمكالمات الصوتية والتفاعل معها.
Resource Manager: يستخدم للوصول إلى الموارد المرفقة مع ال
تطبيق كالصور والنصوص وغيرها.
Location Manager: يستخدم للتفاعل مع الـ GPS لتحديد ال
موقع الحالي للمستخدم.
XMPP Service: كانت موجودة في الإصدارات الأولية من نظام الأندرويد، وكانت تستخدم فقط لخدماتGoogleTalk (والتي تم استبدالها لاحقاً بخدمة Google+ Hangout)، ولكن تم إلغاؤها لأسباب أمنية (security issues).
4- طبقة الـ Applications: وهذه الطبقة تحتوي على
تطبيقات الأندرويد، سواء كانت
تطبيقات موجودة مسبقاً في النظام (built-in) مثل
تطبيق الأسماء (Contacts)، و
تطبيق الاتصال (Phone)، و
تطبيق الواجهة الرئيسية (Home)، أو ربما
تطبيقات يتم تطويرها من قبل الشركة المصنعة لجهاز الهاتف الذكي، وقد يستبدلون ال
تطبيقات الموجودة في النظام الخام ب
تطبيقات معدلة، لذلك ستجد إختلاف بين
تطبيقات أجهزة الـ Samsung وبين
تطبيقات أجهزة الـ HTC، مثلاً. أيضاً، هذه الطبقة تحتوي على ال
تطبيقات التي يتم تنزيلها من متجر Play، وهو المتجر الرسمي ل
تطبيقات الأندرويد.
– إصدارات نظام الأندرويد:
تعطي شركة قوقل اسماً مميزاً (codename) مع كل إصدار من نظام الأندرويد، وعادةً يكون الاسم له علاقة بالحلويات. هنا قائمة بإصدارات نظام الأندرويد:
الإصدار 1.0: بدون اسم – API 1 – أصدر في 23/9/2008.
الإصدار 1.1: بدون اسم – API 2 – أصدر في 9/2/2009.
الإصدار 1.5: يسمى Cupcake الكعك – API 3 – أصدر في 30/4/2009.
الإصدار 1.6: يسمى Donut الدونات – API 4 – أصدر في 15/9/2009.
الإصدار 2.0: يسمى Eclair الإكلير – API 5 – أصدر في 26/10/2009.
الإصدار 2.0.1: يسمى Eclair الإكلير – API 6 – أصدر في 3/12/2009.
الإصدار 2.1: يسمى Eclair الإكلير – API 7 – أصدر في 12/1/2010.
الإصدارات 2.2 و 2.2.1 و 2.2.2 و 2.2.3: تسمى Froyo الفرويو – API 8 – أصدرت في 20/5/2010 و 18/1/2011 و 22/1/2011 و 21/11/2011.
الإصدارات 2.3 و 2.3.1 و 2.3.2: تسمى Gingerbread خبز الزنجبيل – API 9 – أصدرت في 6/12/2010 و 12/2010 و 1/2011.
الإصدارات 2.3.3 و 2.3.4 و 2.3.5 و 2.3.6 و 2.3.7: تسمى Gingerbread خبز الزنجبيل – API 10 – أصدرت في 9/2/2011 و 28/4/2011 و 25/7/2011 و 2/9/2011 و 21/9/2011.
الإصدار 3.0: يسمى Honeycomb قرص العسل – API 11 – أصدر في 22/2/2011.
الإصدار 3.1: يسمى Honeycomb قرص العسل – API 12 – أصدر في 10/5/2011.
الإصدارات 3.2 و 3.2.1 و 3.2.2 و 3.2.3 و 3.2.4 و 3.2.5 و 3.2.6: تسمى Honeycomb قرص العسل – API 13 – أصدرت في 15/7/2011 و 20/9/2011 و 9/2011 و 9/2011 و 12/2011 و 1/2012 و 2/2012.
الإصدارات 4.0 و 4.0.1 و 4.0.2: تسمى Ice Cream Sandwich ساندويتش الآيس كريم – API 14 – أصدرت في 19/10/2011 و 21/10/2011 و 28/11/2011.
الإصدارات 4.0.3 و 4.0.4: تسمى Ice Cream Sandwich ساندويتش الآيس كريم – API 15 – أصدرت في 16/12/2011 و 29/3/2012.
الإصدارات 4.1 و 4.1.1 و 4.1.2: تسمى Jelly Bean جيلي بين – API 16 – أصدرت في 9/7/2012 و 23/7/2012 و 9/10/2012.
الإصدارت 4.2 و 4.2.1 و 4.2.2: تسمى Jelly Bean جيلي بين – API 17 – أصدرت في 13/10/2012 و 27/10/2012 و 11/2/2013.
الإصدارات 4.3 و 4.3.1: تسمى Jelly Bean جيلي بين – API 18 – أصدرت في 24/7/2013 و 3/10/2013.
الإصدارات 4.4 و 4.4.1 و 4.4.2: تسمى KitKat كتكات – API 19 – أصدرت في 31/10/2013 و 5/12/2013 و 9/12/2013.
لاحظ بأنه مع كل إصدار جديد لنظام الأندرويد، يتم إضافة بعض الميزات الجديدة على الإصدار السابق. لذلك لا يمكن استخدام ميزات الإصدار 4.4 مثلاً عند التطوير بم
كتبات الإصدار 2.2. لحسن الحظ، قامت قوقل بتطوير م
كتبة خارجية (ملف jar.) تسمى Android Support Library وتستخدم لإضافة مميزات جديدة على الأنظمة القديمة. لاحظ أيضاً بأنه عند برمجة
تطبيق بم
كتبات الإصدار 4.3 مثلاً، فإنه لا يمكن تشغيل ال
تطبيق على إصدار سابق له (الإصدار 4.0 مثلاً)، ولكن يمكن تشغيل ال
تطبيق على الإصدار 4.4 مثلاً.