نقشه راه برنامه نویسی اندروید

قبل از شروع برنامه نویسی اندروید ابتدا باید با این سیستم عامل آشنا بشید.سیستم عامل اندروید بر پایه لینوکس هستش و متن باز میباشد.و امروزه بسیاری از افراد از این سیستم عامل استفاده میکنند از TV های هوشمند تا گوشی ها تبلت ها و ساعت ها و…..این سیستم عامل از پرفروشترین سیسیتم عامل های جهان بود ه وهست. حدود 75 درصد از سهم بازار رو هم تصاحب کرده و مالک این سیستم عامل شرکتی نیست جز گوگل جان عزیز.خب حالا که این سیستم عامل سهم بزرگی از بازار رو داره و شرکت بزرگی مثل گوگل پشته اونه حیفه که ما نتونیم واسش برنامه بنویسیم سیستم عاملشم که بر پایه لینوکس هستش و متن باز.

رسیدیم به مرحله‌ی جالب کار و شاید سخترین مرحله کار که شروع برنامه نویسی اندروید با یکی از زبان های برنامه نویسی جاوا,کاتلین یا دارت هستش.

اگه میخای برنامه نویسی رو شروع کنی حتما باید یکی از این سه زبان رو که بالا معرفی کردیم رو خوب باهاش آشنا بشی.

باید حسابی با سینتکس این زبان ها آشنا بشید و موارد مربوط به شی گرایی و حلقه ها و دستورات شرط رو بشناسید.

برای برنامه نویسی اندروید چی باید یاد بگیرم؟

جاوا(Java):

زبان برنامه نویسی جاوا یک زبانه فوق العاده قدرتمند در اکثر فیلد های برنامه نویسی میباشد از هوش مصنوعی تا سمت سرور و بازی سازی و ماشین لرنینگ و حتی برنامه نویسی اندروید که گوگل ازش استفاده کرده و یک زبان برنامه نویسی شی گرا میباشد. یه جورایی این زبان آچار فرانسس و توی همه‌ی زمینه ها  میشه ازش استفاده کرد.

زبان برنامه‌نویسی جاوا در اوایل دهۀ ۱۹۹۰ میلادی توسط James Gosling و همکارانش در شرکت Sun Microsystems پایه‌ریزی شد که در ابتدا Oak به معنی «بلوط» نام داشت. در حقیقت، نارضایتی گاسلینگ از اصول برنامه‌نویسی در زبان سی‌پلاس‌پلاس از یکسو و نارسایی‌های این زبان از سوی دیگر موجب شد تا وِی جاوا را بر مبنای زبان سی‌پلاس‌پلاس طراحی کند و بدین ترتیب بتواند ایده‌های مد نظر خود را به نحو بهتری روی این زبان جدید عملی سازد (همچنین زبان جاوا دارای سینتکسی مشابه زبان سی‌پلاس‌پلاس می‌باشد اما این در حالی است که در مقایسه با سی‌پلاس‌پلاس از سادگی بیشتری برخوردار است. 

این زبان یه شعار داره که میگه:

یه بار بنویس و همه جا ازش استفاده کن.

اما آیا برای شروع یادگیری برنامه نویسی اندروید نیازه که جاوا رو یادبگیریم ؟

باید بگم که الزامی دیگه برای یادگیری این زبان وجود نداره با وجود زبان کاتلین و حتی دارت.

قبلا در سال های دور که خودم برنامه نویسی اندروید رو شروع کردم فقط و فقط باید جاوا رو یاد میگرفتم ولی در حال حاضر الزامی نیست که این زبان رو یاد بگیرید.

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

و اما کاتلین این زبان برای یادگیری برنامه نوسی اندروید بشدت ضروری هستش.اگه میخای از تکنولوژی های روز در برنامه نویسی اندروید استفاده کنی حتما باید از کاتلین استفاده کنی.

کاتلین یه زبان برنامه نوسی ایستا هسش که روی ماشین مجازی جاوا اجرا میشه سازنده این زبان برنامه نوسی شرکت JetBrains میباشد.این شرکت در واقع در سنپترزبورگ روسیه واقع شده و نام این زبان هم از یکی از جزایر همین شهر انتخاب شده است.در سال 2011 از پروژه ی کاتلین رونمایی شد و اگر اشتباه نکنم سال 2017 گوگل کاتلین رو معرفی کرد برای توسعه و برنامه نوسی اندروید که خدایی دمش گرم خیلی حال داد به برنامه نویساش.

کاتلین بشدت در خلاصه و کمتر نوشتن کد ها تاکید داره و خیلی خیلی برنامه نویسی رو راحت تر و بروز تر کرده.کاتلین یه جورایی اومد که پدره پیر خودش که جاوا بود رو تو مسیر اندروید یاری و کمک بده بهش.و یه جورایی با هم همکارن.

کاتلین(Kotlin):

زبان دارت(Dart) و فریمورک فلاتر(Flutter):

میرسیم به زبان دارت که این زبان رو هم در سال 2011 گوگل معرفی کرد برای ساخت اپلیکیشن ها و وب اپلیکیشن ها این زبان معرفی شد تا انقلاب و تحولی در اپلیکیشن ها ایجاد کند و انصافا هم ایجاد کرد.دارت سینتکسی شبیه به جاوا اسکریپت داره و برای کسایی که قبلا جاوا اسکریپت کار کردند یادگیریش به مراتب راحت تره هستش.این زبان به شدت داکیومنت قوی برای یادگیری داره و به شخصه ندیدم کامل تر از داکیومنت زبان دارت.

و اما ما از زبان برنامه نویسی دارت استفاده میکنیم تا با فریم ورک یا چارچوب فلاتر بتونیم آپ های خودمان را بنویسیم.با استفاده از فلاتر برنامه نوسی ها میتونند یکبار کد بزنن و روی چندین سیستم عامل خروجی بگیرند. مثل اندروید -ios- desktop و حتی وب.

پس با این اوصاف فریم ورک فلاتر بشدت عالی و خفن هستش چون با یه بار کد زدن چندین خروجی داریم یا به اصطلاح این فریم ورک کراس پلتفرم هستش.

اما لازمه‌ی یادگیری این فریم ورک جذاب هم اینکه شما زبان دارت رو بلد باشید.زبان دارت هم مثل زبان کاتلین و جاوا از شی گرایی و قوانینش پیروی میکنه.

حالا که با زبان‌های برنامه نویسی که با اونا میشه اندروید رو توسعه داد آشنا شدیم باید این زبان ها رو داخل یه محیطی اجرا کنیم روی هوا که نمیشه کداهای خودمان رو اجرا کنیم.نگران نباشید گوگل شما رو تنها نذاشته و به شما محیط توسعه اندروید استدیو رو معرفی کرده.حالا اندروید استدیو چیه؟اندروید استدیو یه Ide هستش که هسته‌ی اصلیش توسط شرکت JetBrains تولید و توسعه داده شده و سپس گوگل اومد و ازش به عنوان اصلی ترین محیط برای توسعه‌ی اندروید استفاده کرد.این محیط توسعه بر پایه گریدل کار میکنه که انشالله کامل باهاش آشنا میشید.

واما هر چقدر از خوبی های اندروید استدیو بگم کم گفتم  شما داخل این محیط توسعه میتوانید از هر سه زبان جاوا-کاتلین و دارت استفاده کنید. و پروژه های خودتون رو با هر کدام از این زبان ها که میخواهید لانچ کنید.

انواع پلاگین ها رو میتونید داخل این محیط توسعه نصب کنید که به راحت کد زدن شما کمک میکند.

وامکاناتی مثل دیباگ کردن کد و …… کلی موارد دیگه که بیشتر باهاشون آشنا میشید.

پس اصلی ترین محیط توسعه‌ی اندروید در حال حاضر AndroidStudio میباشد.

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

حتی شما میتونید از visualStudioCode  هم استفاده کنید و برای برنامه نویسی اندروید شخصی سازیش کنید و ازش استفاده کنید.

ولی به نظرم اندروید استدیو اولین گزینتون باشه.

اندروید استدیو چیه؟

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

بعد از اینکه با محیط توسعه اندروید آشنا شدیم حالا بیایید بهتون بگم توی این مسیر باید چه چیزهایی رو باید کامل بدونید من به صورت تیتر وار موارد رو میگم و به موقعش واستون توضیح میدم.

در برنامه نویسی اندروید شما باید به: AndroidManifest-Gradle-Xml-ADB-AndroidEmulator تسلط کامل داشته باشید. این موارد از جمله موارده ساده اندروید میباشند و برای شروع برنامه نویسی اندروید لازمه.

قدم بعدی تسلط کافی بر Activityها و چرخه‌ی حیاط اونا هستش که باید با مواردی همچون ActivityLifecycle – Task & Back stack آشنا بشید.

بعد از این موارد شما باید با انواع ویو‌ها در اندروید آشنا بشید همه ظاهری که شما در برنامه های اندرویدی میبینید توسط ویو ها ایجاد میشن مثل دکمه ها متن ها لیست ها و…..

پس باید با مواردی مثل : TextView-Button-SnackBar-ToolBar-RecyclerView-Fragments-TabLayout-Layout و….. آشنا باشید.

برای حرفه‌ای شدن و خفن شدن تو مسیر برنامه نوسی اندروید نبیاد از موراد زیر غافل شد حالا اون موراد چی هستن؟

مورادی مثل : Context-Intent-IntentFilter-Service-Notification-BoundService-Broadcast این موارد خیلی مهمن و شما باهاشون وارد فازه حرفه ای شدن میشید.

توی این مرحله از مورادی مثل Resource-Theme-style-Strings- drawable – Navigation Component -Fragment Transaction غافل نشید.

اهان تا یادم نرفته مباحث مربوط به Thread ها رو هیچ وقت فراموش نکن که از نون شب تو برنامه نویسی اندروید واجب تره و خیلی میتونه کمکتون کنه همچنین مباحث مربوط به کوروتین Coroutines که بشدت لازمه برای کنترل کردن ترد ها و استفاده‌ی بهینه از اونها .

 

با این موارد حرفه ای میشی

ذخیره سازی اطلاعات در اندروید و ارتباط با سرور

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

اگه آفلاین باشه باید موراد زیر رو بدونید:

SharedPreferences-SQLite-Room-ORMs-Realm با این موراد شما میتونید اطلاعات رو در برنامه خودتون ذخیره سازی کنید و به کاربر نمایش بدید.

و اما ارتباط با سرور این مورد هم تاکید میکنم که از نون شب واجب تره برای یه برنامه نویس اندروید چون اکثره برنامه‌ها و آپ ها دیگه آنلاین هستن مثل اسنپ-دیجی کالا-کافه بازار و ….

پس برای ارتباط با سرور باید موراد زیر رو بلد باشید:

Json-RestApi-Retrofit-Volley-OkHttp

مباحث خفن که از تو یه غول تو برنامه نویسی میسازه

RxJava فراموش نشه!!!

توی این مرحله سطح شما در برنامه نویسی اندروید بالا هستش و باید مورادی رو یادبگیرید که شما رو تبدیل میکنه به یک فول استک یا یه برنامه نویس خیلی خفن در اندروید اونم مبحث شیرین و البته چالشیه معماری ها هستش. ما در حال حاضر با سه تا از معماری های خوبو خفن اندروید سر و کار داریم که Mvp-Mvi-Mvvm  هستن.

بهتون این قول رو میدم اگه به خوبی معماری ها رو یاد بگرید هم کد زدنتون خیلی خفن تر میشه و راحت تر و همه هم دنبال شما راه میوفتن که شما رو بکشونن توی شرکتشون یا پروژه هاشون رو به شما بسپارن.

اون موقعس که شما به درآمد فوق العاده ای از برنامه نویسی اندروید میرسید.

تا یادم نرفته این موضوع رو هم بگم که حین یادگیری مباحث مربوط به معماری ها باید RxJava رو هم یادش بگیری.

ببین این RxJava با قابلیتهایی که داره یه کارایی واست انجام میده که شاخ در میاری.

RxJava مخفف کلمه Reactivx میباشد و به معنی برنامه نویسی واکنشی میباشد.

برنامه نویسی واکنشی یعنی برنامه نویسی غیرهمزمانی که مبتی بر رخداد هستش.

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

به بیان ساده بخام توضیح بدم وقتی شما پروژه ای میزنید خب درآینده ممکنه پروژتون داخلش تغییراتی ایجاد بشه یا یه نفر دیگه بیاد این تغییرات رو اعمال کنه تزریق وابستگی یا Dependency Injection بما کمک میکنه که زمانی که میخواهیم تغییراتی ایجاد کنیم دچار آشفتگی و بهم ریختگیه کد ها و کلاس های خومون نشیم و با کمترین تغییرات در کد بیشتر کارایی را فراهم کنیم.

حالا از موارد مهم تزریق وابستگی در اندروید به مهمترینشون اشاره میکنم و سره فرصت مناسب و درآینده نزدیک کامل در مورد همشون توضیح میدم.

در تزرق وابستگی شما باید به این موارد مسلط باشید:

Dagger-Hilt-Koin

تزریق وابستگی چیه؟

این موارد رو هم فراموش نکنید!!!

بارگذاری تصاویر در اندروید به چه شکل هستش؟

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

 jetPack Compose  در مراسم گوگل 2019 معرفی شد و برای طراحی رابط کاربری هستش که بشدت مورد استقبال برنامه نویسان قرار گرفته و روز به روز در حال پیشرفت هستش.
جت پک کامپوز باعث میشه که کد های تکراری کمتر بشن و باعث ساده تر شدن طراحی های خیلی پیچده بشه.
پس یادگیریش خالی از لطف نیس و جایگزین خوبی برای Xml  هستش.
 
و اما بارگذاری تصاویر در اندروید به چه صورت هستش؟
ما در اندروید به کمک چند کتابخانه ی خوب میتونید تصاویر رو از سرور یا به صورت آفلاین لود کنیم که این کتابخانه ها رو براتون لیست کردم و خودم به شخصه از دو موردش استفاده‌ی بیشتری کردم:
پیشنهاد من برای تصاویر کتابخانه‌ی Coil-Glide هستش که بشدت خفنو قدرتمند هستند.
کتابخانه های دیگه ای هم وجود دارند مثل :Picasso-Fresco که میتونید ازشون استفاده کنید و حالشو ببرید!!!

و اما قدم پایانی که خیلی مهمه موقعی هستش که شما میخواهید برنامتون رو که ساختید منتشر کنید در مارکت ها پس باید با یه سری از موارد حتما آشنا بشید.و اگه اون موراد رو ندونید به مشکل برمیخورید اون موارد رو من واستون لیست کردم:

Prougard-Apk building-App bundle-Developer console-Install apps و…… 

موارد خیلی از این دست که حتما باید کامل بدونید اونارو البته ما هم بهتون کمک میکنیم که این موارد رو کامل یادشون بگیرید.

قدم پایانی و انتشار برنامه

سخن پایانی

و اما سخن پایانی امیدورام که اگه یه روزی وارد شاخه برنامه نویسی اندروید شدی مثل تصویر بالا یک قهرمان از خودت توی این فیلد بسازی و هر روز به خودت افتخار کنی.یادت نره که قهرمان ها همیشه با تلاش و پشتکاره مستمر یه قهرمان میشن و تو هم میتونی قهرمانه زندگی خودت بشی و توی فیلد تخصصه خودت بترکونی.

به امید روزی که یه قهرمان بشی تو حوزه‌ی برنامه نویسی اندروید. امید وارم تونسته باشیم با این متن شما رو کمی راهنمایی کرده باشیم.

دوستتون داریم.تیم کافی کدر.