توسعه نرم‌افزار اندروید

author=Syed H
توسعه نرم‌افزار اندروید فرایندی است که به وسیله آن اپلیکیشن‌های جدید برای سیستم عامل اندروید ایجاد می‌شوند. اپلیکیشن‌ها معمولا با استفاده از Android SDK به زبان برنامه‌نویسی جاوا توسعه می‌یابند، ولی محیط‌های توسعه دیگری نیز وجود دارند .
ابزارهای رسمی توسعه
Android SDK
کیت توسعه نرم‌افزار اندروید (SDK) شامل مجموعه جامعی از ابزارهای توسعه می‌شود. این ابزارها شامل دیباگر (ابزار اشکال‌زدا)، کتابخانه‌ها، شبیه‌سازی تلفن همراه مبتنی بر QEMU، مستندات، کد نمونه و خودآموزها می‌شود. در حال حاضر پلتفرم‌های توسعه پشتیبانی‌شده شامل کامپیوترهایی می‌شوند که لینوکس (هر نوع توزیع مدرن دسکتاپ لینوکس)، Mac OS X 10.5.8 به بعد و ویندوز ۷ (قبلا XP) یا نسخه‌های بعد آن را اجرا می‌کنند. از مارس ۲۰۱۵، SDK در خود اندروید موجود نیست، ولی توسعه نرم‌افزار با استفاده از اپلیکیشن‌های تخصصی اندروید امکان‌پذیر است.
تا حدود پایان سال ۲۰۱۴، محیط توسعه یکپارچه‌ای (IDE) که رسما پشتیبانی می‌شد، Eclipse بود که از پلاگین ADT استفاده می‌کرد؛ گرچه IntelliJ IDEA IDE (تمام نسخه‌ها) به طور کامل توسعه اندروید را بدون هیچ پیکربندی و تنظیماتی پشتیبانی می‌کند، و NetBeans IDE نیز توسعه اندروید را از طریق پلاگین در اختیار می‌گذارد. از سال ۲۰۱۵، Android Studio (ساخته گوگل و قدرت‌گرفته از IntelliJ) به IDE رسمی اندروید بدل شد؛ به هر حال، توسعه‌دهندگان در استفاده از دیگر محیط‌ها آزاد هستند. علاوه بر این، توسعه‌دهندگان ممکن است از ویرایشگر متن برای ویرایش فایل‌های جاوا و XML استفاده کنند، سپس ابزارهای خط فرمان را (Java Development Kit و Apache Ant لازم است) به کار گیرند تا اپلیکیشن‌های اندروید را ایجاد کنند، بسازنند و اشکال‌زدایی نمایند، و همچنین دستگاه‌های اندروید متصل را (مثل انجام ریبوت، نصب بسته‌های نرم‌افزاری از راه دور) کنترل کنند.
بهبودهای SDK اندروید دست به دست در توسعه کلی پلتفرم اندروید صورت می‌گیرد. این SDK همچنین نسخه‌های قدیمی‌تر پلتفرم اندروید را در مواردی پشتیبانی می‌کند که توسعه‌دهندگان تمایل دارند اپلیکیشن‌های خود را در دستگاه‌های قدیمی‌تر نیز مد نظر داشته باشند. ابزارهای توسعه در واقع کامپوننت‌های قابل دانلود هستند، بنابراین بعد از این که آخرین نسخه و پلتفرم دانلود شد، پلتفرم‌های و ابزارهای قدیمی نیز می‌توانند برای تست سازگاری دانلود شوند.
اپلیکیشن‌های اندروید در فرمت .apk بسته‌بندی می‌شوند و در پوشه /data/app در سیستم عامل اندروید ذخیره می‌گردند (این پوشه به دلایل امنیتی فقط توسط کاربران روت (ریشه) دسترسی‌پذیر است). بسته APK حاوی فایل‌های .dex (فایل‌های بایت‌کد کامپایل‌شده تحت عنوان فایل‌های اجرایی دالویک)، فایل‌های منبع و غیره است.
پل اشکال‌زدایی اندروید
پل اشکال‌زدایی اندروید (ADB) تولکیتی موجود در بسته Android SDK به شمار می‌رود. این تولکیت حاوی برنامه‌های سمت کلاینت و سمت سرور است که با یکدیگر ارتباط برقرار می‌کنند. ADB عموما از طریق رابط خط فرمان قابل دسترسی است، گرچه رابط‌های گرافیکی بی‌شماری برای کنترل ADB در دسترس هستند.
فرمت مربوط به توزیع فرمان‌ها از طریق ADB معمولا بدین صورت است:
adb -e
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.
برای مثال، اپلیکیشن‌های اندروید می‌توانند توسط فرمان backup در یک فایل ذخیره شوند که نام آن به طور پیش‌فرض backup.ab است.
در یکی از گزارش‌های امنیتی منتشر شده در مارس ۲۰۱۱، ADB مورد هدف قرار گرفت، طوری که یک برنامه مخرب تلاش می‌کرد با استفاده از «حمله اشباع منبع» در تلفن‌های متصل روت‌کیت نصب کند
Fastboot
فست‌بوت» به این جا تغییر مسیر می‌دهد با کلیک روی لینک به آدرس دیگری فرستاده می‌شود. برای قابلیت فست‌بوت (راه‌اندازی سریع) کامپیوتر شخصی، Instant-on را ملاحظه کنید. فست‌بوت یک پروتکل تشخیصی است که در بسته SDK قرار دارد و اصولا برای تغییر فایل سیستم فلش از طریق ارتباط USB از کامپیوتر میزبان به کار می‌رود. این کار مستلزم آن است که دستگاه در حالت boot loader یا Secondary Program Loader راه‌اندازی شود که در آن فقط پایه‌ای‌ترین راه‌اندازی‌های سخت‌افزاری انجام می‌شود. بعد از فعال کردن پروتکل در خود دستگاه، مجموعه به‌خصوصی از فرمان‌های ارسال شده به آن از طریق USB را با استفاده از خط فرمان می‌پذیرد. تعدادی از رایج‌ترین فرمان‌های فست‌بوت شامل موارد زیر می‌شوند:
flash – از طریق ایمج باینری ذخیره‌شده در کامپیوتر میزبان پارتیشن را از نو می‌نویسد.
erase – قابلیت پاک کردن یک پارتیشن.
reboot – دستگاه را در یکی از محیط‌های سیستم عامل اصلی، پارتیشن بازیابی سیستم یا بوت‌لودر راه‌اندازی مجدد می‌کند.
devices – لیستی از تمام دستگاه‌های (همراه با شماره سریال) متصل به کامپیوتر میزبان را نمایش می‌دهد.
format – پارتیشن به خصوصی را فرمت می‌کند؛ سیستم فایل این پارتیشن باید توسط دستگاه شناسایی شده باشد.
Android NDK
کتابخانه‌های نوشته‌شده به 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، نوشتن اپلیکیشن برای اندروید بدون نیاز به کد جاوا امکان‌پذیر بود، گرچه مجموعه رابط‌های برنامه‌نویسی اندروید محدود بود.
توسعه خارجی سخت‌افزار
اهدف این ابزارهای توسعه کمک به دستگاه‌های اندروید به منظور تعامل با دستگاه‌های الکترونیکی خارجی است، برای مثال IOIO, Android Open Accessory Development Kit, Microbridge, Triggertrap و غیره.