موضوع مقاله: توسعه نرم‌افزار اندروید | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # توسعه نرم‌افزار اندروید | مقدمه: توسعه نرم‌افزار اندروید فرایندی است که به وسیلهٔ آن اپلیکیشن‌های جدید برای سیستم عامل اندروید ایجاد می‌شوند. | ## بخش 1: توسعه نرم‌افزار اندروید | اپلیکیشن‌ها معمولاً با استفاده از Android SDK به زبان برنامه‌نویسی جاوا توسعه می‌یابند، ولی محیط‌های توسعهٔ دیگری نیز وجود دارند. این ابزارها شامل دیباگر (ابزار اشکال‌زدا)، کتابخانه‌ها، شبیه‌سازی تلفن همراهِ مبتنی بر QEMU، مستندات، کد نمونه و خودآموزها می‌شود. در حال حاضر پلتفرم‌های توسعهٔ پشتیبانی‌شده شامل کامپیوترهایی می‌شوند که لینوکس (هر نوع توزیع مدرن دسکتاپ لینوکس)، Mac OS X 10.5.8 به بعد و ویندوز ۷ (قبلاً XP) یا نسخه‌های بعد آن را اجرا می‌کنند. از مارس ۲۰۱۵، SDK در خود اندروید موجود نیست، ولی توسعه نرم‌افزار با استفاده از اپلیکیشن‌های تخصصی اندروید امکان‌پذیر است. این SDK همچنین نسخه‌های قدیمی‌تر پلتفرم اندروید را در مواردی پشتیبانی می‌کند که توسعه‌دهندگان تمایل دارند اپلیکیشن‌های خود را در دستگاه‌های قدیمی‌تر نیز مد نظر داشته باشند. ابزارهای توسعه در واقع کامپوننت‌های قابل دانلود هستند، بنابراین بعد از این که آخرین نسخه و پلتفرم دانلود شد، پلتفرم‌های و ابزارهای قدیمی نیز می‌توانند برای تست سازگاری دانلود شوند. اپلیکیشن‌های اندروید در فرمت .apk بسته‌بندی می‌شوند و در پوشه /data/app در سیستم عامل اندروید ذخیره می‌گردند (این پوشه به دلایل امنیتی فقط توسط کاربران روت (ریشه) دسترسی‌پذیر است). بستهٔ APK حاوی فایل‌های .dex (فایل‌های بایت‌کد کامپایل‌شده تحت عنوان فایل‌های اجرایی دالویک)، فایل‌های منبع و غیره است. این تولکیت حاوی برنامه‌های سمت کلاینت و سمت سرور است که با یکدیگر ارتباط برقرار می‌کنند. ADB عموماً از طریق رابط خط فرمان قابل دسترسی است، گرچه رابط‌های گرافیکی بی‌شماری برای کنترل ADB در دسترس هستند. فست‌بوت یک پروتکل تشخیصی است که در بستهٔ SDK قرار دارد و اصولاً برای تغییر فایل سیستم فلش از طریق ارتباط USB از کامپیوتر میزبان به کار می‌رود. بعد از فعال کردن پروتکل در خود دستگاه، مجموعهٔ به‌خصوصی از فرمان‌های ارسال شده به آن از طریق USB را با استفاده از خط فرمان می‌پذیرد. تعدادی از رایج‌ترین فرمان‌های فست‌بوت شامل موارد زیر می‌شوند: flash – از طریق ایمج باینریِ ذخیره‌شده در کامپیوتر میزبان پارتیشن را از نو می‌نویسد. reboot – دستگاه را در یکی از محیط‌های سیستم عامل اصلی، پارتیشن بازیابی سیستم یا بوت‌لودر راه‌اندازی مجدد می‌کند. | ## بخش 2: توسعه نرم‌افزار اندروید | devices – لیستی از تمام دستگاه‌های (همراه با شماره سریال) متصل به کامپیوتر میزبان را نمایش می‌دهد. format – پارتیشن به خصوصی را فرمت می‌کند؛ سیستم فایل این پارتیشن باید توسط دستگاه شناسایی شده باشد. اپلیکیشن‌های کامل را می‌توان با استفاده از ابزارهای توسعهٔ سنتی کامپایل و نصب کرد. به هر حال، مطابق مستندات اندروید، NDK نباید به تنهایی به کار رود، چون توسعه‌دهنده ترجیح می‌دهد به زبان C/C++ برنامه‌نویسی کند، چون استفاده از NDK پیچیدگی را افزایش می‌دهد و اکثر اپلیکیشن‌ها از بهره‌گیری از آن نفع نمی‌برند. کتابخانهٔ گرافیکی که اندروید برای نظارت و کنترل دسترسی به این دستگاه استفاده می‌کند SGL نام دارد و تحت لیسانس منبع باز عرضه شده‌است. وقتی یک دستگاه اندرویدی در حالت لوازم جانبی قرار دارد، وسیلهٔ جانبی متصل به آن به عنوان میزبان USB (توان باس را تأمین و دستگاه‌ها را شمارش می‌کند) عمل می‌کند و دستگاه اندرویدی به عنوان دستگاه USB کار می‌کند. لوازم جانبی USB اندروید به‌خصوص برای اتصال به دستگاه‌های اندرویدی و پیوستن به پروتکل ساده (پروتکل لوازم جانبی اندروید) طراحی شده‌است که آن‌ها را قادر می‌سازد تا دستگاه‌های اندرویدی‌ای را شناسایی کنند که حالت لوازم جانبی را پشتیبانی می‌کنند. پشتیبانی بومی Go از نسخهٔ ۱٫۴ زبان برنامه‌نویسی Go، نوشتن اپلیکیشن برای اندروید بدون نیاز به کد جاوا امکان‌پذیر بود، گرچه مجموعهٔ رابط‌های برنامه‌نویسی اندروید محدود بود. چالش برنامه‌نویس اندروید چالش برنامه‌نویس اندروید یک رقابت برای یافتن ابتکاری‌ترین برنامه برای اندروید بود. ۵۰ تا از نوید بخش‌ترین مطالب، در تاریخ ۱۲ مه ۲۰۰۸ اعلام شد، هر یک جایزه ۲۵٬۰۰۰ دلار برای توسعه بیشتر دریافت کردند. این کار در اوایل ماه سپتامبر با اعلام ده تیمی که هر کدام ۲۷۵۰۰۰ دلار دریافت می‌کردند و ده تیمی که هر ۱۰۰۰۰۰ دلار دریافت می‌کردند به پایان رسید. معیارهایی برای انتخاب بهترین زبان برنامه‌نویسی برای توسعه اپلیکیشن‌های موبایل زمانی که قصد دارید یک زبان برنامه‌نویسی، فریم ورک یا SDK را برای این کار انتخاب کنید علاوه بر قابلیت‌های مربوط به ساخت UI اپلیکیشن‌ها باید به قابلیت‌های مربوط به توسعه بک اند (سمت سرور) نیز دقت داشته باشید. توسعه دهنده‌هایی که در بخش فرانت اند و بک اند فعالیت می‌کنند گاهی اوقات از یکدیگر جدا هستند و یک شخص خاص هم بک اند و هم فرانت اند را طراحی نمی‌کند اما معمولاً این دو فرد به صورت شرکتی با یکدیگر کار می‌کنند. در این مقاله ما قصد داریم برخی از زبان‌های برنامه‌نویسی محبوب برای توسعه اپلیکیشن‌های موبایل را هم برای بک اند کاران و هم برای فرانت اند کاران معرفی کنیم که آشنایی با آنها می‌تواند برای شما بسیار مفید باشد. | ## بخش 3: توسعه نرم‌افزار اندروید | توسعه اپلیکیشن‌های موبایل برای پلتفرم اندروید اندروید یک پلتفرم متن باز است که منحصراً توسط شرکت گوگل توسعه پیدا کرده‌است. با این حال بسیاری از برندهای مختلف مانند سامسونگ، هواوی و … از این سیستم عامل در گوشی‌های خود پشتیبانی می‌کنند. امروزه دستگاه‌های مختلفی از جمله گوشی‌های هوشمند، ساعت‌های هوشمند و تبلت‌ها از سیستم عامل اندروید پشتیبانی می‌کنند. برای ساخت برنامه اندروید به مجموعه ابزارهای توسعه اندروید نیاز دارید که توسط SDK مخصوص گوگل در اختیار شما قرار می‌گیرند. اندروید استودیو نیز می‌تواند یک IDE مناسب برای توسعه اپلیکیشن‌های موبایل اندروید باشد. شما می‌توانید از این ابزار بر روی سیستم عامل‌های مختلف لینوکس، ویندوز و مک استفاده کنید. شما برای اضافه کردن کتابخانه‌های جدید به پروژه خود برای توسعه اپلیکیشن‌های موبایل می‌توانید از gradle که درون اندروید استودیو وجود دارد استفاده کنید و بسیاری از کتابخانه‌های شخص ثالث را به پروژه خود اضافه کنید. در ادامه دو زبان برنامه‌نویسی نیتیو برای توسعه اپلیکیشن‌های موبایل برای سیستم عامل اندروید را به شما معرفی خواهیم کرد. زبان برنامه‌نویسی کردی برای توسعه اپلیکیشن‌های موبایل برای اندروید جاوا زبان برنامه‌نویسی پیش فرض برای توسعه اپلیکیشن‌های موبایل برای سیستم عامل اندروید می‌باشد. این زبان یک زبان برنامه‌نویسی شی گرا است که توسط شرکت Sun در سال ۱۹۹۵ توسعه پیدا کرده‌است و در حال حاضر مالکیت آن برای شرکت اوراکل است. جاوا یک زبان بسیار محبوب در میان زبان‌های شی گرا است که خیلی سریع توانست با سیستم عامل اندروید سازگار شود. کدهای جاوا در زمان کامپایل تبدیل به بایت کد می‌شوند و سپس با استفاده از ماشین مجازی جاوا در پلتفرم‌های مختلف اجرا می‌شوند. برخی از انتقادهایی که نسبت به جاوا موجود است این است که شما برای انجام یک کار ساده در این زبان برنامه‌نویسی باید زمان زیادی را صرف کنید و علاوه بر این درک برخی از مفاهیم این زبان نیز بسیار سخت است. | ## جمع‌بندی | با این وجود هنوز هم این زبان به عنوان زبان اصلی برای توسعه اپلیکیشن‌های اندروید به‌شمار می‌آید.