ساخت اپلیکیشن اندروید

ساخت اپلیکیشن اندروید

ساخت اپلیکیشن اندروید – طراحی اپلیکیشن اندروید – برنامه نویسی اپلیکیشن اندروید

درباره اندروید

زمانیکه ما میگیم سیستم عامل اندروید اولین چیزی که توی ذهن تداعی میشه گوشی های موبایلی هست که اکثرا هنگ میکنن و کاربر رو اذیت میکنن !!
اما چرا این تصویر زشت ؟! مشخصه !! چون برخی دوستان عزیز خود برنامه نویس پندار میان و با انتشار اپلیکیشن های خانه خراب کن به گوشی شما اندرویدی های عزیز حمله میکنن !(بگذریم از اینکه گوگل هم از نسخه ۴٫۴ به بعد به فکر بهینه کردن سیستم عامل افتاد تا یکم با سخت افزارهای سطح پایین مهربون تر شه)
سیستم عامل اندروید رو سال ۲۰۰۳ آقای اندی روبین در قالب شرکت اندروید به بازار ارائه کرد که با فاصله کمی یعنی سال ۲۰۰۵ گوگل کل این شرکت با تمام هست و نیستش رو خرید!
طبیعیه که آقای لری پیج و سرگی برین آینده روشنی برای اندروید میدیدن که بلافاصله اقدام به خریدش کردن. آنها تصمیم گرفتند که اندروید رو بصورت متن باز و رایگان در اختیار شرکت های سازنده قرار دهند پس از لینوکس به عنوان هسته این سیستم عامل استفاد کردند.
هر چند اندی روبین پدر اندروید از سال ۲۰۱۴ در گوگل کار نمیکند اما اندروید با خانواده جدیدش گوگل هنوز در لیست محبوب ترین سیستم عامل ها قرار داره و کمتر کسی هست که با وجود نداشتن هیچ سواد تکنولوژیکی اسم اندورید به گوشش نخورده باشه.

اندروید ۱٫۰

به قول برنامه نویس ها این اندروید مثل Hello World سیستم عامل اندروید بود ! اولین نسخه عرضه شده که در ماه نوامبر سال ۲۰۰۷ درست در سالی که ایفون عرضه شده بود , بر روی گوشی HTC Dream عرضه شد.
نسخه های اندروید یکی یکی ارائه شد : کاپ کیک ٫ دونات ٫ نان خامه ای ٫ ماست یخی ٫ نان زنجبیلی ٫ شانه عسل ٫ بستنی حصیری ٫ آب نبات ژله ای تا نسخه کیت کت که این نسخه استارت روان شدن سیستم عامل اندروید رو زد ! به این صورت که با گوشی های دارای ۵۱۲ مگابایت رم هم سازگاری داشت !!!
در نسخه های بعد دیگه گوگل افتاده بود رو غلتک و اندروید رو بهینه تر از قبل میکرد طوری ک از لگ و هنگ خبری نبود و حتی متریال دیزاین هم وارد ماجرا شد!!

پنج نسخه آخر : آبنبات چوبی ٫ مارشمالو ٫ نوقا ٫ اوریو نسخه های برتر اندروید هستن که به محبوبیت اندروید بیشتر از قبل کمک کردن و باعث شدن اندروید الان به یکی از محبوب ترین های گوشی موبایل مبدل شه و با ایفون رقابت تنگاتنگی داشته باشه (شاید خیلیا بگن اصلا باهم قابل مقایسه نیستن و این بهتر از اونه یا اون بهتر از اینه !! اما اگر به بازار جهانی نگاه کنیم و مردم رو معیار قرار بدیم .. اندروید دارای محبوبیت بیشتری بین مردم جهان هست چرا؟ به دلیل منعطف بودن محض و ارزانی

انواع اپلیکیشن

به طور عمده اگر بخوایم اپلیکیشن های موبایلی رو به چند دسته تقسیم کنید , دسته های زیر رو خواهیم داشت

۱- Native Apps

برنامه های بومی یا اصطلاحا native همونطور که از نامش مشخصه بصورت بومی برای یک پلتفرم یا سیستم عامل موبایلی خاص ارائه میشود که طبیعتا از نظر سرعت اجرا و UI , UX در سطح بهتری از انواع دیگه قرار دارد چون مشخصا برای یک پلتفرم خاص نوشته شده پس تمامی نیاز های آن پلتفرم در این نوع برنامه ها جواب داده شده. از معایب این نوع اپلیکشین ها هم میتوان به هزینه زیادی که مصرف میشود اشاره کرد , منظور از هزینه تولید چند اپلیکیشن مناسب با پلتفرم های مختلف است که طبیعتا هرکدام هم پشتیبانی و آپدیت های خودرا نیاز دارد.

iOS on Objective-C or Swift
Android on Java or kotlin
Windows Phone on Net

۲- Hybrid Apps

اپ های هایبرید یا Hybrid در واقع اپ هایی هست که یکبار نوشته میشوند و برای انواع موبایل ها با انواع سیستم عامل ها استفاده میشوند ! خب در نگاه اول این روش نوشتن اپلیکیشن خیلی هوس برانگیزتر است چراکه کاری را که باید به تعداد پلتفرم های مورد نیاز تکرار کنیم تنها کافی ست یکبار انجام دهیم و در انواع پلتفرم ها استفاده کنیم !! اما مشکل این روش اپلیکیشن ساختن این است که باید یک اپ با UI , UX یکسان برای انواع پلتفرم ها که هرکدام استاندارد خاصی در این زمینه دارند ارائه داد که قطعا به کیفیت اپ های بومی نخواهد شد و حتی از نظر پرفورمنس و کارایی اپ هم چون متناسب با ساختار یک پلتفرم خاص نوشته نشده ممکن است با برخی پلتتفرم ها کارایی مطلوبی نداشته باشد.

Xamarin , React Native , Ionic , Angular Mobile Sencha Touch

۳- Web Apps

وب اپلیکیشن ها درواقع وب سایت های ریسپانسیوی هستند که تنها کاربر را به یک آدرس ‌URL هدایت میکنند. پس طبیعیست که این نوع اپلیکیشن ها هم کارایی یک اپلیکیشن بومی را ندارند و تنها درحد یک وب سایت میتوان از آنها انتظار داشت. این نوع اپلیکیشن ها هیچ محدودیتی برای سخت افزاری که روی آن اجرا میشوند ندارد بلکه با کمترین سطح سخت افزار نیز قابل اجرا هستند و تنها کافی ست یک اتصال خوب به اینترنت وجود داشته باشد و این مسئله ست که اگر اینترنت دچار مشکل شود تمامی UI , UX نیز به هم میریزد.

در انتها میتوان به جرئت گفت اگر میخواهید یک اپلیکیشن با کیفیت داشته باشید به هر پلتفرم احترام بگذارید و یک اپ اختصاصی متناسب با شرایط آن , ارائه دهید!
اگر بخواهیم به گروه بندی گوگل پلی هم نگاهی کنیم که گروه های تعریف شده و معتبر اپلیکیشن های اندروید است نیز خالی از لطف نیست!
Game (بازی ها) , Buisness (تجاری) , Education (آموزشی) , Lifestyle (سبک زندگی) , Entertaiment (سرگرمی) , Utilities (کاربردی) , Travel (سفر) , Book (کتاب) , Health and Fitness (سلامت) , Food and Drink (غذا و نوشیدنی)

برنامه نویسی چه بخش هایی دارد ؟!

خب طبیعی ست که هربرنامه ای تحت قالب هر پلتفرمی شامل دو روی اصلی میباشد بک اند و فرانت اند !
شما فکر کنید اپلیکیشن یک فیلم سینمایی ست که بک اند آن درواقع پشت صحنه آن فیلم است که وظیفه ایجاد بستر مناسب برای عملکرد درست و ارائه فیلم به بهترین نحو ممکن میباشد(انجام کارهایی مثل تنظیم صدا با ابزارهای مناسب ,فیلمبرداری با دوربین های با کیفیت و …) و فرانت اند هم بازیگرانی هستن که با ظاهر مناسب فیلم به روی صحنه آمده و بازی میکنند.

درواقع مردم یا کاربران تنها بازیگران یا فرانت اند را میبینند اما بازیگران بدون بک اند هیچ کارایی ندارند و همچنین بک اند بدون فرانت اند کارایی مطلوبی نخواهد داشت!
پس در مجموع میتوان گفت فرانت اند یا رونمای اپلیکیشن درواقع شامل UI , UX مناسب میباشد و بک اند شامل روش های اتصال به سرور و مدیریت داده ها و دستوراتی که عملکرد اپلیکیشن را مشخص میکنند , است.
قبل از اینکه به جزئیات فرانت اند و بک اند اپلیکیشن ها اندروید بپردازیم خالی از لطف نیست که یک نکته را یاداوری کنیم که اغلب افراد زیادی از ناآگاهی دچار این اشتباه میشوند : عبارت “برنامه نویسی اندروید” وجود خارجی ندارد ! ما برنامه نویسی اندروید نداریم درواقع برنامه نویسی به زبان جاوا یا کاتلین برای پلتفرم اندروید داریم ! اندروید چیزی جز سیستم عامل نیست و ما با این دو زبان با این سیستم عامل سبز! ارتباط برقرار میکنیم 🙂

در حیطه و مضمون کاری ما یعنی ساخت اپلیکیشن اندروید و توسعه اپلیکیشن اندروید , عوامل دخیل فرانت اند و بک اند به شرح زیر است :
در سمت فرانت اند اپلیکیشن های اندروید مهم ترین گزینه هایی که استفاده میشوند :

Material Design

متریال دیزاین در یکی از کنفرانس های خبری گوگل در سال ۲۰۱۴ معرفی شد و خیلی سریع از مرز گوشی های همراه عبور کرد و وارد صنعت وب نیز شد !
این نوع طراحی به دلیل سادگی و جذابیت توانست خیلی سریع رشد کند. درواقع میتوان گفت متریال دیزان نسخه مکتوب و علمی flat یا تخت است.
در واقع در این طراحی ابجکت ها قابل لمس تر و طبیعی تر شده اند اما خیلی از طراحی فلت فاصله نگرفته بلکه میتوان گفت همان طراحی تخت یا فلت با ویژگی های ملموس پذیر تر است برای مثال سایه هایی که در جاهای خاص با شدت رنگ مناسب قرار گرفته اند.

Constraint Layout

یکی دیگر از عوامل دخیل فرانت اند انواع لایه ها و ویو هایی ست که ما در فایل های xml بیشتر با آنها سروکار داریم.
میتوان گفت شاخص ترین و جذاب ترین ویویی ک میتوان در فایل xml یافت constraint layout است که به جرئت میتوان گفت لایه ای نیست که با این ویو نتوان ایجاد کرد!
به قولی میتوان با این ویو صفحات اپ را تنها نقاشی کرد !! این ویو دارای ابزار ها و ویژگی های ست که اگر آنها را بطور کامل زمان طراحی بکار گرفت در نهایت یک لایه کاملا ریسپانسیو در تمام سایز گوشی ها خواهیم داشت

در سمت بک اند اپلیکیشن های اندروید نیز مهم ترین گزینه هایی ک استفاده میشوند شامل :

java / kotlin

طبیعتا اولین چیزی که در بک اند استفاده میشه زبان برنامه نویسی ست که بک اند اون پروژه رو ساخته ! زبان هایی هم که برای ساخت اپلیکیشن اندروید استفاده میشوند (اگر زبان های native را در نظر بگیریم) زبان های جاوا و کاتلین هستند که جاوا محصول شرکت اوراکل و کاتلین محصول شرکت گوگل است.

retrofit

روش های ارتباط به سرور که با کتابخانه هایی مثل retrofit یا volley  این کار میسر خواهد بود.

rxjava

کتابخوانه های دیگری نیز هستند مثل RxJava  که از معجزات کدنویسی هستن و کسایی که مدت هاست برای ساخت اپلیکیشن اندروید با این کتابخانه کار میکنن ادعا میکنن که هیچ کاری نیست که نتونن با این کتابخانه انجام ندن.

rxBinding

این کتابخانه متعلقاتی مثل RxBinding هم داره که اون رو فوق العاده جذاب تر میکنه طوری که با کدنویسی لامبدا میشه به لایه با استفاده از کدهای کمتری ارتباط برقرار کرد.

design patterns

دیگر منابعی که در بک اند خیلی به ما کمک میکنند میشه به دیزاین پتر ها یا معماری های کدنویسی اشاره کرد که هرکدام به تمیزی و توسعه کد کمک شایانی میکند.
برای مثال اندروید دیزاین پترن های MVC , MVP , MVVM را ارئه داده که از بیس ترین تا پیشرفته ترین حالت را پشتیبانی میکند

android architects

جدا از دیزاین پترن ها , ما دراندروید معماری هایی را نیز داریم که عملکرد آنها تاحدودی شبیه به الگوهای طراحی یا design pattern هاست اما تفاوت های عمده ای نیز دارند برای مثال الگو های طراحی برای پروژه های نه چندان بزرگ و نه چندان کوچک (متوسط رو به بزرگ) استفاده میشود و برای تعیین رفتار و روابط و .. در کدها استفاده میشود اما الگوهای معماری یا architectural patterns در پروژه های بزرگ که بسیار گسترده استفاده میشود که زیر ساخت کدها و روابط پیچیده تر از آن است که با الگو های رفتاری از هم تفکیک و هر کدام به صورت مستقل درست و تمیز عمل کنند .تعدادی از معماری های مرسوم

Hexagonal

Onion

Screaming

DCI

BCE

Clean

dagger

از دیگر کتابخانه هایی کی در اندروید باید استفاده کنیم و این استفاده کردن مارو از شر خیلی مشکلات و پیچیدگی ها در زمان آپدیت راحت میکنه کتابخانه dagger هست که وظیفه جداکردن و کم کردن وابستگی ها بین کلاس ها را دارد.

ما برای شما چیکار میتونیم بکنیم؟

– انجام پروژه های اندرویدی (ساخت اپلیکیشن اندروید) با زبان جاوا یا کاتلین به صورت آفلاین یا آنلاین
– در سطح ابتدایی با کدنویسی بیسیک و استفاده حداقل از کتابخانه ها
– در سطح متوسط با کدنویسی تمیز و استفاده از کتابخانه های لازم
– در سطح حرفه ای با کدنویسی تمیز و واکنش گرا با استفاده از کتابخانه های نام برده به جای استفاده زیاد از کدهای تکراری معمول
– آموزش پروژه محور انواع اتصالات سرور با کتابخانه های گوناگون برای دریافت انواع اطلاعات با ساختار گوناگون
– آموزش یک یا چند کتابخانه یا الگو و معماری خاص بصورت پروژه محور
– آموزش پروژه محور یک برنامه با مضمون خاص
– آموزشی کتابخانه یا عوامل تاثیر گذار در فرانت اند بصورت پروژه محور
– و…