دیپ فیک (Deepfake) یا جعل عمیق چیست؟
مرداد ۳۱, ۱۳۹۸هوش مصنوعی توزیع شده (Distributed Artificial Intelligence)
مرداد ۳۱, ۱۳۹۸توسعه و ساخت نرم افزار اندروید فرآیندی است که در آن اپلیکیشن های جدید برای دستگاه هایی که تحت سیستم عامل اندروید هستند، ساخته می شوند. شرکت گوگل اعلام کرده که برنامه های اندروید را می توان با استفاده از زبان های Kotlin، Java و ++C و از طریق کیت توسعه نرم افزار اندروید (SDK) نوشت. در عین حال، امکان استفاده از زبان های دیگر نیز وجود دارد.
همه زبان های غیر JVM (ماشین مجازی جاوا) مانند Go ، C++ ، JavaScript، C یا اسمبلی به کمک کد زبان های JVM نیاز دارند که این کمک ممکن است از طریق ابزار هایی فراهم شود که احتمالا پشتیبانی API محدودی دارند. برخی از زبان ها یا ابزار های برنامه نویسی امکان پشتیبانی از چند پلتفرم (مثلا هم اندروید و هم iOS) را فراهم می کنند. از زمانی که SDK اولیه در سال ۲۰۰۸ عرضه شد، ابزار های شخص ثالث، محیط های توسعه نرم افزار و پشتیبانی از زبان های مختلف به طور پیوسته تکامل و گسترش یافته اند. علاوه بر این، با توجه به این که شرکت های تجاری بزرگ مانند Walmart، Amazon، Bank of America و … به دنبال جذب مشتری و فروش کالا از طریق تلفن های همراه هستند، توسعه نرم افزار های موبایل در حال دگرگونی است.
ابزار های رسمی توسعه و ساخت نرم افزار اندروید
SDK اندروید
کیت توسعه نرم افزار اندروید (SDK) مجموعه کاملی از ابزار های لازم برای توسعه نرم افزار را در بر دارد. این مجموعه شامل دیباگر(عیب یاب)، کتابخانه های مختلف، شبیه ساز گوشی موبایل بر مبنای QEMU، مستندسازی، کد های نمونه و آموزش های مختلف است. پلتفرم های توسعه نرم افزاری که در حال حاضر پشتیبانی می شوند شامل کامپیوتر های تحت لینوکس( هر کامپیوتر رومیزی با توزیع های جدید لینوکس)، Mac OS X 10.5.8 یا جدید تر و ویندوز ۷ یا جدیدتر هستند. تا ماه مارس ۲۰۱۵، SDK اندروید بر روی خود این سیستم عامل در دسترس نیست اما توسعه نرم افزار بر روی آن با استفاده از اپلیکیشن های مخصوص اندرویدی امکان پذیر است.
حدودا تا اواخر سال ۲۰۱۴، محیط یکپارچه توسعه نرم افزاری (IDE) که به طور رسمی از آن پشتیبانی می شد Eclipse بود که از پلاگین Android Development Tools استفاده می کرد. البته IntelliJ IDEA (همه نسخه ها) نیز به صورت پیش فرض از توسعه نرم افزار اندروید پشتیبانی می کند و همچنین IDE NetBeans هم می تواند از طریق یک پلاگین قابلیت پشتیبانی از توسعه اندروید را به دست بیاورد. تا سال ۲۰۱۵، , Android Studio، که توسط گوگل ساخته شده و توسط IntelliJ تامین می شود، به عنوان IDE رسمی شناخته می شود اما توسعه دهندگان آزادند از IDE های دیگر نیز استفاده کنند. در اواخر سال ۲۰۱۵، گوگل اعلام کرد ADT به صورت رسمی از رده خارج شده است تا بتواند بر روی Android Studio به عنوان IDE رسمی سیستم عامل اندروید تمرکز کند. علاوه بر این، توسعه دهندگان می توانند از هر ویرایشگر متنی برای ویرایش فایل های Java و XML استفاده کرده و سپس از ابزار های خط فرمان( در این حالت به کیت توسعه جاوا و Apache Ant نیاز است) برای ساخت و عیب یابی اپلیکیشن های اندروید و همچنین کنترل دستگاه های اندرویدی متصل به سیستم(به عنوان مثال برای راه اندازی مجدد سیستم عامل یا نصب بسته های نرم افزاری از راه دور) استفاده کنند.
بهبود SDK اندروید با توسعه کلی سیستم عامل اندروید نسبت مستقیم دارد. در صورتی که توسعه دهندگان بخواهند برنامه خود را برای دستگاه های قدیمی تر عرضه کنند، این SDK این قابلیت را دارد تا از نسخه های قدیمی تر پلتفرم اندروید استفاده کند. ابزار های توسعه نرم افزار اجزایی قابل دانلود هستند؛ بنابراین، وقتی آخرین نسخه و پلتفرم موجود دانلود شد، ابزار ها و پلتفرم های قدیمی تر را نیز می توان دانلود کرد تا نرم افزار را از نظر سازگاری با نسخه های قدیمی تر مورد آزمایش قرار داد.
اپلیکیشن های اندروید با فرمت .apk بسته بندی می شوند و در سیستم عامل اندروید در مسیر /data/app ذخیره می شوند ( این مسیر به دلایل امنیتی تنها برای کاربران روت در دسترس است). بسته های apk شامل فایل های .dex (فایل های کامپایل شده ای که به آن ها فایل های اجرایی دالویک نیز گفته می شود)، فایل های منبع و چیز های دیگر است.
ابزار های Android SDK
ابزار های پلتفرم Android SDK زیرمجموعه ای از SDK کامل بوده که به صورت مجزا قابل دانلود هستند و شامل ابزار های خط فرمان مانند adb و fastboot می باشند.
پل عیب یابی اندروید (adb) Android Debug Bridge
پل عیب یابی اندروید ابزاری برای اجرای دستور ها بر روی دستگاه اندرویدی متصل به سیستم می باشد. دیمن adbd بر روی دستگاه اجرا می شود و کلاینت adb، سروری را در پس زمینه اجرا می کند تا دستورات ارسالی را به صورت بسته های چندتایی در آورده و به دستگاه اندرویدی ارسال کند. علاوه بر رابط خط فرمان، رابط های کاربری گرافیکی متعددی نیز برای کنترل adb وجود دارند.
فرمت صادر کردن دستورات معمولا به شکل زیر است:
adb [-d|-e|-s <serialNumber>] <command>
که در آن:
d- گزینه مربوط به تعریف تک دستگاه متصل از طریق USB است.
e- گزینه مربوط به تک شبیه ساز اندروید است که بر روی سیستم درحال اجراست.
s- گزینه مربوط به تعریف دستگاه متصل از طریق USB از طریق شماره سریال منحصر به فردش است.
اگر تنها یک دستگاه متصل یا شبیه ساز در حال اجرا وجود داشته باشد، این گزینه ها ضروری نیستند.
برای مثال، اپلیکیشن های اندروید را می توان از طریق فرمان backup در یک فایل، که نامش به صورت پیش فرض backup.ab است، ذخیره کرد.
در یک مشکل امنیتی که در ماه مارس ۲۰۱۱ گزارش شد، ADB به عنوان یک بردار مورد هدف قرار گرفت. هدف از این کار، تلاش برای نصب یک روت کیت بر روی گوشی های متصل به سیستم از طریق حمله خسته کردن منابع(Resource Exhaustion) بود.
Fastboot
Fastboot یک پروتکل تشخیص و عیب یابی است که در بسته SDK قرار گرفته و عمدتا از آن برای اصلاح و تغییر سیستم فایل فلش از طریق اتصال USB به کامپیوتر میزبان، استفاده می شود. لازمه استفاده از این پروتکل این است که دستگاه در حالت بوت لودر یا لودر برنامه ثانویه، شروع به کار کند. در این حالت، تنها بنیادی ترین قسمت های سخت افزاری شروع به کار می کنند. پس از آن که این پروتکل بر روی خود دستگاه فعال شد، دستگاه می تواند مجموعه دستور های خاصی را که به وسیله خط فرمان و از طریق USB به آن ارسال می شود، بپذیرد. برخی از متداول ترین دستورات fastboot عبارتند از:
- Flash: با کمک یک ایمیج دودویی که بر روی کامپیوتر میزبان ذخیره شده، مجددا یک پارتیشن را می نویسد.
- Erase: یک پارتیشن مشخص را پاک می کند.
- Reboot: دستگاه را مجددا راه اندازی کرده و آن را وارد سیستم عامل اصلی، پارتیشن ریکاوری سیستم یا بوت لودر می کند.
- Devices: فهرستی از همه دستگاه هایی که به کامپیوتر میزبان متصل هستند را نمایش می دهد(آن هایی که دارای شماره سریال هستند).
- Format: یک پارتیشن مشخص را فرمت می کند؛ سیستم فایل این پارتیشن باید توسط دستگاه شناخته شود.
NDK اندروید
کد های نوشته شده به زبان C یا ++C را می توان با کمک کیت بومی توسعه اندروید (NDK) به صورت ARM یا کد ماشین x86 (یا گونه های ۶۴ بیتی دیگر آن ها) کامپایل کرد. NDK از کامپایلر Clang برای کد های C و C++ استفاده می کند. در نسخه NDK r17 از GCC نیز استفاده می شد اما این قابلیت در نسخه ۲۰۱۸ آن یعنی NDK r18 حذف شد.
کتابخانه های بومی را می توان با استفاده از کد جاوایی که تحت Android Runtime اجرا می شود و با استفاده از System.loadLibrary که بخشی از کلاس های استاندارد جاوا اندروید است، فرا خواند.
ابزار های خط فرمان را می توان با استفاده از NDK اندروید کامپایل کرده و با استفاده از adb نصب کرد.
اندروید از Bionic به عنوان کتابخانه C و از ++LLVM libc به عنوان کتابخانه استاندارد ++C استفاده می کند. همچنین NDK، API های مختلف دیگری نیز دارد: فشرده سازی Zlib، OpenGL ES یا API گرافیکی Vulkan، API صوتی OpenSL ES و API های مختلف دیگر که همه مخصوص اندروید هستند و برای کار های مختلفی مانند ثبت رویداد ها، دسترسی به دوربین ها یا شتاب دهی به شبکه های عصبی به کار می روند.
NDK از CMake و ndk-build خودش نیز که بر پایه GNU Make است ، پشتیبانی می کند. Android Studio نیز از اجرای هر دوی آن ها بر روی Gradle پشتیبانی می کند. سایر ابزار های شخص ثالث امکان وارد کردن NDK به Eclipse و Visual Studio را نیز فراهم می کنند.
برای پروفایلینگ CPU، NDK دارای simpleperf است که شبیه به ابزار تحلیل عملکرد perf برای لینوکس است اما از اندروید و علی الخصوص پشته های Java/C++ بهتر پشتیبانی می کند.
کیت توسعه Android Open Accessory
سیستم عامل اندروید ۳.۱ برای اولین بار از Android Open Accessory پشتیبانی کرد که به سخت افزار های خارجی USB (که به عنوان لوازم جانبی دستگاه اندرویدی شناخته می شود)، اجازه می دهد تا در حالت “لوازم جانبی” با دستگاه اندرویدی تعامل داشته باشد. وقتی دستگاه اندرویدی در حالت لوازم جانبی قرار می گیرد، سخت افزار خارجی متصل به دستگاه به عنوان میزبان USB عمل می کند (برق گذرگاه را تامین کرده و دستگاه های متصل را می شمارد) و دستگاه اندرویدی به عنوان دستگاه USB عمل می کند. لوازم جانبی USB اندرویدی به طور خاص برای اتصال به دستگاه های تحت سیستم عامل اندروید طراحی شده اند و از یک پروتکل ساده (پروتکل لوازم جانبی اندروید) تبعیت می کنند که به آن ها اجازه می دهد دستگاه های اندرویدی که قابلیت پشتیبانی از حالت لوازم جانبی را دارند، شناسایی کنند.
توسعه سخت افزاری خارجی
ابزار های توسعه ای که برای کمک به تعامل دستگاه اندرویدی با لوازم الکترونیکی خارجی طراحی شده اند شامل IOIO، کیت توسعه Android Open Accessory، Microbridge، Triggertrap و … هستند.
ابزار های توسعه ثالث نرم افزار اندروید
AIDE
- یک اپلیکیشن اندروید است که امکان توسعه اپلیکیشن های اندرویدی را به صورت مستقیم و از طریق خود دستگاه فراهم می کند. این اپلیکیشن نرم افزار ساخته شده را کامپایل کرده و بر روی خود دستگاه نصب می کند.
Android::Build
Android::Build یک ماژول شبکه جامع بایگانی زبان برنامه نویسی پرل(Perl CPAN) است که امکان ساخت یک فایل apk اندروید را تنها از طریق ابزار های ساده خط فرمان مانند aapt، dx، javac، jarsigner و Zipalign و بدون اتکا به Apache Ant یا Gradle فراهم می کند. کمتر شدن میزان وابستگی به این دو، باعث ساده تر شدن سیستم های عرضه پیوسته می شود که به تولید کاملا خودکار و از راه دور اپلیکیشن و تست آن وابسته هستند.
App Inventor برای اندروید
در ۱۲ ژولای سال ۲۰۱۰، گوگل رسما اعلام کرد App Inventor، که یک محیط توسعه تصویری وب محور برای برنامه نویس های تازه کار است، برای اندروید نیز در دسترس خواهد بود. App Inventor بر مبنای کتابخانه جاوای دانشگاه MIT یعنی Open Blocks طراحی شده و امکان دسترسی به GPS، شتاب سنج، داده های جهت گیری، کارکرد های تلفن، پیام کوتاه، تبدیل کلام به متن، اطلاعات مخاطبین، سیستم ذخیره و خدمات تحت وب را که شامل توییتر و آمازون می شوند، فراهم می کند. هارولد آبلسن، مدیر این پروژه از دانشگاه MIT می گوید:”ما تنها به این دلیل توانستیم این کار را انجام دهیم که معماری اندروید بسیار باز است”. ابزار ویرایش بلوک ها که ساخت آن بیشتر از یک سال زمان برد، در دانشگاه هایی مانند MIT، Wellesley، Trinity College، دانشگاه سن فرانسیسکو به افرادی که رشته تحصیلیشان علوم کامپیوتر نبود، تدریس می شد. در دانشگاه سن فرانسیسکو، دکتر دیوید وُلبر، واحد درسی به نام علوم کامپیوتر مقدماتی ارائه می کرد و همچنین برای دانشجویان سایر رشته ها، کتابی آموزشی برای بر مبنای App Inventor اندروید تهیه کرده بود.
در نیمه دوم سال ۲۰۱۱، گوگل کد منبع App Inventor را عرضه کرد و سرویس تحت وب آن را متوقف کرد. آن ها همچنین بودجه لازم برای ساخت مرکز یادگیری با استفاده از تلفن همراه در دانشگاه MIT را که توسط خالق App Inventor یعنی هارولد آبلسن و دو نفر از اساتید MIT یعنی اریک کلاپفر و میچل رزنیک هدایت می شد، فراهم کردند. آخرین نسخه ای که با همکاری گوگل و MIT ساخته شد در ماه فوریه ۲۰۱۲ عرضه شد و سپس اولین نسخه ای که تنها توسط MIT ساخته شده بود در ماه مارس ۲۰۱۳ عرضه و سپس در ماه دسامبر ۲۰۱۳ به App Inventor 2 ارتقا یافت. پس از آن، این برنامه توسط MIT پشتیبانی می شود.
Basic4android
Basic4android محصولی تجاری شبیه به Simple است. این ابزار از Visual Basic 6 و Visual Studio مایکروسافت الهام گرفته شده است و برنامه نویسی اندروید را برای کسانی که به طور مداوم از Visual Basic برای برنامه نویسی استفاده می کنند و برنامه نویسی به زبان جاوا برای آن ها سخت است، ساده تر می کند.
Coreliu
Coreliu به کاربران غیر فنی نیز اجازه می دهد تا اپلیکیشن های آموزشی بسیار جالبی بسازند که به صورت بومی بر روی دستگاه های اندرویدی اجرا می شود. کاربران از فایلی که در مرکز ذخیره سازی سایت Github نگهداری می شود برای توصیف تصاویر و متونی که قرار است در اپلیکیشن ساخته شده به کار رود، استفاده می کنند. متن ها با استفاده از سرویس Polly شرکت آمازون به گفتار تبدیل می شوند. Coreliu عکس ها و گفتار تولید شده از متن را به یک فایل apk اندروید تبدیل می کند که کاربر می تواند آن را به صورت رایگان و تحت پروانه Creative Commons توزیع کند.
کیت توسعه نرم افزار Corona
Corona SDK یک کیت توسعه نرم افزار است که توسط والتر لوه، بنیان گذار شرکت Corona Labs، ساخته شده است. این کیت توسعه نرم افزار به برنامه نویسان نرم افزار اجازه می دهد تا برای آیفون، آیپد و دستگاه اندرویدی، اپلیکیشن بسازند. Corona به توسعه دهندگان اجازه می دهد تا با استفاده از زبان یکپارچه اش که Lua نام دارد و بر روی ++C و OpenGL بنا شده است، اپلیکیشن های گرافیکی طراحی کنند. این SDK از مدل خرید اشتراک استفاده می کند ولی به ازای اپلیکیشن های تولید شده، حق امتیاز دریافت نمی کند و هیچگونه ملزومات برندینگ نیز برای اپلیکیشن تولید شده وجود ندارد.
Delphi
از Delphi نیز می توان برای ساخت اپلیکیشن های اندروید به زبان آبجکت پاسکال استفاده کرد. آخرین نسخه آن Delphi 10 Seattle است که توسط شرکت Embarcadero عرضه شده است. رابط های کاربری با استفاده از چارچوب رابط کاربری گرافیکی چند پلتفرمی Firemonkey توسعه می یابند. علاوه بر این، اجزای غیر بصری نیز برای تعامل با سنسور های مختلف( مثل دوربین، ژیروسکوپ، GPS، بلوتوث و…) در دسترس هستند. خدمات دیگر، مانند دسترسی به برخی رخداد های خاص صفحه کلید نیز به شیوه ای کاملا مستقل از پلتفرم مورد استفاده، قابل دسترسی هستند؛ این کار از طریق رابط ها انجام می گیرد. این کامپایلر بر مبنای معماری LLVM طراحی شده و امکان عیب یابی از طریق IDE نیز وجود دارد. اپلیکیشن های تولید شده بر مبنای NDK هستند اما بر خلاف Xamarin، ران تایم در خود اپلیکیشن کامپایل می شود.
DroidScript
یک ابزار توسعه سریع نرم افزار برای ساخت اپلیکیشن های بومی اندروید با استفاده از JavaScript است. از این ابزار می توان به صورت مستقیم بر روی گوشی و یا از طریق یک IDE بر مبنای مرورگر که از طریق وای فای به دستگاه متصل است، استفاده کرد. این ابزار از موتور جاوا اسکریپت Chrome V8 شرکت گوگل استفاده می کند.
Golang
از نسخه 1.4 زبان برنامه نویسی زبان Go به بعد، از نوشتن اپلیکیشن های اندروید نیز پشتیبانی می شود. با کمک نسخه 1.7 و از طریق ابزار Gomobile، کامپایل کردن فایل apk اندروید یا فایل اپلیکیشن های iOS نیز با استفاده از کد های زبان Go امکان پذیر شده است. به طور مشخص، برای اجرای هر برنامه بر روی سیستم عامل اندروید، کد Java یا JVM مورد نیاز است اما ابزار gomobile، به حداقل میزان کد به زبان Java (یا در مورد برنامه های iOS به C شی گرا) نیاز دارد. پشتیبانی از Go به type های قابل استفاده در این زبان و مجموعه کوچکی از API های اندروید محدود است( در حال حاضر ارتباط با OpenAL و OpenGL ES 2 برقرار است که می توان از آن برای ساخت بازی های دو بعدی یا سه بعدی و یا اپلیکیشن های گرافیکی دیگر استفاده کرد).
HyperNext Android Creator
HyperNext Android Creator یک سیستم توسعه نرم افزار است که برای برنامه نویس های تازه کار طراحی شده و به آن ها کمک می کند بدون دانستن Java و SDK اندروید، بتوانند اپلیکیشن های اندروید خودشان را طراحی کنند. این سیستم بر مبنای HyperCard طراحی شده که نرم افزار را به عنوان پشته ای از کارت ها در نظر می گرفت و در هر لحظه، تنها یک کارت قابل ملاحظه بود. به همین دلیل است که این سیستم برای اپلیکیشن های تلفن همراه که تنها یک صفحه نمایش دارند، مناسب است. زبان برنامه نویسی اصلی این سیستم، HyperNext نام دارد و تقریبا بر مبنای زبان Hypertalk سیستم Hybercard طراحی شده است. HyperNext یک زبان تفسیری و شبیه به زبان انگلیسی است که قابلیت های فراوانی برای ساخت اپلیکیشن های اندروید دارد. این زبان از لیست روز افزونی از زیرمجموعه های SDK اندروید، شامل نسخه های کنترل رابط کاربری خود پشتیبانی می کند و به صورت خودکار خدمات پس زمینه خود را اجرا می کند تا اپلیکیشن ها بتوانند در صورت قرارگیری در پس زمینه نیز به اجرا شدن ادامه دهند و اطلاعات را پردازش کنند.
Kivy
Kivy یک کتابخانه کد منبع باز برای پایتون است که برای توسعه نرم افزار های کاربردی چندلمسی با رابط کاربری طبیعی(NUI) بر روی دستگاه های مختلف استفاده می شود. Kivy امکان پشتیبانی از یک اپلیکیشن را بر روی سیستم عامل های متعدد فراهم می کند. این کتابخانه، ابزار گسترشی شخصی سازی شده برای گسترش اپلیکیشن های موبایل دارد که Bulldozer نامیده می شود و تنها برای لینوکس در دسترس است. در حال حاضر Bulldozer در مرحله آزمایشی است اما استفاده از آن نسبت به روش های گسترش قدیمی تر Kivy، بسیار ساده تر است. اپلیکیشن های نوشته شده با کمک Kivy را می توان برای هر پلتفرم توزیع اپلیکیشن های اندروید، ارسال کرد.
Lazarus
Lazarus یک محیط یکپارچه توسعه نرم افزار(IDE) است که می توان از آن برای توسعه اپلیکیشن های اندروید با استفاده از زبان آبجکت پاسکال ( و دیگر انواع پاسکال) استفاده کرد. این IDE بر مبنای کامپایلر Free Pascal و از نسخه 2.7.1 به بعد کار می کند.
Processing
محیط Processing، که از زبان Java نیز استفاده می کند از نسخه 1.5 به بعد، از برنامه نویسی برای اندروید پشتیبانی می کند. یکپارچه سازی با دوربین گوشی و سنسور های آن نیز از طریق کتابخانه Ketai ممکن است.
Qt for Android
Qt (کیوت) برای اندروید، امکان اجرا شدن اپلیکیشن های Qt 5 بر روی دستگاه های با اندروید 2.3.3 یا جدیدتر (API سطح ۱۰) فراهم می کند. Qt یک چارچوب نرم افزاری چند پلتفرمی است که می تواند برای پلتفرم های مختلفی مانند اندروید، iOS، Sailfish و ویندوز استفاده شود. توسعه اپلیکیشن در Qt به زبان ++C استاندارد و QML انجام می گیرد و به NDK و SDK اندروید نیاز دارد. Qt Creator محیط یکپارچه توسعه نرم افزار است که به همراه چارچوب Qt عرضه شده و برای توسعه اپلیکیشن های چند پلتفرمی استفاده می شود.
RubyMotion
RubyMotion زنجیره ای از ابزار ها است که از آن ها برای نوشتن اپلیکیشن های بومی موبایل به زبان Ruby استفاده می شود. نسخه ۳ RubyMotion از اندروید پشتیبانی می کند. اپلیکیشن های اندرویدی که با RubyMotion تولید می شوند می توانند تمامی API های Java Android را از طریق Ruby فراخوانی کنند، از کتابخانه های شخص ثالث Java استفاده کنند و به صورت ایستا به زبان ماشین کامپایل شوند.
SDL
کتابخانه SDL در کنار Java، امکان توسعه به زبان C و پورت ساده SDL موجود و اپلیکیشن های بومی C را فراهم می کند. از طریق وارد کردن یک shim و رابط بومی جاوا(JNI) امکان استفاده از کد بومی SDL فراهم و پورت اپلیکیشن های اندروید ( مانند بازی Jagged Alliance 2) امکان پذیر می شود.
Stripe Android
Stripe یک چارچوب پرداخت است که فرآیند توسعه را آسان تر می کند زیرا توسعه دهندگان دیگر نیازی ندارند اطلاعات کارت را به صورت مستقیم به سرور های آن ها بفرستند. این چارچوب اطلاعات را به سرور های Stripe می فرستد. در آنجا این اطلاعات پرداخت تبدیل به یک علامت می شوند. اپلیکیشن اندروید علامت خود را دریافت کرده و آن را به سرور خودش می فرستد تا اطلاعات پرداخت را پردازش کند.
شبیه ساز Visual Studio برای اندروید
مایکروسافت در سال ۲۰۱۵، یک شبیه ساز مجزا و رایگان را برای اندروید عرضه کرد که شبیه ساز Visual Studio برای اندروید نام داشت. این شبیه ساز از طریق رابط کشیدن و رها کردن(drag-and-drop) قابلیت نصب گوگل پلی را نیز دارد و می تواند به صورت هم زمان در کنار Visual Studio، که از توسعه نرم افزار چند پلتفرمی پشتیبانی می کند، کار کند. این شبیه ساز به توسعه دهندگان ++C اجازه می دهد با استفاده از قالب های موجود برای اپلیکیشن های اندروید، پروژه های جدید ایجاد کنند یا کتابخانه های مشترک با عملکرد قوی بسازند که بتوان از آن ها در راه حل های دیگر استفاده کرد. ویژگی های این شبیه ساز شامل IntelliSense مخصوص به هر پلتفرم، نقاط قطع کد، گسترش دستگاه ها و شبیه سازی است.
Xamarin
با استفاده از کد پایه C#، توسعه دهندگان می توانند از Xamarin برای نوشتن اپلیکیشن های بومی iOS، اندروید و ویندوز به همراه رابط های کاربری بومی استفاده کرده و کد نهایی را بین چندین پلتفرم به اشتراک بگذارند.
Square
Square کتابخانه های مبتنی بر اندرویدی زیادی ایجاد کرده است که می توانند در برنامه های اندرویدی به عنوان بسته های third party مورد استفاده قرار گیرند. از محبوب ترین آنها میتوان به Retrofit ، Dagger و Picasso اشاره نمود.
چالش Android Developer و خلاقانه ترین نرم افزار اندروید
چالش Android Developer مسابقه ای برای یافتن خلاقانه ترین اپلیکیشن اندروید بود. گوگل در مجموع برای این مسابقه، حدود ۱۰ میلیون دلار جایزه تعیین کرده بود که بین برندگان چالش اول و چالش دوم تقسیم می شد. چالش اول از تاریخ ۲ ژانویه تا ۱۴ آوریل ۲۰۰۸، اپلیکیشن های مختلف را برای شرکت در مسابقه ثبت نام کرد. ۵۰ مورد از جالب ترین اپلیکیشن ها در تاریخ ۱۲ می ۲۰۰۸ اعلام شدند و هر کدام برای توسعه بیشتر، ۲۵ هزار دلار جایزه دریافت کردند. این چالش در اوائل ماه سپتامبر ۲۰۱۲ و با اعلام ۱۰ تیم که هر کدام ۲۷۵ هزار دلار و ۱۰ تیم که هر کدام ۱۰۰ هزار دلار دریافت کردند، به پایان رسید.
چالش دوم در ۲۷ ماه می سال ۲۰۰۹ اعلام شد و مرحله اول آن در ۶ اکتبر ۲۰۰۹ به پایان رسید. برندگان مرحله اول که شامل ۲۰۰ اپلیکیشن برتر بودند، در ۵ نوامبر ۲۰۰۹ اعلام شدند. رای گیری برای مرحله دوم نیز در همان روز شروع شد و در ۲۵ نوامبر به پایان رسید. گوگل برندگان چالش دوم را در ۳۰ نوامبر ۲۰۰۹ اعلام کرد و سه اپلیکیشن SweetDreams، What the Doodle?و WaveSecure به عنوان برندگان کلی چالش دوم معرفی شدند.
توزیع جامعه محور
در حال حاضر جامعه ای از علاقه مندان به نرم افزار های منبع باز وجود دارد که توزیع های اندروید( فرمور) را ساخته و به اشتراک می گذارند. این فرمور ها دارای امکانات جانبی و قابلیت های اضافه هستند که برای نمونه می توان به افزودن قابلیت پشتیبانی از پخش فایل های صوتی FLAC بدون کاهش کیفیت و یا قابلیت ذخیره اپلیکیشن های دانلود شده بر روی کارت حافظه اشاره کرد. استفاده از این قابلیت ها عمدتا مستلزم روت کردن دستگاه است. روت کردن دستگاه به کاربر اجازه می دهد تا به ریشه سیستم عامل دسترسی پیدا کند و در نتیجه کنترل کامل گوشی را در دست داشته باشد. البته روت کردن چند عیب نیز دارد که از جمله آن ها می توان به افزایش ریسک هک شدن، افزایش خطر خراب شدن دائمی گوشی، از دست دادن گارانتی، افزایش خطر حمله ویروس ها و … اشاره کرد. علاوه بر این، امکان نصب فرمور های شخصی سازی شده نیز وجود دارد که البته برای این کار، باید بوت لودر دستگاه قفل شکنی شود. فرمور های شخصی سازی شده به کاربران گوشی های قدیمی اجازه می دهند تا از اپلیکیشن هایی که تنها بر روی نسخه های جدیدتر اندروید قابل نصب است، استفاده کنند.
این بسته های فرمور، با فواصل زمانی کوتاه بروز رسانی می شوند و المان هایی از کارکرد های مختلف سیستم عامل اندروید را به کار می گیرند که هنوز به صورت رسمی برای فرمور های تایید شده توسط اپراتور های تلفن همراه عرضه نشده است. آن ها همچنین محدودیت های کمتری نیز دارند. نمونه هایی از این فرمور ها CyanogenMod و OMFGB هستند.
در ۲۴ سپتامبر ۲۰۰۹، گوگل رسما به سازنده Cyanogen هشدار داد که عرضه این فرمور را متوقف کند. آن ها در این هشدار به مشکل توزیع مجدد اپلیکیشن های منبع بسته گوگل در داخل فرمور شخصی سازی شده او اشاره کردند. اگرچه بیشتر سیستم عامل اندروید منبع باز است، اما گوشی ها به همراه برخی اپلیکیشن کاربردی های منبع بسته، مانند Google Play و Google Maps متعلق به شرکت گوگل عرضه می شوند. گوگل تاکید کرده این اپلیکشن ها تنها می توانند از تغییر کانال های تایید شده و توسط توزیع کنندگان مجاز، به طور مجدد توزیع شوند. Cyanogen هم خواسته گوگل را پذیرفته و این فرمور را بدون این اپلیکیشن ها توزیع می کند. او راهی برای تهیه نسخه پشتیبان از این اپلیکیشن ها در طی فرآیند نصب این فرمور و بازگردانی آن ها پس از پایان نصب، پیدا کرده است.
استاندارد های جاوا
یکی از موانع بر سر راه توسعه نرم افزار، این است که اندروید از استاندارد های شناخته شده Java، یعنی Java SE و ME استفاده نمی کند. این مانع سازگاری بین اپلیکشن های Java این دو پلتفرم و اپلیکیشن های اندروید می شود. اندروید تنها از قواعد نحوی و معنایی Java استفاده می کند اما تمامی کتابخانه ها و API هایی که در کنار Java SE و ME عرضه می شوند را ارائه نمی کند. با این حال، ابزار های مختلفی در بازار وجود دارد که خدمات تبدیل Java ME به اندروید و برعکس را انجام می دهند. از بین آن ها می توان به محصولات شرکت هایی مانند Myriad Group و UpOnTek اشاره کرد.
اندروید کلاس های رابط کاربری گرافیکی خاص خودش را ارائه می دهد و از Java AWT، Swing یا JavaFX استفاده نمی کند. اندروید از Java Beans API نیز به طور کامل پشتیبانی نمی کند.
تاریخچه و سهم بازار
اندروید توسط اتحادیه گوشی باز(OHA) ساخته شد که توسط گوگل رهبری می شود. بازخورد اولیه در زمینه توسعه نرم افزار برای پلتفرم اندروید متوسط بود. از بین مشکلات ذکر شده می توان به باگ ها، فقدان مستند سازی، زیرساخت ناکافی برای تضمین کیفیت و عدم وجود یک سیستم عمومی ردیابی مشکلات اشاره کرد(گوگل سیستم ردیابی مشکلات خود را در ۱۸ ژانویه ۲۰۰۸ معرفی کرد). در دسامبر ۲۰۰۷، آدام مکبت، بنیانگذار استارت آپ موبایل MergeLab اعلام کرد:” این پلتفرم کارایی ندارد. سیستم مستند سازی ضعیف است یا اصلا وجود ندارد… مشخص است که هنوز آماده این همه توجه نیست”. با وجود این اظهارات، اپلیکیشن های اندرویدی تنها یک هفته پس از معرفی این پلتفرم، وارد بازار شدند. اولین اپلیکیشنی که در دسترس عموم قرار گرفت بازی مار بود.
نسخه اولیه Android SDK در ۱۲ نوامبر ۲۰۰۷ عرضه شد. در ۱۵ جولای ۲۰۰۸، تیم چالش Android Developer به صورت تصادفی ایمیلی را به همه شرکت کنندگان این مسابقه ارسال کرد و در آن اعلام کرد که نسخه جدید SDK در بخش دانلود “خصوصی” قابل دسترس است. این ایمیل به برندگان مرحله اول این چالش ارسال شده بود. افشای این که گوگل قصد داشت نسخه های جدید SDK را در اختیار برخی توسعه دهندگان گذاشته و به دیگران ندهد( و این که آن ها قصد داشتند این توافق را مخفی نگه دارند)، منجر به عصبانیت شدید جامعه توسعه دهندگان اندروید در آن زمان شد.
در ۱۸ آگوست ۲۰۰۸، نسخه بتا Android 0.9 SDK عرضه شد. این نسخه حاوی API به روز شده و گسترش یافته، ابزار های توسعه ای بهبود یافته و طراحی بروز رسانی شده صفحه اصلی بود. دستورالعمل دقیق برای بروز رسانی، برای کسانی که هنوز از نسخه های قدیمی تر استفاده می کنند، در دسترس است. در ۲۳ سپتامبر ۲۰۰۸، Android 1.0 SDK عرضه شد. بنا به یاداشت های تکمیلی، این نسخه عمدتا شامل برطرف کردن باگ ها می باشد البته برخی ویژگی های کوچک و جدید نیز به آن اضافه شده بودند. در API این نسخه نیز نسبت به نسخه 0.9، چند تغییر ایجاد شده بود. از زمان توسعه SDK، نسخه های مختلفی از آن عرضه شده اند.
در ۵ دسامبر ۲۰۰۸، گوگل اولین گوشی تلفن اندرویدی مخصوص توسعه دهندگان نرم افزار را معرفی کرد که در آن خبری از قفل سیم کارت و قفل های سخت افزاری نبود و به صورت خاص برای توسه دهندگان طراحی شده بود. این گوشی، نسخه اصلاح شده گوشی Dream شرکت HTC بود. اگرچه توسعه دهندگان می توانند از گوشی های معمولی در بازار برای تست اپلکیشن هایشان استفاده کنند، ممکن است برخی توسعه دهندگان ترجیح بدهند از یک گوشی اختصاصی قفل شکسته یا بدون قرارداد استفاده کنند.
تا ماه جولای ۲۰۱۳، بیشتر از یک میلیون اپلیکیشن برای اندروید ساخته و ۲۵ میلیارد دانلود برای آن ها ثبت شده است. تحقیقی متعلق به ژوئن ۲۰۱۱ نشان می داد که بیشتر از ۶۷ درصد توسعه دهندگان در زمان انتشار پلتفرم اندروید، از آن استفاده کردند. پیش بینی می شود محموله های گوشی های هوشمند اندرویدی به بیشتر از ۲/۱ میلیارد دستگاه در سال ۲۰۱۸ برسد و ۸۵ درصد سهم بازار را به خود اختصاص دهد.