مقدمه:
اندروید یک سیستم عامل موبایل است که بر اساس نسخهی تغییر یافتهی لینوکس بنا نهاده شده است. کلمه اندروید به معنای ربات انسان نما است. این سیستم عامل در اصل توسط شرکتی با همان نام یعنی Android Inc. در سال 2005 بعنوان بخشی از استراتژی ورود به فضای موبایل ایجاد شد و سپس توسط گوگل خریداری شد و بدین ترتیب گوگل سرپرستی کار توسعه و تیم توسعهی اندروید را به¬عهده گرفت. پروژه اندروید در سال ۲۰۰۷ به موازات معرفی اتحادیه گوشی¬های اپن سورس از طرف گوگل، به¬طور جدی پیگیری شد. این اتحادیه شامل شرکت¬های نرم افزاری، سخت افزاری و ارتباطی مثل ال¬جی، سامسونگ، موتورولا، اچ¬تی¬سی، انویدیا… و البته گوگل بود. اولین نسخه اندروید در اکتبر سال ۲۰۰۸ منتشر شد. در سال ۲۰۱۲، ۵۰۰ میلیون گوشی اندرویدی در دنیا فعال بوده و هست. گوگل قصد داشت تا اندروید باز و رایگان باشد و به همین علت، قسمت اعظم کد اندروید تحت لیسانس اوپنسورس Apache انتشار پیدا کرد. یعنی هر کسی که بخواهد از اندروید استفاده کند، میتواند این کار را با دانلود سورس کد کامل اندروید انجام دهد. بعلاوه، سازندگان (معمولاً تولید کنندگان سختافزار) قادرند تا اضافات اختصاصی خود را به اندروید اضافه کرده و آن را سفارشی کنند تا محصولاتشان با دیگر سازندگان متفاوت باشد.
اکتبر سال 2008 اولین گوشی موبایل با سیستم عامل اندروید
HTC G1
اندروید بر خلاف سیستم عامل iOS آیفون که فقط پردازنده های ARM را پشتیبانی می¬کند، بر روی انواع مختلفی از پردازنده¬ها (ARM, MIPS, Power Architecture, x86) قابل نصب است. از سال ۲۰۰۸ تاکنون تلفن¬های همراه متعددی با استفاده از این سیستم عامل به بازار ارائه شده¬اند. اندروید دارای کتابخانه¬های برنامه¬نویسی قدرتمندی است که کار برنامه¬نویسان را بسیار ساده می-کند. از جمله دیتابیس رابطه¬ای کوچک شدهیSQLite ، توابع گرافیکی ۳ بعدیopenGL ، موتور مرورگر webkit (همانند مرورگر کروم) و موتور گرافیکSGL . در واقع اندروید مجموعه¬ای از نرم افزارهای (software stack) موبایل است که شامل سیستم عامل، middleware ها و برنامه¬های کلیدی (key applications) است. اندرویدSDK (در واقع SDK مخفف واژگان Software Development Kit به معنی پکیج توسعه نرم افزار می¬باشد)، ابزارها و API های لازم برای شروع برنامه نویسی بر روی پلتفرم اندروید با زبان برنامه نویسی جاوا را مهیا کرده است.
خصوصیات:
چارچوب برنامه Application framework) امکان استفاده مجدد و جایگزینی کامپوننت¬ها را فراهم می¬کند.
ماشین مجازی دالویک Dalvik virtual machine) وظیفه بهینه سازی کدها برای اجرا بر روی موبایل را دارد.
مرورگر داخلی Integrated browser) منطبق بر موتور WebKit منبع باز
گرافیک بهینه شده Optimized graphics) قدرت گرفته از کتابخانه 2D، گرافیک 3D منطبق بر OpenGL ES 1.0 (شتاب دهنده سخت افزاری)
:SQLite برای ذخیره اطلاعات
پشتیبانی از رسانه Media support) با پشتیبانی از فرمت¬های رایج صوتی، ویدئویی و عکس MPEG4, H.264, MP3) (AAC, AMR, JPG, PNG, GIF
مکالمات تلفنی GSM Telephony) (وابسته به نوع سخت افزار)
Bluetooth, EDGE, 3G, WiFi: (وابسته به نوع سخت افزار)
دوربین، GPS، قطب نما و شتاب سنج: (وابسته به نوع سخت افزار)
محیط توسعه غنی Rich development environment) شامل امولاتور، ابزارهای دیباگ کردن، پروفایل کردن حافظه و پلاگین برای محیط توسعه اکلیپس
معماری اندروید:
تصویر زیر لایه ها و کامپوننت های اصلی سیستم عامل اندروید را نشان میدهد. نرم¬افزارهای جانبی اندرویدی با استفاده از زبان جاوا نوشته می¬شوند و برای ارتباط با لایه¬های زیرین سیستم¬عامل می¬توانند از کتابخانه¬های جاوایی اندروید استفاده کنند.
بخش رابط کاربری سیستم عامل اندروید با زبان جاوا نوشته شده است و بسیاری از برنامه¬ها نیز با جاوا نوشته شده¬اند. اندروید به همراه بسته¬های مختلفی از جملهemail client, SMS program, calendar, maps, browser, contacts, and others ارایه می-شود. تمام این برنامه¬ها با استفاده از زبان برنامه نویسی جاوا نوشته شده¬اند. اما این سیستم عامل، Java Virtual machine ندارد. برای اجرای برنامه¬های جاوایی روی این سیستم عامل، کدهای جاوا به کدهای Dalvik تبدیل می¬شوند و سپس روی Dalvik virtual machine اجرا می¬شوند. (دالویک یک ماشین مجازی جاوایی است که برای سیستم عامل اندروید بهینه شده است تاRAM و CPU و باتری کمتری مصرف کند). برنامه¬های جاوایی معمولی هم که روی گوشی¬های دیگر اجرا می¬شوند با استفاده از نرم افزارهای شبیه ساز ماشین مجازی جاوا مانند j2ME MIDP Runner روی این سیستم عامل قابل اجرا هستند. برنامه نویسان C و C++ می توانند با استفاده از NDK (Native Development Kit) اقدام به توسعه اپلیکیشن¬های اندروید با استفاده از زبان های دیگر کنند.
چارچوب برنامه Application Framework)
با فراهم آوردن پلتفرم توسعه باز (open development platform)، اندروید برنامه سازان را قادر کرده است تا برنامه¬های کاربردی خلاقانه و غنی برای این پلت¬فرم فراهم سازند. توسعه دهندگان آزادی کامل دارند تا از ویژگی¬هایی مانند دسترسی به سخت افزار، دسترسی به اطلاعات محلی (موقیت جغرافیایی)، اجرای سرویس¬های پس¬زمینه (background services)، تنظیم زنگ ساعت، اضافه کردن اطلاعیه¬ها (notifications) به نوار وضعیت و بسیاری دیگر در برنامه¬هایی که می¬سازند، استفاده کنند.
توسعه دهندگان دسترسی کامل به همان چارچوب APIهایی دارند که برنامه¬های هسته (the core applications) دارند. معماری برنامه¬های کاربردی (The application architecture) به منظور ساده سازی استفاده مجدد از کامپوننت¬ها طراحی شده است. هر برنامه¬ای می¬تواند قابلیت¬های خود را در اختیار دیگر برنامه¬ها قرار دهد و همچنین از قابلیت¬های دیگر برنامه¬ها استفاده کند (البته به محدودیت¬های امنیتی چارچوب هم بستگی دارد). این طرزکار مشابه به کاربر اختیار تعویض و جایگزینی کامپوننت¬ها را می¬دهد.
• برنامههای کامپایل شده در فایلهایی با پسوند(android package file) apk ذخیره میشوند.
• هر برنامهای در سندباکس (SandBox) جداگانهای اجرا می¬شود که از بقیهی برنامهها ایزوله است و هر برنامه در پروسهی لینوکسی خودش اجرا میشود.
• هر برنامهای شامل فایلهای جزئی(component)، فایلهای ظاهری (manifest) و منابع (resources) است.
• فایلهای جزئی شامل :
• فعالیت(Activities) : شامل صفحه فعال در برنامه می¬باشد (مرتبط با UI).
• خدمات(Services) : فعالیت¬های در حال انجام در پس زمینه می¬باشد که پارامتر بصری ندارند (بدون UI).
• ارائه دهندهی محتواcontent provider) وظیفه تامین اطلاعات مورد نیاز برنامه را از دیتابیس¬ها بر عهده دارد.
• گیرنده پخشbroadcast receiver) پیغام¬های سیستم یا برنامه را دریافت می¬کند تا در صورت نیاز تغییرات خواسته شده را اعمال کند.
intend ها نیز از موارد مهم در برنامه نویسی می¬باشند. intend ها به برنامه اجازه می¬دهد تا از service ها استفاده کنند یا مجوز استفاده از سرویس¬ها را به برنامه می¬دهد. هر برنامه¬ای یک نمایه خاص دارد ( user interfaceیا به اختصار UI ) وقتی پروژه¬ای در eclipse تعریف می¬شود فایلی در پوشه layout ایجاد می¬شود به نام main.xml که در آن می¬توان صفحه اصلی را طراحی کرد (با فرمتxml ).
برنامه¬های زیربنایی، مجموعه¬ای از سرویس¬ها و سیستم¬های زیر هستند:
مجموعه قابل گسترشی از View ها که برای ساخت برنامه¬های کاربردی استفاده می¬شوند، مانند lists, grids, text boxes buttons, and even an embeddable web browser Content Providers، که برنامه¬ها را قادر می¬سازد تا به اطلاعات برنامه¬های دیگر مانند لیست تماس، دسترسی پیدا کنند یا حتی اجازه دسترسی به اطلاعات خود را به برنامه¬های دیگر دهند.
یک مدیر منابع (Resource Manager) اجازه دسترسی به منابعی که کد-برنامه نیستند را فراهم می¬کند مانند دسترسی به رشته-های محلی (localized strings)، تصاویر و فایل¬های مربوط به طرح برنامه .(layout files)
یک مدیر اطلاعیه (Notification Manager)، که از این طریق برنامه¬ها را قادر میکند تا هشدارهای خود را در نوار وضعیت نشان دهند.
یک مدیر فعالیت(Activity Manager) ، که مدیریت چرخه زندگی (lifecycle) برنامه¬ها را در دست دارد و به نحوه اجرای برنامه¬ها نظارت می¬کند.