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

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

📚 12 دوره آموزشی
🗺️ 12 گام یادگیری

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

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

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

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

مراحل و سرفصل‌های یادگیری برنامه نویسی اندروید

برای تسلط کامل بر برنامه نویسی اندروید، این نقشه راه به مراحل مشخص تقسیم شده است. پیشنهاد می‌کنیم مراحل را به ترتیب و همراه با تمرین عملی طی کنید:

مرحله 1

مرحله 1: دوره صفر: آشنایی با برنامهنویسی موبایل

فصل اول: دنیای اپلیکیشنها

• نرمافزار و اپلیکیشن چیست؟

درس 1: نرمافزار و اپلیکیشن چیست؟

• تفاوت اپلیکیشن موبایل، وب و دسکتاپ

درس 2: تفاوت اپلیکیشن موبایل، وب و دسکتاپ

• سیستمعامل چیست؟

درس 3: سیستمعامل چیست؟

• Android چگونه اپلیکیشن را اجرا میکند؟

درس 4: Android چگونه اپلیکیشن را اجرا میکند؟

• اپلیکیشن بومی یا Native چیست؟

درس 5: اپلیکیشن بومی یا Native چیست؟

• تفاوت Native، وباپ و اپلیکیشن چندسکویی

درس 6: تفاوت Native، وباپ و اپلیکیشن چندسکویی

• Frontend موبایل چیست؟

درس 7: Frontend موبایل چیست؟

• Backend و API چه نقشی دارند؟

درس 8: Backend و API چه نقشی دارند؟

فصل دوم: اجزای یک اپلیکیشن

• صفحه یا Screen

درس 1: صفحه یا Screen

• دکمه، متن، تصویر و ورودی

درس 2: دکمه، متن، تصویر و ورودی

• Navigation چیست؟

درس 3: Navigation چیست؟

• دادههای محلی و آنلاین

درس 4: دادههای محلی و آنلاین

• اعلان یا Notification

درس 5: اعلان یا Notification

• دسترسیهای دوربین، موقعیت و فایل

درس 6: دسترسیهای دوربین، موقعیت و فایل

• نصب، اجرا و حذف برنامه

درس 7: نصب، اجرا و حذف برنامه

• بهروزرسانی اپلیکیشن

درس 8: بهروزرسانی اپلیکیشن

فصل سوم: ابزارهای توسعه

• برنامهنویس اندروید از چه ابزارهایی استفاده میکند؟

درس 1: برنامهنویس اندروید از چه ابزارهایی استفاده میکند؟

• نصب Android Studio

درس 2: نصب Android Studio

• آشنایی با محیط Android Studio

درس 3: آشنایی با محیط Android Studio

• Project و Module

درس 4: Project و Module

• پوشهها و فایلهای پروژه

درس 5: پوشهها و فایلهای پروژه

• Emulator چیست؟

درس 6: Emulator چیست؟

• ساخت دستگاه مجازی

درس 7: ساخت دستگاه مجازی

• اتصال گوشی واقعی

درس 8: اتصال گوشی واقعی

• اجرای اولین برنامه

درس 9: اجرای اولین برنامه

• توقف و اجرای مجدد برنامه

درس 10: توقف و اجرای مجدد برنامه

فصل چهارم: روش یادگیری برنامهنویسی

• تفاوت دیدن آموزش و یادگیری

درس 1: تفاوت دیدن آموزش و یادگیری

• کدنویسی همراه مدرس

درس 2: کدنویسی همراه مدرس

• تمرین مستقل

درس 3: تمرین مستقل

• خطا بخشی از برنامهنویسی است

درس 4: خطا بخشی از برنامهنویسی است

• چگونه پیام خطا را بخوانیم؟

درس 5: چگونه پیام خطا را بخوانیم؟

• چگونه سؤال فنی بپرسیم؟

درس 6: چگونه سؤال فنی بپرسیم؟

• استفاده صحیح از جستوجو

درس 7: استفاده صحیح از جستوجو

• استفاده صحیح از هوش مصنوعی

درس 8: استفاده صحیح از هوش مصنوعی

• خطر کپیکردن کد بدون فهم

درس 9: خطر کپیکردن کد بدون فهم

• ساخت دفترچه خطاها و آموختهها

درس 10: ساخت دفترچه خطاها و آموختهها

مرحله 2

مرحله 2: دوره اول: مبانی برنامهنویسی با Kotlin

فصل اول: اولین برنامه Kotlin

• Kotlin چیست؟

درس 1: Kotlin چیست؟

• ساخت فایل Kotlin

درس 2: ساخت فایل Kotlin

• تابع main

درس 3: تابع main

• نمایش متن با println

درس 4: نمایش متن با println

• دستور و عبارت

درس 5: دستور و عبارت

• Comment

درس 6: Comment

• اجرای برنامه

درس 7: اجرای برنامه

• خطای Syntax

درس 8: خطای Syntax

• خواندن اولین پیام خطا

درس 9: خواندن اولین پیام خطا

فصل دوم: متغیرها

• متغیر چیست؟

درس 1: متغیر چیست؟

• تعریف متغیر با val

درس 2: تعریف متغیر با val

• تعریف متغیر با var

درس 3: تعریف متغیر با var

• تفاوت val و var

درس 4: تفاوت val و var

• انتخاب نام مناسب

درس 5: انتخاب نام مناسب

• تغییر مقدار متغیر

درس 6: تغییر مقدار متغیر

• ثابت نگهداشتن داده

درس 7: ثابت نگهداشتن داده

• Type Inference

درس 8: Type Inference

• مشخصکردن نوع داده

درس 9: مشخصکردن نوع داده

فصل سوم: انواع داده

• String

درس 1: String

• Int

درس 2: Int

• Long

درس 3: Long

• Float و Double

درس 4: Float و Double

• Boolean

درس 5: Boolean

• Char

درس 6: Char

• تبدیل نوع داده

درس 7: تبدیل نوع داده

• دریافت ورودی کاربر

درس 8: دریافت ورودی کاربر

• String Template

درس 9: String Template

• استفاده از $ در متن

درس 10: استفاده از $ در متن

فصل چهارم: عملگرها

• جمع، تفریق، ضرب و تقسیم

درس 1: جمع، تفریق، ضرب و تقسیم

• باقیمانده تقسیم

درس 2: باقیمانده تقسیم

• افزایش و کاهش

درس 3: افزایش و کاهش

• عملگرهای مقایسه

درس 4: عملگرهای مقایسه

• برابری و نابرابری

درس 5: برابری و نابرابری

• عملگر &&

درس 6: عملگر &&

• عملگر

درس 7: عملگر

• عملگر !

درس 8: عملگر !

• ترکیب چند شرط

درس 9: ترکیب چند شرط

• اولویت عملگرها

درس 10: اولویت عملگرها

فصل پنجم: تصمیمگیری

• مفهوم تصمیمگیری

درس 1: مفهوم تصمیمگیری

• دستور if

درس 2: دستور if

• else

درس 3: else

• else if

درس 4: else if

• استفاده از if بهعنوان Expression

درس 5: استفاده از if بهعنوان Expression

• شرط تودرتو

درس 6: شرط تودرتو

• دستور when

درس 7: دستور when

• چند حالت در when

درس 8: چند حالت در when

• شرطهای خوانا

درس 9: شرطهای خوانا

• جلوگیری از شرطهای پیچیده

درس 10: جلوگیری از شرطهای پیچیده

فصل ششم: حلقهها

• چرا به تکرار نیاز داریم؟

درس 1: چرا به تکرار نیاز داریم؟

• حلقه for

درس 2: حلقه for

• Range

درس 3: Range

• حرکت صعودی و نزولی

درس 4: حرکت صعودی و نزولی

• حلقه while

درس 5: حلقه while

• حلقه do-while

درس 6: حلقه do-while

• break

درس 7: break

• continue

درس 8: continue

• حلقه تودرتو

درس 9: حلقه تودرتو

• جلوگیری از حلقه بینهایت

درس 10: جلوگیری از حلقه بینهایت

فصل هفتم: توابع

• تابع چه مشکلی را حل میکند؟

درس 1: تابع چه مشکلی را حل میکند؟

• تعریف تابع

درس 2: تعریف تابع

• اجرای تابع

درس 3: اجرای تابع

• پارامتر

درس 4: پارامتر

• آرگومان

درس 5: آرگومان

• مقدار بازگشتی

درس 6: مقدار بازگشتی

• نوع خروجی

درس 7: نوع خروجی

• مقدار پیشفرض

درس 8: مقدار پیشفرض

• Named Argument

درس 9: Named Argument

• تابع تکعبارتی

درس 10: تابع تکعبارتی

• تقسیم مسئله به توابع کوچک

درس 11: تقسیم مسئله به توابع کوچک

• نامگذاری تابع

درس 12: نامگذاری تابع

مرحله 3

مرحله 3: دوره دوم: Kotlin کاربردی و شیگرایی

فصل اول: Null Safety

• مقدار Null چیست؟

درس 1: مقدار Null چیست؟

• چرا Null باعث خطا میشود؟

درس 2: چرا Null باعث خطا میشود؟

• نوع Nullable

درس 3: نوع Nullable

• Safe Call با ?.

درس 4: Safe Call با ?.

• Elvis Operator

درس 5: Elvis Operator

• بررسی Null با if

درس 6: بررسی Null با if

• let

درس 7: let

• خطر !!

درس 8: خطر !!

• طراحی داده بدون Null غیرضروری

درس 9: طراحی داده بدون Null غیرضروری

فصل دوم: List و Collection

• Collection چیست؟

درس 1: Collection چیست؟

• List

درس 2: List

• MutableList

درس 3: MutableList

• دسترسی به عضو

درس 4: دسترسی به عضو

• اضافه و حذف عضو

درس 5: اضافه و حذف عضو

• پیمایش فهرست

درس 6: پیمایش فهرست

• forEach

درس 7: forEach

• map

درس 8: map

• filter

درس 9: filter

• find

درس 10: find

• sortedBy

درس 11: sortedBy

• List شامل Object

درس 12: List شامل Object

فصل سوم: Set و Map

• Set چیست؟

درس 1: Set چیست؟

• حذف داده تکراری

درس 2: حذف داده تکراری

• MutableSet

درس 3: MutableSet

• Map چیست؟

درس 4: Map چیست؟

• کلید و مقدار

درس 5: کلید و مقدار

• خواندن مقدار

درس 6: خواندن مقدار

• افزودن و حذف مقدار

درس 7: افزودن و حذف مقدار

• پیمایش Map

درس 8: پیمایش Map

• انتخاب Collection مناسب

درس 9: انتخاب Collection مناسب

فصل چهارم: کلاس و شیء

• شیء چیست؟

درس 1: شیء چیست؟

• Class چیست؟

درس 2: Class چیست؟

• ساخت اولین Class

درس 3: ساخت اولین Class

• Constructor

درس 4: Constructor

• Property

درس 5: Property

• Method

درس 6: Method

• ساخت چند Object

درس 7: ساخت چند Object

• مقدار پیشفرض

درس 8: مقدار پیشفرض

• Visibility

درس 9: Visibility

• مدلکردن کاربر و دوره

درس 10: مدلکردن کاربر و دوره

فصل پنجم: Data Class و Enum

• Data Class چیست؟

درس 1: Data Class چیست؟

• تولید خودکار توابع داده

درس 2: تولید خودکار توابع داده

• تابع copy

درس 3: تابع copy

• مقایسه اشیا

درس 4: مقایسه اشیا

• Enum Class

درس 5: Enum Class

• وضعیتهای محدود

درس 6: وضعیتهای محدود

• مدلکردن وضعیت سفارش

درس 7: مدلکردن وضعیت سفارش

• Sealed Class مقدماتی

درس 8: Sealed Class مقدماتی

• مدلکردن Loading، Success و Error

درس 9: مدلکردن Loading، Success و Error

فصل ششم: اصول شیگرایی

• Encapsulation

درس 1: Encapsulation

• Inheritance

درس 2: Inheritance

• Override

درس 3: Override

• Abstract Class

درس 4: Abstract Class

• Interface

درس 5: Interface

• Polymorphism

درس 6: Polymorphism

• Composition

درس 7: Composition

• ارثبری یا ترکیب؟

درس 8: ارثبری یا ترکیب؟

• جلوگیری از پیچیدگی غیرضروری

درس 9: جلوگیری از پیچیدگی غیرضروری

فصل هفتم: Lambda و توابع سطح بالاتر

• Lambda چیست؟

درس 1: Lambda چیست؟

• تابع بهعنوان ورودی

درس 2: تابع بهعنوان ورودی

• Trailing Lambda

درس 3: Trailing Lambda

• it

درس 4: it

• Callback

درس 5: Callback

• Function Type

درس 6: Function Type

• استفاده از Lambda در رویداد دکمه

درس 7: استفاده از Lambda در رویداد دکمه

• کاربرد Lambda در Compose

درس 8: کاربرد Lambda در Compose

فصل هشتم: مدیریت خطا

• Exception چیست؟

درس 1: Exception چیست؟

• try و catch

درس 2: try و catch

• finally

درس 3: finally

• چند نوع خطا

درس 4: چند نوع خطا

• throw

درس 5: throw

• پیام خطای مناسب

درس 6: پیام خطای مناسب

• خطای فنی در برابر خطای قابلنمایش

درس 7: خطای فنی در برابر خطای قابلنمایش

• جلوگیری از پنهانکردن خطاها

درس 8: جلوگیری از پنهانکردن خطاها

فصل نهم: ماژول و ساختار کد

• Package چیست؟

درس 1: Package چیست؟

• Import

درس 2: Import

• تقسیم کد به چند فایل

درس 3: تقسیم کد به چند فایل

• نامگذاری Package

درس 4: نامگذاری Package

• جداسازی Modelها

درس 5: جداسازی Modelها

• جداسازی منطق برنامه

درس 6: جداسازی منطق برنامه

• Utility Function

درس 7: Utility Function

• مستندسازی با KDoc

درس 8: مستندسازی با KDoc

• خوانایی و بازسازی کد

درس 9: خوانایی و بازسازی کد

مرحله 4

مرحله 4: دوره سوم: مبانی سیستمعامل Android

فصل اول: ساختار پروژه Android

• Project و Module

درس 1: Project و Module

• پوشه app

درس 2: پوشه app

• کدهای Kotlin

درس 3: کدهای Kotlin

• پوشه res

درس 4: پوشه res

• فایل Manifest

درس 5: فایل Manifest

• فایلهای Gradle

درس 6: فایلهای Gradle

• Dependency چیست؟

درس 7: Dependency چیست؟

• Build چیست؟

درس 8: Build چیست؟

• Debug و Release

درس 9: Debug و Release

• Sync کردن پروژه

درس 10: Sync کردن پروژه

فصل دوم: Activity

• Activity چیست؟

درس 1: Activity چیست؟

• MainActivity

درس 2: MainActivity

• نقطه شروع اپلیکیشن

درس 3: نقطه شروع اپلیکیشن

• متد onCreate

درس 4: متد onCreate

• ارتباط Activity و Compose

درس 5: ارتباط Activity و Compose

• Activity در برابر Screen

درس 6: Activity در برابر Screen

• یک Activity یا چند Activity؟

درس 7: یک Activity یا چند Activity؟

• نقش Activity در معماری جدید

درس 8: نقش Activity در معماری جدید

فصل سوم: چرخه حیات

• Lifecycle چیست؟

درس 1: Lifecycle چیست؟

• ایجاد صفحه

درس 2: ایجاد صفحه

• نمایش و فعالشدن

درس 3: نمایش و فعالشدن

• رفتن برنامه به پسزمینه

درس 4: رفتن برنامه به پسزمینه

• بازگشت به برنامه

درس 5: بازگشت به برنامه

• بستهشدن Activity

درس 6: بستهشدن Activity

• چرخش صفحه

درس 7: چرخش صفحه

• از دسترفتن State

درس 8: از دسترفتن State

• ثبت Lifecycle در Log

درس 9: ثبت Lifecycle در Log

• جلوگیری از عملیات نامناسب

درس 10: جلوگیری از عملیات نامناسب

فصل چهارم: Resources

• Resource چیست؟

درس 1: Resource چیست؟

• String Resource

درس 2: String Resource

• Color Resource

درس 3: Color Resource

• Dimension

درس 4: Dimension

• Drawable

درس 5: Drawable

• آیکونها

درس 6: آیکونها

• فونت

درس 7: فونت

• دسترسی با کلاس R

درس 8: دسترسی با کلاس R

• جداسازی متن از کد

درس 9: جداسازی متن از کد

• منابع برای زبانهای مختلف

درس 10: منابع برای زبانهای مختلف

فصل پنجم: Manifest و تنظیمات برنامه

• AndroidManifest چیست؟

درس 1: AndroidManifest چیست؟

• معرفی Application

درس 2: معرفی Application

• معرفی Activity

درس 3: معرفی Activity

• Launcher Activity

درس 4: Launcher Activity

• نام و آیکون برنامه

درس 5: نام و آیکون برنامه

• Theme

درس 6: Theme

• Permission

درس 7: Permission

• Exported Component

درس 8: Exported Component

• اینترنت

درس 9: اینترنت

• حداقل نسخه سیستمعامل

درس 10: حداقل نسخه سیستمعامل

فصل ششم: Emulator و دستگاه واقعی

• ساخت Emulator

درس 1: ساخت Emulator

• انتخاب اندازه نمایشگر

درس 2: انتخاب اندازه نمایشگر

• انتخاب نسخه Android

درس 3: انتخاب نسخه Android

• نصب روی دستگاه واقعی

درس 4: نصب روی دستگاه واقعی

• فعالسازی Developer Options

درس 5: فعالسازی Developer Options

• USB Debugging

درس 6: USB Debugging

• تست روی چند دستگاه

درس 7: تست روی چند دستگاه

• شبیهسازی چرخش

درس 8: شبیهسازی چرخش

• شبیهسازی اینترنت ضعیف

درس 9: شبیهسازی اینترنت ضعیف

• تفاوت Emulator و گوشی واقعی

درس 10: تفاوت Emulator و گوشی واقعی

فصل هفتم: Debugging

• Logcat

درس 1: Logcat

• ثبت Log

درس 2: ثبت Log

• فیلترکردن Logها

درس 3: فیلترکردن Logها

• Stack Trace

درس 4: Stack Trace

• Breakpoint

درس 5: Breakpoint

• اجرای خطبهخط

درس 6: اجرای خطبهخط

• مشاهده متغیرها

درس 7: مشاهده متغیرها

• خطای Build

درس 8: خطای Build

• خطای Runtime

درس 9: خطای Runtime

• خطای منطقی

درس 10: خطای منطقی

مرحله 5

مرحله 5: دوره چهارم: رابط کاربری با Jetpack Compose

فصل اول: اولین Composable

• رابط Declarative چیست؟

درس 1: رابط Declarative چیست؟

• Annotation مربوط به Composable

درس 2: Annotation مربوط به Composable

• ساخت اولین Composable

درس 3: ساخت اولین Composable

• فراخوانی Composable

درس 4: فراخوانی Composable

• تابع Preview

درس 5: تابع Preview

• مشاهده در Design

درس 6: مشاهده در Design

• تفاوت Preview و Emulator

درس 7: تفاوت Preview و Emulator

• قوانین نامگذاری Composable

درس 8: قوانین نامگذاری Composable

فصل دوم: متن و تصویر

• کامپوننت Text

درس 1: کامپوننت Text

• اندازه و وزن متن

درس 2: اندازه و وزن متن

• رنگ متن

درس 3: رنگ متن

• TextAlign

درس 4: TextAlign

• محدودکردن خطوط

درس 5: محدودکردن خطوط

• Image

درس 6: Image

• Painter Resource

درس 7: Painter Resource

• Content Scale

درس 8: Content Scale

• Content Description

درس 9: Content Description

• ساخت کارت معرفی

درس 10: ساخت کارت معرفی

فصل سوم: Layoutهای اصلی

• Column

درس 1: Column

• Row

درس 2: Row

• Box

درس 3: Box

• ترتیب عناصر

درس 4: ترتیب عناصر

• Alignment

درس 5: Alignment

• Arrangement

درس 6: Arrangement

• ترکیب Layoutها

درس 7: ترکیب Layoutها

• ساخت Header

درس 8: ساخت Header

• ساخت Profile Card

درس 9: ساخت Profile Card

• شکستن صفحه به Composableهای کوچک

درس 10: شکستن صفحه به Composableهای کوچک

فصل چهارم: Modifier

• Modifier چیست؟

درس 1: Modifier چیست؟

• Padding

درس 2: Padding

• Size

درس 3: Size

• FillMaxWidth

درس 4: FillMaxWidth

• Background

درس 5: Background

• Border

درس 6: Border

• Clip

درس 7: Clip

• Clickable

درس 8: Clickable

• ترتیب Modifierها

درس 9: ترتیب Modifierها

• ساخت Modifier قابلاستفاده مجدد

درس 10: ساخت Modifier قابلاستفاده مجدد

فصل پنجم: Material 3

• Design System چیست؟

درس 1: Design System چیست؟

• Material Design

درس 2: Material Design

• MaterialTheme

درس 3: MaterialTheme

• Color Scheme

درس 4: Color Scheme

• Typography

درس 5: Typography

• Shapes

درس 6: Shapes

• Button

درس 7: Button

• Card

درس 8: Card

• Scaffold

درس 9: Scaffold

• TopAppBar

درس 10: TopAppBar

• FloatingActionButton

درس 11: FloatingActionButton

• طراحی یک صفحه کامل

درس 12: طراحی یک صفحه کامل

فصل ششم: فهرستها

• نمایش چند داده

درس 1: نمایش چند داده

• تفاوت Column و LazyColumn

درس 2: تفاوت Column و LazyColumn

• items

درس 3: items

• نمایش Index

درس 4: نمایش Index

• LazyRow

درس 5: LazyRow

• Grid

درس 6: Grid

• کلید پایدار

درس 7: کلید پایدار

• Divider

درس 8: Divider

• فهرست خالی

درس 9: فهرست خالی

• ساخت فهرست کتابها

درس 10: ساخت فهرست کتابها

فصل هفتم: آیکون و تصویر آنلاین

• آیکونهای Material

درس 1: آیکونهای Material

• IconButton

درس 2: IconButton

• تصویر محلی

درس 3: تصویر محلی

• تصویر آنلاین

درس 4: تصویر آنلاین

• Placeholder

درس 5: Placeholder

• نمایش خطای تصویر

درس 6: نمایش خطای تصویر

• Crop کردن تصویر

درس 7: Crop کردن تصویر

• Cache تصویر

درس 8: Cache تصویر

• گالری ساده

درس 9: گالری ساده

• بهینهسازی اندازه تصویر

درس 10: بهینهسازی اندازه تصویر

فصل هشتم: Theme روشن و تاریک

• Dark Theme چیست؟

درس 1: Dark Theme چیست؟

• رنگهای روشن

درس 2: رنگهای روشن

• رنگهای تاریک

درس 3: رنگهای تاریک

• تشخیص Theme سیستم

درس 4: تشخیص Theme سیستم

• Dynamic Color

درس 5: Dynamic Color

• کنتراست رنگ

درس 6: کنتراست رنگ

• تست خوانایی

درس 7: تست خوانایی

• ذخیره انتخاب کاربر

درس 8: ذخیره انتخاب کاربر

• طراحی Theme اختصاصی

درس 9: طراحی Theme اختصاصی

مرحله 6

مرحله 6: دوره پنجم: تعامل، State، فرم و Navigation

فصل اول: رویدادها

• Event چیست؟

درس 1: Event چیست؟

• کلیک روی دکمه

درس 2: کلیک روی دکمه

• Lambda در Event

درس 3: Lambda در Event

• ارسال Event به Composable

درس 4: ارسال Event به Composable

• Clickable Modifier

درس 5: Clickable Modifier

• جلوگیری از رویداد تکراری

درس 6: جلوگیری از رویداد تکراری

• فعال و غیرفعالکردن دکمه

درس 7: فعال و غیرفعالکردن دکمه

• ساخت امتیازشمار

درس 8: ساخت امتیازشمار

فصل دوم: State در Compose

• State چیست؟

درس 1: State چیست؟

• Recomposition

درس 2: Recomposition

• remember

درس 3: remember

• mutableStateOf

درس 4: mutableStateOf

• خواندن و تغییر State

درس 5: خواندن و تغییر State

• State عددی

درس 6: State عددی

• State متنی

درس 7: State متنی

• State Boolean

درس 8: State Boolean

• State List

درس 9: State List

• تغییر امن Collection

درس 10: تغییر امن Collection

فصل سوم: State Hoisting

• مشکل State داخلی

درس 1: مشکل State داخلی

• Stateless Composable

درس 2: Stateless Composable

• Stateful Composable

درس 3: Stateful Composable

• انتقال State به والد

درس 4: انتقال State به والد

• ارسال مقدار

درس 5: ارسال مقدار

• ارسال Event

درس 6: ارسال Event

• جریان داده یکطرفه

درس 7: جریان داده یکطرفه

• ساخت کامپوننت قابلآزمایش

درس 8: ساخت کامپوننت قابلآزمایش

• بازسازی فرم امتیاز

درس 9: بازسازی فرم امتیاز

فصل چهارم: فرمها

• TextField

درس 1: TextField

• OutlinedTextField

درس 2: OutlinedTextField

• کنترل مقدار ورودی

درس 3: کنترل مقدار ورودی

• Placeholder و Label

درس 4: Placeholder و Label

• Keyboard Type

درس 5: Keyboard Type

• Password Field

درس 6: Password Field

• Checkbox

درس 7: Checkbox

• Radio Button

درس 8: Radio Button

• Switch

درس 9: Switch

• اعتبارسنجی

درس 10: اعتبارسنجی

• نمایش پیام خطا

درس 11: نمایش پیام خطا

• ارسال فرم

درس 12: ارسال فرم

فصل پنجم: پیامها و Dialog

• Snackbar

درس 1: Snackbar

• Toast

درس 2: Toast

• AlertDialog

درس 3: AlertDialog

• تأیید حذف

درس 4: تأیید حذف

• Bottom Sheet

درس 5: Bottom Sheet

• Loading Indicator

درس 6: Loading Indicator

• Empty State

درس 7: Empty State

• Error State

درس 8: Error State

• Success State

درس 9: Success State

• بازخورد مناسب به کاربر

درس 10: بازخورد مناسب به کاربر

فصل ششم: Navigation

• Navigation چیست؟

درس 1: Navigation چیست؟

• مقصد یا Destination

درس 2: مقصد یا Destination

• Navigation Host

درس 3: Navigation Host

• تعریف Route

درس 4: تعریف Route

• رفتن به صفحه دیگر

درس 5: رفتن به صفحه دیگر

• بازگشت

درس 6: بازگشت

• ارسال شناسه

درس 7: ارسال شناسه

• پارامتر Route

درس 8: پارامتر Route

• صفحه جزئیات

درس 9: صفحه جزئیات

• Bottom Navigation

درس 10: Bottom Navigation

• Deep Link مقدماتی

درس 11: Deep Link مقدماتی

• جلوگیری از ارسال Object کامل

درس 12: جلوگیری از ارسال Object کامل

فصل هفتم: ذخیره وضعیت موقت

• تفاوت State موقت و دائمی

درس 1: تفاوت State موقت و دائمی

• چرخش صفحه

درس 2: چرخش صفحه

• rememberSaveable

درس 3: rememberSaveable

• ذخیره ورودی فرم

درس 4: ذخیره ورودی فرم

• Saved State

درس 5: Saved State

• State قابل ذخیره

درس 6: State قابل ذخیره

• محدودیت ذخیره داده بزرگ

درس 7: محدودیت ذخیره داده بزرگ

• بازسازی صفحه

درس 8: بازسازی صفحه

فصل هشتم: انیمیشن مقدماتی

• انیمیشن چه زمانی مفید است؟

درس 1: انیمیشن چه زمانی مفید است؟

• AnimatedVisibility

درس 2: AnimatedVisibility

• Animate Content Size

درس 3: Animate Content Size

• تغییر رنگ متحرک

درس 4: تغییر رنگ متحرک

• تغییر اندازه

درس 5: تغییر اندازه

• Transition

درس 6: Transition

• حرکت میان Stateها

درس 7: حرکت میان Stateها

• جلوگیری از انیمیشن اضافی

درس 8: جلوگیری از انیمیشن اضافی

• ساخت کارت تعاملی

درس 9: ساخت کارت تعاملی

مرحله 7

مرحله 7: دوره ششم: معماری اپلیکیشن اندروید

فصل اول: مشکل پروژههای نامنظم

• کد Spaghetti چیست؟

درس 1: کد Spaghetti چیست؟

• منطق داخل Composable

درس 2: منطق داخل Composable

• وابستگی مستقیم UI به داده

درس 3: وابستگی مستقیم UI به داده

• مشکل تست

درس 4: مشکل تست

• Separation of Concerns

درس 5: Separation of Concerns

• لایه UI

درس 6: لایه UI

• لایه Data

درس 7: لایه Data

• Domain اختیاری

درس 8: Domain اختیاری

• معماری متناسب با پروژه

درس 9: معماری متناسب با پروژه

فصل دوم: ViewModel

• ViewModel چیست؟

درس 1: ViewModel چیست؟

• طول عمر ViewModel

درس 2: طول عمر ViewModel

• انتقال State از UI

درس 3: انتقال State از UI

• تعریف UiState

درس 4: تعریف UiState

• Eventهای صفحه

درس 5: Eventهای صفحه

• تغییر State

درس 6: تغییر State

• دریافت ViewModel در Compose

درس 7: دریافت ViewModel در Compose

• جلوگیری از Context در ViewModel

درس 8: جلوگیری از Context در ViewModel

• تست ساده ViewModel

درس 9: تست ساده ViewModel

فصل سوم: StateFlow

• جریان داده چیست؟

درس 1: جریان داده چیست؟

• Flow مقدماتی

درس 2: Flow مقدماتی

• StateFlow

درس 3: StateFlow

• MutableStateFlow

درس 4: MutableStateFlow

• جمعآوری State در Compose

درس 5: جمعآوری State در Compose

• تبدیل داده به UiState

درس 6: تبدیل داده به UiState

• Loading، Success و Error

درس 7: Loading، Success و Error

• State واحد صفحه

درس 8: State واحد صفحه

• جلوگیری از Stateهای ناسازگار

درس 9: جلوگیری از Stateهای ناسازگار

فصل چهارم: Repository

• Repository چیست؟

درس 1: Repository چیست؟

• Data Source

درس 2: Data Source

• Local Data Source

درس 3: Local Data Source

• Remote Data Source

درس 4: Remote Data Source

• Interface Repository

درس 5: Interface Repository

• پیادهسازی Repository

درس 6: پیادهسازی Repository

• تزریق Repository به ViewModel

درس 7: تزریق Repository به ViewModel

• Fake Repository

درس 8: Fake Repository

• منبع حقیقت یا Source of Truth

درس 9: منبع حقیقت یا Source of Truth

فصل پنجم: Coroutine

• عملیات طولانی

درس 1: عملیات طولانی

• Main Thread

درس 2: Main Thread

• Blocking چیست؟

درس 3: Blocking چیست؟

• Suspend Function

درس 4: Suspend Function

• Coroutine Scope

درس 5: Coroutine Scope

• launch

درس 6: launch

• async مقدماتی

درس 7: async مقدماتی

• Dispatcher

درس 8: Dispatcher

• viewModelScope

درس 9: viewModelScope

• مدیریت خطا

درس 10: مدیریت خطا

• لغو Coroutine

درس 11: لغو Coroutine

• Structured Concurrency

درس 12: Structured Concurrency

فصل ششم: Dependency Injection دستی

• Dependency چیست؟

درس 1: Dependency چیست؟

• ساخت مستقیم وابستگی

درس 2: ساخت مستقیم وابستگی

• مشکل وابستگی سخت

درس 3: مشکل وابستگی سخت

• Constructor Injection

درس 4: Constructor Injection

• App Container

درس 5: App Container

• Factory

درس 6: Factory

• تزریق Repository

درس 7: تزریق Repository

• جایگزینی Fake

درس 8: جایگزینی Fake

• آمادهسازی برای Hilt

درس 9: آمادهسازی برای Hilt

فصل هفتم: ساختار پوشهها

• ساختار مبتنی بر نوع فایل

درس 1: ساختار مبتنی بر نوع فایل

• ساختار مبتنی بر Feature

درس 2: ساختار مبتنی بر Feature

• Package مربوط به UI

درس 3: Package مربوط به UI

• Package مربوط به Data

درس 4: Package مربوط به Data

• Modelهای شبکه

درس 5: Modelهای شبکه

• Modelهای پایگاه داده

درس 6: Modelهای پایگاه داده

• مدل دامنه

درس 7: مدل دامنه

• Mapper

درس 8: Mapper

• نامگذاری فایلها

درس 9: نامگذاری فایلها

• جلوگیری از معماری نمایشی

درس 10: جلوگیری از معماری نمایشی

مرحله 8

مرحله 8: دوره هفتم: ذخیرهسازی محلی و اپلیکیشن آفلاین

فصل اول: انواع ذخیرهسازی

• حافظه موقت

درس 1: حافظه موقت

• حافظه دائمی

درس 2: حافظه دائمی

• فایل

درس 3: فایل

• Preferences

درس 4: Preferences

• Database

درس 5: Database

• Cache

درس 6: Cache

• انتخاب ابزار مناسب

درس 7: انتخاب ابزار مناسب

• داده حساس و غیرحساس

درس 8: داده حساس و غیرحساس

فصل دوم: DataStore

• DataStore چیست؟

درس 1: DataStore چیست؟

• ذخیره تنظیمات کوچک

درس 2: ذخیره تنظیمات کوچک

• Preferences DataStore

درس 3: Preferences DataStore

• ذخیره Theme

درس 4: ذخیره Theme

• ذخیره وضعیت ورود ساده

درس 5: ذخیره وضعیت ورود ساده

• خواندن با Flow

درس 6: خواندن با Flow

• ویرایش مقدار

درس 7: ویرایش مقدار

• مقدار پیشفرض

درس 8: مقدار پیشفرض

• مدیریت خطای خواندن

درس 9: مدیریت خطای خواندن

• قرارگیری DataStore در Data Layer

درس 10: قرارگیری DataStore در Data Layer

فصل سوم: Room

• SQLite چیست؟

درس 1: SQLite چیست؟

• Room چه کاری انجام میدهد؟

درس 2: Room چه کاری انجام میدهد؟

• Entity

درس 3: Entity

• Primary Key

درس 4: Primary Key

• DAO

درس 5: DAO

• Database Class

درس 6: Database Class

• Insert

درس 7: Insert

• Select

درس 8: Select

• Update

درس 9: Update

• Delete

درس 10: Delete

• Query با شرط

درس 11: Query با شرط

• مرتبسازی

درس 12: مرتبسازی

فصل چهارم: ارتباط Room با Flow

• مشاهده تغییر داده

درس 1: مشاهده تغییر داده

• Query دارای Flow

درس 2: Query دارای Flow

• Repository محلی

درس 3: Repository محلی

• StateFlow در ViewModel

درس 4: StateFlow در ViewModel

• نمایش فهرست

درس 5: نمایش فهرست

• اضافهکردن داده

درس 6: اضافهکردن داده

• ویرایش داده

درس 7: ویرایش داده

• حذف با تأیید

درس 8: حذف با تأیید

• Empty State

درس 9: Empty State

• واکنش خودکار UI به Database

درس 10: واکنش خودکار UI به Database

فصل پنجم: ارتباط میان جدولها

• ارتباط یکبهیک

درس 1: ارتباط یکبهیک

• ارتباط یکبهچند

درس 2: ارتباط یکبهچند

• ارتباط چندبهچند

درس 3: ارتباط چندبهچند

• Foreign Key

درس 4: Foreign Key

• جدول واسط

درس 5: جدول واسط

• Transaction در Room

درس 6: Transaction در Room

• Course و Lesson

درس 7: Course و Lesson

• Student و Enrollment

درس 8: Student و Enrollment

• Query دارای Relation

درس 9: Query دارای Relation

• جلوگیری از داده تکراری

درس 10: جلوگیری از داده تکراری

فصل ششم: Migration و Backup

• تغییر ساختار Database

درس 1: تغییر ساختار Database

• Version

درس 2: Version

• Migration

درس 3: Migration

• افزودن ستون

درس 4: افزودن ستون

• تغییر جدول

درس 5: تغییر جدول

• خطر حذف داده

درس 6: خطر حذف داده

• Migration دستی

درس 7: Migration دستی

• تست Migration

درس 8: تست Migration

• Export ساده اطلاعات

درس 9: Export ساده اطلاعات

• بازیابی داده

درس 10: بازیابی داده

مرحله 9

مرحله 9: دوره هشتم: اتصال به اینترنت و Backend

فصل اول: مبانی شبکه

• Client و Server

درس 1: Client و Server

• Request و Response

درس 2: Request و Response

• URL

درس 3: URL

• HTTP Method

درس 4: HTTP Method

• GET

درس 5: GET

• POST

درس 6: POST

• PUT و PATCH

درس 7: PUT و PATCH

• DELETE

درس 8: DELETE

• Status Code

درس 9: Status Code

• Header

درس 10: Header

• Body

درس 11: Body

• HTTPS

درس 12: HTTPS

فصل دوم: JSON

• JSON چیست؟

درس 1: JSON چیست؟

• Object

درس 2: Object

• Array

درس 3: Array

• String، Number و Boolean

درس 4: String، Number و Boolean

• Null

درس 5: Null

• Nested Object

درس 6: Nested Object

• تبدیل JSON به Data Class

درس 7: تبدیل JSON به Data Class

• نام متفاوت فیلدها

درس 8: نام متفاوت فیلدها

• داده ناقص

درس 9: داده ناقص

• خطای تبدیل داده

درس 10: خطای تبدیل داده

فصل سوم: Retrofit

• HTTP Client چیست؟

درس 1: HTTP Client چیست؟

• اضافهکردن Retrofit

درس 2: اضافهکردن Retrofit

• Base URL

درس 3: Base URL

• API Interface

درس 4: API Interface

• درخواست GET

درس 5: درخواست GET

• Annotationهای مسیر

درس 6: Annotationهای مسیر

• Query Parameter

درس 7: Query Parameter

• Path Parameter

درس 8: Path Parameter

• ارسال Body

درس 9: ارسال Body

• تبدیل پاسخ

درس 10: تبدیل پاسخ

• Timeout

درس 11: Timeout

• مشاهده درخواستها

درس 12: مشاهده درخواستها

فصل چهارم: وضعیت درخواست

• Loading

درس 1: Loading

• Success

درس 2: Success

• Error

درس 3: Error

• Empty

درس 4: Empty

• Retry

درس 5: Retry

• خطای اینترنت

درس 6: خطای اینترنت

• خطای سرور

درس 7: خطای سرور

• خطای اعتبارسنجی

درس 8: خطای اعتبارسنجی

• پیام قابلفهم

درس 9: پیام قابلفهم

• جلوگیری از Crash

درس 10: جلوگیری از Crash

فصل پنجم: ارسال فرم به Backend

• فرم ثبتنام

درس 1: فرم ثبتنام

• Request Model

درس 2: Request Model

• ارسال POST

درس 3: ارسال POST

• دریافت Validation Error

درس 4: دریافت Validation Error

• نمایش خطای هر فیلد

درس 5: نمایش خطای هر فیلد

• جلوگیری از ارسال چندباره

درس 6: جلوگیری از ارسال چندباره

• وضعیت ارسال

درس 7: وضعیت ارسال

• پیام موفقیت

درس 8: پیام موفقیت

• هدایت بعد از موفقیت

درس 9: هدایت بعد از موفقیت

• ثبت Log بدون داده حساس

درس 10: ثبت Log بدون داده حساس

فصل ششم: احراز هویت

• Authentication

درس 1: Authentication

• Authorization

درس 2: Authorization

• Access Token

درس 3: Access Token

• Refresh Token

درس 4: Refresh Token

• ورود کاربر

درس 5: ورود کاربر

• ذخیره امن وضعیت ورود

درس 6: ذخیره امن وضعیت ورود

• افزودن Token به Header

درس 7: افزودن Token به Header

• دریافت پروفایل

درس 8: دریافت پروفایل

• Refresh خودکار

درس 9: Refresh خودکار

• خروج

درس 10: خروج

• خطای 401

درس 11: خطای 401

• دسترسی براساس نقش

درس 12: دسترسی براساس نقش

فصل هفتم: Repository آنلاین و آفلاین

• Remote Data Source

درس 1: Remote Data Source

• Local Data Source

درس 2: Local Data Source

• Repository مشترک

درس 3: Repository مشترک

• دریافت شبکه و ذخیره در Room

درس 4: دریافت شبکه و ذخیره در Room

• نمایش داده محلی

درس 5: نمایش داده محلی

• Refresh

درس 6: Refresh

• Cache Policy

درس 7: Cache Policy

• Offline First مقدماتی

درس 8: Offline First مقدماتی

• داده قدیمی

درس 9: داده قدیمی

• همگامسازی تغییرات

درس 10: همگامسازی تغییرات

فصل هشتم: Pagination

• مشکل فهرستهای بزرگ

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

مرحله 10

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

فصل اول: مدیریت دسترسی‌ها (Permissions)

• انواع دسترسی‌ها (Normal vs Runtime Permission)

درس 1: انواع دسترسی‌ها (Normal vs Runtime Permission)

• درخواست دسترسی در Runtime

درس 2: درخواست دسترسی در Runtime

• کتابخانه Permission در Compose

درس 3: کتابخانه Permission در Compose

• مدیریت پاسخ کاربر (Allow / Deny)

درس 4: مدیریت پاسخ کاربر (Allow / Deny)

• توضیح علت دسترسی به کاربر (Rationale)

درس 5: توضیح علت دسترسی به کاربر (Rationale)

• دسترسی دوربین و گالری

درس 6: دسترسی دوربین و گالری

• دسترسی مکان‌نما (Location)

درس 7: دسترسی مکان‌نما (Location)

• دسترسی حافظه در نسخه‌های جدید اندروید

درس 8: دسترسی حافظه در نسخه‌های جدید اندروید

• دسترسی‌های حساس و حریم خصوصی

درس 9: دسترسی‌های حساس و حریم خصوصی

• تست دسترسی‌ها در Emulator و گوشی

درس 10: تست دسترسی‌ها در Emulator و گوشی

فصل دوم: مکان‌نما و نقشه (Location & Maps)

• Fused Location Provider

درس 1: Fused Location Provider

• دریافت موقعیت کنونی کاربر

درس 2: دریافت موقعیت کنونی کاربر

• به‌روزرسانی مداوم مکان

درس 3: به‌روزرسانی مداوم مکان

• نمایش نقشه با Google Maps / Neshan SDK

درس 4: نمایش نقشه با Google Maps / Neshan SDK

• افزودن Marker روی نقشه

درس 5: افزودن Marker روی نقشه

• تغییر لایه و بزرگ‌نمایی نقشه

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

• محاسبه فاصله بین دو نقطه

درس 7: محاسبه فاصله بین دو نقطه

• جست‌وجوی آدرس و Geocoding

درس 8: جست‌وجوی آدرس و Geocoding

• مدیریت مصرف باتری در مکان‌نما

درس 9: مدیریت مصرف باتری در مکان‌نما

• ساخت اپلیکیشن ردیاب سفارشی

درس 10: ساخت اپلیکیشن ردیاب سفارشی

فصل سوم: دوربین و فایل‌های چندرسانه‌ای

• کتابخانه CameraX

درس 1: کتابخانه CameraX

• نمایش تصویر زنده دوربین (Preview)

درس 2: نمایش تصویر زنده دوربین (Preview)

• عکس‌برداری و ذخیره در فایل

درس 3: عکس‌برداری و ذخیره در فایل

• ضبط ویدیو ساده

درس 4: ضبط ویدیو ساده

• انتخاب تصویر از گالری با Photo Picker

درس 5: انتخاب تصویر از گالری با Photo Picker

• فشرده‌سازی و تغییر اندازه تصویر

درس 6: فشرده‌سازی و تغییر اندازه تصویر

• پخش فایل‌های صوتی با ExoPlayer / Media3

درس 7: پخش فایل‌های صوتی با ExoPlayer / Media3

• پخش فایل‌های ویدیویی

درس 8: پخش فایل‌های ویدیویی

• کنترل‌های پخش رسانه

درس 9: کنترل‌های پخش رسانه

• ساخت اپلیکیشن آلبوم یا مدیاپلیر

درس 10: ساخت اپلیکیشن آلبوم یا مدیاپلیر

فصل چهارم: اعلان‌ها و کارهای پس‌زمینه (Notifications & WorkManager)

• Notification Channel

درس 1: Notification Channel

• ساخت و ارسال اعلان ساده

درس 2: ساخت و ارسال اعلان ساده

• افزودن تصویر و دکمه به اعلان

درس 3: افزودن تصویر و دکمه به اعلان

• بازکردن صفحه با کلیک روی اعلان

درس 4: بازکردن صفحه با کلیک روی اعلان

• WorkManager چیست؟

درس 5: WorkManager چیست؟

• ساخت OneTimeWorkRequest

درس 6: ساخت OneTimeWorkRequest

• ساخت PeriodicWorkRequest

درس 7: ساخت PeriodicWorkRequest

• تنظیم محدودیت‌های کاری (Constraints)

درس 8: تنظیم محدودیت‌های کاری (Constraints)

• پاس دادن داده به Worker

درس 9: پاس دادن داده به Worker

• همگام‌سازی داده در پس‌زمینه

درس 10: همگام‌سازی داده در پس‌زمینه

مرحله 11

مرحله 11: دوره دهم: تست‌نویسی، امنیت، بهینه‌سازی و چندزبانه

فصل اول: تست‌نویسی در اندروید

• چرا در اندروید تست می‌نویسیم؟

درس 1: چرا در اندروید تست می‌نویسیم؟

• Unit Test در برابر Instrumented Test

درس 2: Unit Test در برابر Instrumented Test

• تست ViewModel با JUnit و Mockk

درس 3: تست ViewModel با JUnit و Mockk

• تست Coroutines و Flow

درس 4: تست Coroutines و Flow

• تست UI با Compose Testing Framework

درس 5: تست UI با Compose Testing Framework

• یافتن کامپوننت‌ها با onNodeWithText

درس 6: یافتن کامپوننت‌ها با onNodeWithText

• شبیه‌سازی کلیک و تایپ در تست

درس 7: شبیه‌سازی کلیک و تایپ در تست

• تست Repository و Fake Data Sources

درس 8: تست Repository و Fake Data Sources

• اندازه‌گیری پوشش تست (Code Coverage)

درس 9: اندازه‌گیری پوشش تست (Code Coverage)

• اجرای خودکار تست‌ها

درس 10: اجرای خودکار تست‌ها

فصل دوم: امنیت اپلیکیشن اندروید

• امنیت در برنامه‌نویسی اندروید

درس 1: امنیت در برنامه‌نویسی اندروید

• EncryptedSharedPreferences و EncryptedDataStore

درس 2: EncryptedSharedPreferences و EncryptedDataStore

• ذخیره‌سازی کلیدها با Android KeyStore

درس 3: ذخیره‌سازی کلیدها با Android KeyStore

• ایمن‌سازی ارتباطات شبکه و Certificate Pinning

درس 4: ایمن‌سازی ارتباطات شبکه و Certificate Pinning

• بررسی Root بودن دستگاه

درس 5: بررسی Root بودن دستگاه

• جلوگیری از مهندسی معکوس کدها

درس 6: جلوگیری از مهندسی معکوس کدها

• فعال‌سازی R8 و ProGuard

درس 7: فعال‌سازی R8 و ProGuard

• مدیریت داده‌های حساس در حافظه

درس 8: مدیریت داده‌های حساس در حافظه

• امنیت فریم‌ورک Compose و UI

درس 9: امنیت فریم‌ورک Compose و UI

• چک‌لیست امنیت قبل از انتشار

درس 10: چک‌لیست امنیت قبل از انتشار

فصل سوم: بهینه‌سازی و کارایی (Performance)

• ابزار Android Profiler

درس 1: ابزار Android Profiler

• تحلیل مصرف حافظه (Memory Leak) و LeakCanary

درس 2: تحلیل مصرف حافظه (Memory Leak) و LeakCanary

• بهینه‌سازی Recomposition در Compose

درس 3: بهینه‌سازی Recomposition در Compose

• استفاده از @Stable و @Immutable

درس 4: استفاده از @Stable و @Immutable

• بهینه‌سازی حجم APK / AAB

درس 5: بهینه‌سازی حجم APK / AAB

• بهینه‌سازی تصاویر و استفاده از WebP

درس 6: بهینه‌سازی تصاویر و استفاده از WebP

• بهینه‌سازی مصرف باتری

درس 7: بهینه‌سازی مصرف باتری

• کاهش زمان بالا آمدن اپلیکیشن (App Startup)

درس 8: کاهش زمان بالا آمدن اپلیکیشن (App Startup)

• شناسایی و رفع تکان‌های UI (Jank & Frame Drops)

درس 9: شناسایی و رفع تکان‌های UI (Jank & Frame Drops)

• چك‌لیست بهینه‌سازی پروژه‌های بزرگ

درس 10: چك‌لیست بهینه‌سازی پروژه‌های بزرگ

فصل چهارم: چندزبانه و دسترس‌پذیری (Localization & Accessibility)

• اهمیت چندزبانه بودن اپلیکیشن

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

• افزودن زبان‌های جدید به Resourceها

درس 2: افزودن زبان‌های جدید به Resourceها

• پشتیبانی کامل از راست‌به‌چپ (RTL) و فارسی

درس 3: پشتیبانی کامل از راست‌به‌چپ (RTL) و فارسی

• راست‌چین‌سازی چیدمان‌ها در Compose

درس 4: راست‌چین‌سازی چیدمان‌ها در Compose

• فرمت‌دهی تاریخ، زمان و اعداد بر اساس منطقه

درس 5: فرمت‌دهی تاریخ، زمان و اعداد بر اساس منطقه

• دسترس‌پذیری (Accessibility) چیست؟

درس 6: دسترس‌پذیری (Accessibility) چیست؟

• استفاده صحیح از Content Description

درس 7: استفاده صحیح از Content Description

• تنظیم اندازه فونت و کنتراست رنگ‌ها

درس 8: تنظیم اندازه فونت و کنتراست رنگ‌ها

• تست اپلیکیشن با TalkBack

درس 9: تست اپلیکیشن با TalkBack

• آماده‌سازی نسخه بین‌المللی برنامه

درس 10: آماده‌سازی نسخه بین‌المللی برنامه

مرحله 12

مرحله 12: دوره یازدهم: پروژه واقعی، انتشار و ورود به بازار کار

فصل اول: توسعه پروژه نهایی اندروید

• انتخاب موضوع پروژه واقعی و کاربردی

درس 1: انتخاب موضوع پروژه واقعی و کاربردی

• تحلیل نیازمندی‌ها و طراحی Wireframe

درس 2: تحلیل نیازمندی‌ها و طراحی Wireframe

• طراحی معماری لایه‌ای پروژه (Clean Architecture)

درس 3: طراحی معماری لایه‌ای پروژه (Clean Architecture)

• ساخت لایه داده، دیتابیس محلی و شبکه

درس 4: ساخت لایه داده، دیتابیس محلی و شبکه

• پیاده‌سازی لایه UI با Compose و Material 3

درس 5: پیاده‌سازی لایه UI با Compose و Material 3

• اتصال لایه‌ها با ViewModel و StateFlow

درس 6: اتصال لایه‌ها با ViewModel و StateFlow

• پیاده‌سازی حالت آنلاین و آفلاین (Offline-First)

درس 7: پیاده‌سازی حالت آنلاین و آفلاین (Offline-First)

• نوشتن تست‌های جامع UI و Unit Tests

درس 8: نوشتن تست‌های جامع UI و Unit Tests

• مدیریت خطاها و ساخت حالت‌های Loading/Error

درس 9: مدیریت خطاها و ساخت حالت‌های Loading/Error

• ساخت نسخه کامل و نهایی پروژه

درس 10: ساخت نسخه کامل و نهایی پروژه

فصل دوم: ساخت خروجی، انتشار و رزومه

• ساخت Keystore و کلید امضا (Signing Key)

درس 1: ساخت Keystore و کلید امضا (Signing Key)

• تفاوت APK و Android App Bundle (AAB)

درس 2: تفاوت APK و Android App Bundle (AAB)

• ساخت خروجی Release نهایی

درس 3: ساخت خروجی Release نهایی

• آشنایی با قوانین انتشار در بازار، مایکت و گوگل‌پلی

درس 4: آشنایی با قوانین انتشار در بازار، مایکت و گوگل‌پلی

• ساخت پنل توسعه‌دهندگان و آپلود برنامه

درس 5: ساخت پنل توسعه‌دهندگان و آپلود برنامه

• نوشتن متن توضیحات، اسکرین‌شات‌ها و بنر مارکت

درس 6: نوشتن متن توضیحات، اسکرین‌شات‌ها و بنر مارکت

• مدیریت به‌روزرسانی‌های جدید اپلیکیشن

درس 7: مدیریت به‌روزرسانی‌های جدید اپلیکیشن

• ساخت نمونه‌کار حرفه‌ای در GitHub و آپلود ویدیو پیش‌نمایش

درس 8: ساخت نمونه‌کار حرفه‌ای در GitHub و آپلود ویدیو پیش‌نمایش

• نوشتن رزومه استاندارد برنامه‌نویس اندروید (Kotlin / Compose)

درس 9: نوشتن رزومه استاندارد برنامه‌نویس اندروید (Kotlin / Compose)

• آمادگی برای مصاحبه فنی اندروید و مسیر شغلی آینده

درس 10: آمادگی برای مصاحبه فنی اندروید و مسیر شغلی آینده

پروژه‌های پیشنهادی برای ساخت نمونه‌کار

🛠️ ساخت صفحه شخصی تعاملی یا کارت ویزیت دیجیتال

با استفاده از HTML و CSS و چند خط JavaScript ساده یک کارت ویزیت آنلاین با دکمه‌های تعاملی بساز.

مراحل اجرای پروژه آزمایشی:

  • یک فایل HTML بساز و نام و بیوگرافی خود را بنویس.
  • با CSS ظاهر دکمه‌ها و رنگ‌ها را زیبا کن.
  • با دکمه دارک‌مود یا انیمیشن ساده به آن رفتار تعاملی بده.

بازار کار و فرصت‌های شغلی برنامه نویسی اندروید

🎯 راه‌های ورود به بازار کار

  • پروژه فریلنسری کوچک
  • کارآموزی در شرکت‌های نوپا
  • ساخت نمونه‌کار در گیت‌هاب

⏱️ زمان و هزینه موردنیاز

۴ تا ۶ ماه یادگیری مداوم روزانه ۲ ساعت (با استفاده از منابع رایگان یا دوره‌های اقتصادی)

شیوه‌های کاری: امکان فریلنسری بسیار بالا، استخدام حضوری و دورکاری گسترده در ایران و جهان.

سوالات متداول و باورهای غلط درباره برنامه نویسی اندروید

خیر! این تصور یکی از باورهای اشتباهی است که افراد تازه‌کار درباره برنامه نویسی اندروید دارند. با آموزش گام‌به‌گام موازی و تمرین مستمر، هر علاقمندی می‌تواند بر مفاهیم تسلط پیدا کند.

خیر! این تصور یکی از باورهای اشتباهی است که افراد تازه‌کار درباره برنامه نویسی اندروید دارند. با آموزش گام‌به‌گام موازی و تمرین مستمر، هر علاقمندی می‌تواند بر مفاهیم تسلط پیدا کند.