توسعه نرمافزار اندروید
توسعه نرمافزار اندروید فرایندی است که به وسیلهٔ آن اپلیکیشنهای جدید برای سیستم عامل اندروید ایجاد میشوند. اپلیکیشنها معمولاً با استفاده از Android SDK به زبان برنامهنویسی جاوا توسعه مییابند، ولی محیطهای توسعهٔ دیگری نیز وجود دارند .

[1]
ابزارهای رسمی توسعه
Android SDK
توسعهدهنده(ها) | گوگل |
---|---|
انتشار ابتدایی | اکتبر ۲۰۰۹ |
انتشار پایدار | |
نوشتهشده با | Java |
سیستمعامل | چندسکویی |
در دسترس به | English |
گونه | IDE, SDK |
وبگاه |
کیت توسعه نرمافزار اندروید (SDK) شامل مجموعهٔ جامعی از ابزارهای توسعه میشود. این ابزارها شامل دیباگر (ابزار اشکالزدا)، کتابخانهها، شبیهسازی تلفن همراهِ مبتنی بر QEMU، مستندات، کد نمونه و خودآموزها میشود. در حال حاضر پلتفرمهای توسعهٔ پشتیبانیشده شامل کامپیوترهایی میشوند که لینوکس (هر نوع توزیع مدرن دسکتاپ لینوکس)، Mac OS X 10.5.8 به بعد و ویندوز ۷ (قبلاً XP) یا نسخههای بعد آن را اجرا میکنند. از مارس ۲۰۱۵، SDK در خود اندروید موجود نیست، ولی توسعه نرمافزار با استفاده از اپلیکیشنهای تخصصی اندروید امکانپذیر است.[3][4][5]
تا حدود پایان سال ۲۰۱۴، محیط توسعه یکپارچهای (IDE) که رسماً پشتیبانی میشد، Eclipse بود که از پلاگین ADT استفاده میکرد؛ گرچه IntelliJ IDEA IDE (تمام نسخهها) به طور کامل توسعه اندروید را بدون هیچ پیکربندی و تنظیماتی پشتیبانی میکند، و NetBeans IDE نیز توسعه اندروید را از طریق پلاگین در اختیار میگذارد. از سال ۲۰۱۵، Android Studio (ساخته گوگل و قدرتگرفته از IntelliJ) به IDE رسمی اندروید بدل شد؛ به هر حال، توسعهدهندگان در استفاده از دیگر محیطها آزاد هستند. علاوه بر این، توسعهدهندگان ممکن است از ویرایشگر متن برای ویرایش فایلهای جاوا و XML استفاده کنند، سپس ابزارهای خط فرمان را (Java Development Kit و Apache Ant لازم است) به کار گیرند تا اپلیکیشنهای اندروید را ایجاد کنند، بسازنند و اشکالزدایی نمایند، و همچنین دستگاههای اندروید متصل را (مثل انجام ریبوت، نصب بستههای نرمافزاری از راه دور) کنترل کنند.[6]
بهبودهای SDK اندروید دست به دست در توسعه کلی پلتفرم اندروید صورت میگیرد. این SDK همچنین نسخههای قدیمیتر پلتفرم اندروید را در مواردی پشتیبانی میکند که توسعهدهندگان تمایل دارند اپلیکیشنهای خود را در دستگاههای قدیمیتر نیز مد نظر داشته باشند. ابزارهای توسعه در واقع کامپوننتهای قابل دانلود هستند، بنابراین بعد از این که آخرین نسخه و پلتفرم دانلود شد، پلتفرمهای و ابزارهای قدیمی نیز میتوانند برای تست سازگاری دانلود شوند.[7]
اپلیکیشنهای اندروید در فرمت .apk بستهبندی میشوند و در پوشه /data/app در سیستم عامل اندروید ذخیره میگردند (این پوشه به دلایل امنیتی فقط توسط کاربران روت (ریشه) دسترسیپذیر است). بستهٔ APK حاوی فایلهای .dex (فایلهای بایتکد کامپایلشده تحت عنوان فایلهای اجرایی دالویک)، فایلهای منبع و غیره است.
پل اشکالزدایی اندروید
پل اشکالزدایی اندروید (ADB) تولکیتی موجود در بسته Android SDK به شمار میرود. این تولکیت حاوی برنامههای سمت کلاینت و سمت سرور است که با یکدیگر ارتباط برقرار میکنند. ADB عموماً از طریق رابط خط فرمان قابل دسترسی است، گرچه رابطهای گرافیکی بیشماری برای کنترل ADB در دسترس هستند.
فرمت مربوط به توزیع فرمانها از طریق ADB معمولاً بدین صورت است:
adb [-d|-e|-s <serialnumber>] <command/> where -d is the option for specifying the USB-attached device, -e for indicating a running Android emulator on the computer, -s for specifying either one by its adb-assigned serial number. If there is only one attached device or running emulator, these options are not necessary.</serialnumber>
برای مثال، اپلیکیشنهای اندروید میتوانند توسط فرمان backup در یک فایل ذخیره شوند که نام آن به طور پیشفرض backup.ab است.[8]
در یکی از گزارشهای امنیتی منتشر شده در مارس ۲۰۱۱، ADB مورد هدف قرار گرفت، طوری که یک برنامهٔ مخرب تلاش میکرد با استفاده از «حملهٔ اشباع منبع» در تلفنهای متصل روتکیت نصب کند[9][6]
Fastboot
فستبوت» به این جا تغییر مسیر میدهد [با کلیک روی لینک به آدرس دیگری فرستاده میشود]. برای قابلیت فستبوت (راهاندازی سریع) کامپیوتر شخصی، Instant-on را ملاحظه کنید. فستبوت یک پروتکل تشخیصی است که در بستهٔ SDK قرار دارد و اصولاً برای تغییر فایل سیستم فلش از طریق ارتباط USB از کامپیوتر میزبان به کار میرود. این کار مستلزم آن است که دستگاه در حالت boot loader یا Secondary Program Loader راهاندازی شود که در آن فقط پایهایترین راهاندازیهای سختافزاری انجام میشود. بعد از فعال کردن پروتکل در خود دستگاه، مجموعهٔ بهخصوصی از فرمانهای ارسال شده به آن از طریق USB را با استفاده از خط فرمان میپذیرد. تعدادی از رایجترین فرمانهای فستبوت شامل موارد زیر میشوند:
- flash – از طریق ایمج باینریِ ذخیرهشده در کامپیوتر میزبان پارتیشن را از نو مینویسد.
- erase – قابلیت پاک کردن یک پارتیشن.
- reboot – دستگاه را در یکی از محیطهای سیستم عامل اصلی، پارتیشن بازیابی سیستم یا بوتلودر راهاندازی مجدد میکند.
- devices – لیستی از تمام دستگاههای (همراه با شماره سریال) متصل به کامپیوتر میزبان را نمایش میدهد.
- format – پارتیشن به خصوصی را فرمت میکند؛ سیستم فایل این پارتیشن باید توسط دستگاه شناسایی شده باشد.
Android NDK
توسعهدهنده(ها) | گوگل |
---|---|
انتشار ابتدایی | ژوئن ۲۰۰۹[10] |
انتشار پایدار | |
نوشتهشده با | C and C++ |
سیستمعامل |
|
بنسازه رایانش | IA-32 or x86-64 |
در دسترس به | English |
گونه | IDE, SDK |
وبگاه |
کتابخانههای نوشتهشده به C, C++ و دیگر زبان را میتوان در معماریهای ARM, MIIPS یا x86 native code کامپایل کرد و با استفاده از کیت بومی توسعه اندروید (NDK) نصب نمود. کلاسهای بومی با استفاده از دستور System.loadLibrary میتوانند از کد جاوای در حال اجرا تحت Dalvik VM فراخوانی شوند، که بخشی از کلاسهای استاندارد اندروید جاوا محسوب میشوند.
اپلیکیشنهای کامل را میتوان با استفاده از ابزارهای توسعهٔ سنتی کامپایل و نصب کرد. به هر حال، مطابق مستندات اندروید، NDK نباید به تنهایی به کار رود، چون توسعهدهنده ترجیح میدهد به زبان C/C++ برنامهنویسی کند، چون استفاده از NDK پیچیدگی را افزایش میدهد و اکثر اپلیکیشنها از بهرهگیری از آن نفع نمیبرند.
اشکالزدای ADB تحت Android Emulator یک روتشل ارائه میکند که آپلود و اجرای ARM, MIPS یا x68 Native Code را ممکن میسازد. کد بومی میتواند با استفاده از GCC یا Intel C++ Compiler در یک کامپیوتر شخصی استاندارد کامپایل شود. اجرای کد بومی به خاطر استفادهٔ اندروید از کتابخانهٔ C غیر استاندارد (libc، تحت عنوان Bionic شناخته میشود) پیچیده است. کتابخانهٔ گرافیکی که اندروید برای نظارت و کنترل دسترسی به این دستگاه استفاده میکند SGL نام دارد و تحت لیسانس منبع باز عرضه شده است. Skia برای هر دو پلتفرم Win32 و Unix بکاندهایی (backend) در اختیار دارد، که توسعه اپلیکیشنهای چندپلتفرمی را امکانپذیر میسازد و موتور گرافیکی تحت مرورگر وب گوگل کروم محسوب میشود.
استفاده از Android Studio همراه با Gradle برای توسعه پروژههای NDK امکانپذیر است. ابزارهای شخص ثالث دیگری ادغام NDK در Eclipse و Visual Studio را ممکن میسازند.
کیت توسعه باز لوازم جانبی اندروید
پلتفرم اندروید ۳٫۱ (که همچنین به اندروید ۲٫۳٫۴ بکپورت شده) پشتیبانی از Android Open Accessory را ارائه میکند که سختافزار خارجی USB (لوازم جانبی USB اندروید) را قادر میسازد تا در حالت ویژهٔ «لوازم جانبی» با یک دستگاه اندرویدی در تعامل باشد. وقتی یک دستگاه اندرویدی در حالت لوازم جانبی قرار دارد، وسیلهٔ جانبی متصل به آن به عنوان میزبان USB (توان باس را تأمین و دستگاهها را شمارش میکند) عمل میکند و دستگاه اندرویدی به عنوان دستگاه USB کار میکند. لوازم جانبی USB اندروید بهخصوص برای اتصال به دستگاههای اندرویدی و پیوستن به پروتکل ساده (پروتکل لوازم جانبی اندروید) طراحی شده است که آنها را قادر میسازد تا دستگاههای اندرویدیای را شناسایی کنند که حالت لوازم جانبی را پشتیبانی میکنند.
پشتیبانی بومی Go
از نسخهٔ ۱٫۴ زبان برنامهنویسی Go، نوشتن اپلیکیشن برای اندروید بدون نیاز به کد جاوا امکانپذیر بود، گرچه مجموعهٔ رابطهای برنامهنویسی اندروید محدود بود.
چالش برنامه نویس اندروید
چالش برنامه نویس اندروید یک رقابت برای یافتن ابتکاری ترین برنامه برای اندروید بود. گوگل جوایزی بالغ بر 10 میلیون دلار آمریکا ، بین ADC I و ADC II توزیع کرد. ADC ارسال ها را از 2 ژانویه تا 14 آوریل 2008 پذیرفت . 50 تا از نوید بخش ترین مطالب ، در تاریخ 12 مه 2008 اعلام شد ، هر یک جایزه 25،000 دلار برای توسعه بیشتر دریافت کردند. این کار در اوایل ماه سپتامبر با اعلام ده تیمی که هر کدام 275000 دلار دریافت می کردند و ده تیمی که هر 100000 دلار دریافت می کردند به پایان رسید.
ADC II در 27 مه 2009 اعلام شد. [11] اولین دور مسابقه ADC II در 6 اکتبر 2009 به پایان رسید. [12] برندگان دور اول ADC II شامل 200 برنامه برتر در 5 نوامبر 2009 اعلام شدند. رای گیری برای دور دوم نیز در همان روز آغاز شد و در 25 نوامبر به پایان رسید. گوگل برندگان برتر ADC II را در تاریخ 30 نوامبر اعلام کرد ، SweetDreams و WaveSecure به عنوان برندگان کلی این چالش معرفی شده اند. [13]
توسعهٔ خارجی سختافزار
اهدف این ابزارهای توسعه کمک به دستگاههای اندروید به منظور تعامل با دستگاههای الکترونیکی خارجی است، برای مثال IOIO, Android Open Accessory Development Kit, Microbridge, Triggertrap و غیره.
معیارهایی برای انتخاب بهترین زبان برنامه نویسی برای توسعه اپلیکیشن های موبایل
زمانی که قصد دارید یک زبان برنامه نویسی، فریم ورک و یا SDK را برای این کار انتخاب کنید علاوه بر قابلیت های مربوط به ساخت UI اپلیکیشن ها باید به قابلیت های مربوط به توسعه بک اند( سمت سرور) نیز دقت داشته باشید. توسعه دهنده هایی که در بخش فرانت اند و بک اند فعالیت می کنند گاهی اوقات از یکدیگر جدا هستند و یک شخص خاص هم بک اند و هم فرانت اند را طراحی نمی کند اما معمولا این دو فرد به صورت شرکتی با یکدیگر کار می کنند. در این مقاله ما قصد داریم برخی از زبان های برنامه نویسی محبوب برای توسعه اپلیکیشن های موبایل را هم برای بک اند کاران و هم برای فرانت اند کاران معرفی کنیم که آشنایی با آنها می تواند برای شما بسیار مفید باشد.
توسعه اپلیکیشن های موبایل برای پلتفرم اندروید
اندروید یک پلتفرم متن باز است که منحصرا توسط شرکت گوگل توسعه پیدا کرده است. شرکت گوگل دارای تلفن های هوشمند با برند خود است که با نام Pixel ( و در آینده ای نزدیک Nexus) وارد بازار می شوند. با این حال بسیاری از برندهای مختلف مانند سامسونگ، هواوی و .... از این سیستم عامل در گوشی های خود پشتیبانی می کنند. امروزه دستگاه های مختلفی از جمله گوشی های هوشمند، ساعت های هوشمند و تبلت ها از سیستم عامل اندروید پشتیبانی می کنند.
برای ساخت برنامه اندروید به مجموعه ابزارهای توسعه اندروید نیاز دارید که توسط SDK مخصوص گوگل در اختیار شما قرار می گیرند. اندروید استودیو نیز می تواند یک IDE مناسب برای توسعه اپلیکیشن های موبایل اندروید باشد. شما می توانید از این ابزار بر روی سیستم عامل های مختلف لینوکس، ویندوز و مک استفاده کنید.
شما برای اضافه کردن کتابخانه های جدید به پروژه خود برای توسعه اپلیکیشن های موبایل می توانید از gradle که درون اندروید استودیو وجود دارد استفاده کنید و بسیاری از کتابخانه های شخص ثالث را به پروژه خود اضافه کنید. در ادامه دو زبان برنامه نویسی نیتیو برای توسعه اپلیکیشن های موبایل برای سیستم عامل اندروید را به شما معرفی خواهیم کرد.
زبان برنامه نویسی جاوا برای توسعه اپلیکیشن های موبایل برای اندروید
جاوا زبان برنامه نویسی پیش فرض برای توسعه اپلیکیشن های موبایل برای سیستم عامل اندروید می باشد. این زبان یک زبان برنامه نویسی شی گرا است که توسط شرکت Sun در سال 1995 توسعه پیدا کرده است و در حال حاضر مالکیت آن برای شرکت اوراکل است. جاوا یک زبان بسیار محبوب در میان زبان های شی گرا است که خیلی سریع توانست با سیستم عامل اندروید سازگار شود. کدهای جاوا در زمان کامپایل تبدیل به بایت کد می شوند و سپس با استفاده از ماشین مجازی جاوا در پلتفرم های مختلف اجرا می شوند. برخی از انتقادهایی که نسبت به جاوا موجود است این است که شما برای انجام یک کار ساده در این زبان برنامه نویسی باید زمان زیادی را صرف کنید و علاوه بر این درک برخی از مفاهیم این زبان نیز بسیار سخت است. با این وجود هنوز هم این زبان به عنوان زبان اصلی برای توسعه اپلیکیشن های اندروید به شمار می آید.
منابع
- Syed H (September 24, 2012). "Editorial: Why You Should Go Nexus". Droid Lessons. Archived from the original on 15 May 2013. Retrieved April 17, 2013.
- "SDK Tools | Android Developers". Developer.android.com. Retrieved October 28, 2015.
- appfour. "AIDE- IDE for Android Java C++ - Android Apps on Google Play". google.com.
- gesturedevelop. "Java Editor - Android Apps on Google Play". google.com.
- Tanapro GmbH, Tom Arn. "JavaIDEdroid - Android Apps on Google Play". google.com.
- Westfall, Jon (August 25, 2009). "Backup & Restore Android Apps Using ADB". JonWestfall.com. Retrieved December 7, 2009.
- "SDK Tools".
- Jack Wallen (2015-03-06). "How to create a full backup of your Android device without root". Retrieved 2016-01-29.
- Lemos, Robert "Open source vulnerabilities paint a target on Android" بایگانیشده در ۱۵ مه ۲۰۱۳ توسط Wayback Machine March 25, 2011, accessed December 27, 2012
- "Android NDK | Android Developers". Developer.android.com. November 13, 2012. Retrieved March 13, 2014.
- "Android Developers". Android Developers. Retrieved 2021-02-27.
- "Android software development". Wikipedia. 2021-02-27.
- "Android Developers". Android Developers. Retrieved 2021-02-27.