Android: چیست، معماری سیستم و توسعه در Kotlin

نویسنده: IT Sectr منتشر شده: 2026-02-07 زمان مطالعه: 11 دقیقه

Android یک سیستم‌عامل موبایل گوگل با کد منبع باز (AOSP) است که بر روی هسته لینوکس اجرا می‌شود. توسعه Android با استفاده از Kotlin در محیط Android Studio انجام می‌شود. این مقاله معماری سیستم‌عامل، اجزای برنامه، Jetpack Compose و انتشار در Google Play را پوشش می‌دهد.

نکات کلیدی

  • Android — سیستم‌عامل بر روی هسته لینوکس با چهار لایه: هسته، HAL، Android Runtime، Application Framework
  • Kotlin — زبان اصلی توسعه با ایمنی null و کوروتین برای ناهمگامی
  • Activity, Service, BroadcastReceiver, ContentProvider — چهار مؤلفه اجباری یک برنامه Android
  • Jetpack Compose — چارچوب UI اعلانی توصیه‌شده توسط گوگل برای پروژه‌های جدید
  • Google Play — کانال اصلی توزیع با کمیسیون ۱۵–۳۰٪ و بررسی امنیتی Play Integrity

Android چیست؟

Android یک سیستم‌عامل موبایل مبتنی بر هسته لینوکس است که از سال ۲۰۰۷ توسط گوگل توسعه داده می‌شود. کد منبع تحت مجوز Apache 2.0 به عنوان بخشی از پروژه Android Open Source Project (AOSP) باز است. هر سازنده می‌تواند سیستم را تغییر داده و بر روی دستگاه‌های خود نصب کند.

بر اساس آمار StatCounter (2026)، Android حدود ۷۲٪ از بازار جهانی سیستم‌عامل‌های موبایل را در اختیار دارد. بزرگترین سازندگان عبارتند از Samsung, Xiaomi, Oppo, Vivo, Google Pixel. تکه‌تکه شدن مشکل اصلی پلتفرم است: هزاران مدل با نسخه‌های مختلف سیستم‌عامل به طور همزمان استفاده می‌شوند.

معماری Android بر اساس اصل مجوزها (permissions) ساخته شده است: هر برنامه تحت یک UID لینوکس جداگانه اجرا می‌شود و فقط به داده‌های خود دسترسی دارد. دسترسی به منابع سیستم (دوربین، میکروفون، مخاطبین) از طریق Android Permissions در زمان اجرا، از Android 6 (API 23) به بعد درخواست می‌شود.

تاریخچه نسخه‌های Android

Android 1.0 در سال ۲۰۰۸ بر روی HTC Dream منتشر شد. نقاط عطف کلیدی: Android 4.0 Ice Cream Sandwich (رابط یکپارچه برای تلفن‌ها و تبلت‌ها)، Android 5.0 Lollipop (Material Design)، Android 6.0 (مجوزهای زمان اجرا)، Android 10 (تم تیره، حرکات)، Android 12 (Material You). از سال ۲۰۲۳، گوگل به انتشار سالانه نسخه‌های اصلی بدون نام دسر تغییر رویه داده است.

نسخه Androidسالنوآوری کلیدی
Android 1.02008اولین انتشار بر روی HTC Dream
Android 4.0 (ICS)2011طراحی یکپارچه برای تلفن‌ها و تبلت‌ها
Android 5.0 (L)2014Material Design، ART به جای Dalvik
Android 6.0 (M)2015مجوزهای زمان اجرا، حالت Doze
Android 8.0 (O)2017Kotlin به عنوان زبان رسمی
Android 10 (Q)2019Scoped Storage، تم تیره
Android 12 (S)2021Material You، Privacy Dashboard
Android 152024فضای خصوصی، اتصال ماهواره‌ای

معماری Android: چهار لایه کلیدی

معماری Android از چهار لایه اصلی تشکیل شده است که سخت‌افزار را از برنامه‌های کاربر جدا می‌کند. هر لایه از خدمات لایه پایینی از طریق رابط‌های کاملاً تعریف‌شده استفاده می‌کند.

هسته لینوکس و HAL

پایین‌ترین لایه یک هسته لینوکس تغییر یافته است (LTS، نسخه 6.x در Android 15). مدیریت حافظه، فرآیندها، پشته شبکه و درایورها را بر عهده دارد. لایه انتزاع سخت‌افزار (HAL) یک API یکپارچه برای تعامل با سخت‌افزار فراهم می‌کند: دوربین، Bluetooth، Wi-Fi، سنسورها. سازندگان ماژول‌های HAL را بدون تأثیر بر لایه‌های بالایی پیاده‌سازی می‌کنند.

Android Runtime (ART)

ART بایت کد DEX برنامه‌ها را اجرا می‌کند. از Android 5.0 به بعد، ART جایگزین Dalvik شد و از کامپایل Ahead-of-Time (AOT) برای بهبود عملکرد استفاده می‌کند. هر برنامه فرآیند خود را با یک نمونه ART جداگانه دارد. جمع‌آوری زباله (GC) با حداقل مکث کار می‌کند — یک مکث GC معمولی ۲–۴ میلی‌ثانیه است.

Application Framework

Framework لایه‌ای است که توسعه‌دهنده مستقیماً با آن کار می‌کند. شامل Activity Manager (پشته صفحه‌ها)، Content Providers (دسترسی به داده)، Resource Manager (محلی‌سازی، منابع)، Notification Manager، Location Manager است. تمام خدمات سیستم از طریق Binder IPC — مکانیسم ارتباط بین فرآیندی Android — فراخوانی می‌شوند.

kotlin
// مثال کار با Binder از طریق رابط AIDL
interface IDataService : android.os.IInterface {
    fun getData(): List<DataItem>
    fun saveData(item: DataItem): Boolean
}

// پیاده‌سازی سرویس
class DataService : Service() {
    private val binder = object : IDataService.Stub() {
        override fun getData(): List<DataItem> = repository.getAll()
        override fun saveData(item: DataItem): Boolean = repository.save(item)
    }

    override fun onBind(intent: Intent?): IBinder = binder
}

برنامه‌های سیستمی

لایه بالایی شامل برنامه‌های استاندارد سیستم است: تلفن، مخاطبین، دوربین، تنظیمات، مرورگر. آنها امتیازات بالاتری نسبت به برنامه‌های کاربر ندارند، اما می‌توانند توسط برنامه‌های شخص ثالث جایگزین شوند. در Android 15، برنامه‌های سیستمی از طریق Google Play System Updates مستقل از به‌روزرسانی‌های OTA سازنده به‌روز می‌شوند.

Kotlin — زبان اصلی توسعه Android

Kotlin یک زبان برنامه‌نویسی با نوع‌دهی ایستا از JetBrains است که بر روی JVM اجرا می‌شود. گوگل در سال ۲۰۱۷ در Google I/O اعلام کرد که Kotlin زبان رسمی Android است. Kotlin کاملاً با Java سازگار است اما نقاط ضعف آن را برطرف می‌کند: ایمنی null، کلاس‌های داده، توابع گسترش و کوروتین.

ایمنی Null و انواع

ویژگی اصلی Kotlin محافظت داخلی در برابر NullPointerException است. انواع به nullable (String?) و non-null (String) تقسیم می‌شوند. کامپایلر دسترسی nullable را در زمان کامپایل بررسی می‌کند. عملگر safe call (?.) و عملگر Elvis (?:) کار با مقادیر اختیاری را بدون بررسی‌های تودرتو ساده می‌کنند.

kotlin
// مثال کد Kotlin با کوروتین و Flow
data class User(
    val id: Long,
    val name: String,
    val email: String
)

class UserRepository(
    private val api: UserApi,
    private val dao: UserDao
) {
    suspend fun getUser(id: Long): Result<User> {
        return try {
            val cached = dao.getUser(id)
            if (cached != null) {
                return Result.success(cached)
            }
            val remote = api.fetchUser(id)
            dao.insertUser(remote)
            Result.success(remote)
        } catch (e: Exception) {
            Result.failure(e)
        }
    }

    fun observeUsers(): Flow<List<User>> {
        return dao.observeAll()
            .map { list -> list.sortedBy { it.name } }
            .flowOn(Dispatchers.Default)
    }
}

مثال کوروتین‌ها (تابع suspend) را برای دسترسی ناهمگام به شبکه و پایگاه داده، Flow را برای مشاهده واکنشی تغییرات داده و Result را برای مدیریت ایمن خطا نشان می‌دهد. کوروتین‌ها جایگزین callbackها و RxJava بدون سربار نخ می‌شوند.

کوروتین‌های Kotlin و Flow

کوروتین‌های Kotlin نخ‌های سبکی هستند که بر روی یک استخر نخ مشترک اجرا می‌شوند. Dispatchers.IO برای شبکه و دیسک، Dispatchers.Main برای UI، Dispatchers.Default برای وظایف سنگین CPU. viewModelScope و lifecycleScope با نابودی مؤلفه به طور خودکار کوروتین‌ها را لغو می‌کنند.

kotlin
// ViewModel با کوروتین و StateFlow
class UserViewModel(
    private val repository: UserRepository
) : ViewModel() {

    private val _users = MutableStateFlow<List<User>>(emptyList())
    val users: StateFlow<List<User>> = _users.asStateFlow()

    private val _loading = MutableStateFlow(false)
    val loading: StateFlow<Boolean> = _loading.asStateFlow()

    init {
        viewModelScope.launch {
            repository.observeUsers().collect { userList ->
                _users.value = userList
            }
        }
    }

    fun refresh() {
        viewModelScope.launch {
            _loading.value = true
            repository.getUser(42).onSuccess { user ->
                _users.value = listOf(user)
            }
            _loading.value = false
        }
    }
}

Android Studio و ابزارهای توسعه

Android Studio IDE رسمی مبتنی بر IntelliJ IDEA است که توسط گوگل توسعه یافته است. شامل ویرایشگر کد، Layout Inspector، شبیه‌ساز دستگاه، APK Analyzer، Profiler (CPU، حافظه، شبکه، انرژی) و یکپارچه‌سازی Firebase است. Android Studio 2024 (Ladybug) از Kotlin 2.0 با حالت چندپلتفرمی KMP پشتیبانی می‌کند.

شبیه‌ساز Android

شبیه‌ساز Android از KVM (لینوکس) یا Hyper-V (ویندوز) برای شتاب سخت‌افزاری استفاده می‌کند. از شبیه‌سازی GPS، سنسورها، دوربین، تماس‌ها و SMS پشتیبانی می‌کند. Google Pixel 9 Pro پیکربندی توصیه شده برای آزمایش با API 35 و ۸ گیگابایت RAM شبیه‌ساز است.

Android Profiler و اشکال‌زدایی

Profiler بار CPU، تخصیص حافظه، درخواست‌های شبکه و مصرف انرژی را در زمان واقعی نمایش می‌دهد. Memory Profiler تخلیه heap و تحلیل نشت را از طریق درخت مرجع امکان‌پذیر می‌کند. Network Inspector تمام درخواست‌های HTTP/HTTPS را با بدنه و هدر ثبت می‌کند. برای تحلیل عمیق از Android Studio Canary استفاده می‌شود.

اجزای برنامه Android

یک برنامه Android از چهار نوع مؤلفه تشکیل شده است که هر کدام نقطه ورود و چرخه حیات خود را دارند. مؤلفه‌ها در فایل AndroidManifest.xml ثبت می‌شوند.

مؤلفههدفنقطه ورود
Activityصفحه با UI برای تعامل با کاربرIntent با Action.MAIN و دسته LAUNCHER
Serviceاجرای وظایف پس‌زمینه بدون UIstartService() یا bindService()
BroadcastReceiverدریافت رویدادهای سیستم یا سفارشیثبت در مانیفست یا در کد
ContentProviderمدیریت دسترسی به داده‌های ساختاریافتهURI از طریق ContentResolver

Activity و Intent

Activity مؤلفه اساسی رابط کاربری است. هر صفحه یک Activity جداگانه یا Fragment درون یک Activity است. ناوبری بین صفحات از طریق Intent انجام می‌شود — یک شی حاوی یک اقدام (ACTION_VIEW, ACTION_SEND) و داده (URI). در Jetpack Navigation Graph، ناوبری در XML توضیح داده می‌شود.

Service و WorkManager

Service وظایف پس‌زمینه را انجام می‌دهد، اما از Android 8 به بعد، سرویس‌های پس‌زمینه محدود شده‌اند. WorkManager کتابخانه توصیه شده برای وظایف پس‌زمینه تأخیری و تضمینی با پشتیبانی از زنجیره‌ها، محدودیت‌ها (مثلاً فقط هنگام شارژ) و راه‌اندازی مجدد پس از خرابی است.

Jetpack Compose در مقابل XML Layouts

انتخاب بین Jetpack Compose و طرح‌بندی‌های سنتی XML تصمیم معماری اصلی هنگام شروع یک پروژه Android است. طرح‌بندی‌های XML (RecyclerView, ConstraintLayout, FrameLayout) از سال ۲۰۰۸ استاندارد بوده‌اند. Jetpack Compose در سال ۲۰۲۱ به عنوان یک جایگزین اعلانی معرفی شد.

معیارXML LayoutsJetpack Compose
پارادایمامری (درخت View)اعلانی (توابع @Composable)
حداقل نسخههرکدام (API 1+)API 21+ (Android 5.0)
طرح‌بندیXML + data binding / ViewBindingکد Kotlin با Modifier
مشابه RecyclerViewRecyclerView + Adapter + ViewHolderLazyColumn / LazyGrid
پیش‌نمایشپیش‌نمایش XML در Android Studioحاشیه‌نویسی @Preview با تعاملی
ترکیب مجددnotifyDataSetChanged (کامل)خودکار، دانه‌بندی شده (DiffUtil)
قابلیت همکاریکامل (همه کتابخانه‌ها)ComposeView در XML / AndroidView در Compose

گوگل Jetpack Compose را برای همه پروژه‌های جدید توصیه می‌کند. طرح‌بندی‌های XML برای پشتیبانی از پروژه‌های قدیمی و مواردی که نیاز به سفارشی‌سازی حداکثری View (Canvas, SurfaceView) است، مرتبط باقی می‌مانند. کد Compose به طور متوسط ۴۰٪ کوتاه‌تر از XML + ViewBinding معادل است.

kotlin
// Jetpack Compose — صفحه پروفایل کاربر
@Composable
fun ProfileScreen(
    user: User,
    onEditClick: () -> Unit,
    modifier: Modifier = Modifier
) {
    Column(
        modifier = modifier
            .fillMaxSize()
            .padding(16.dp),
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        AsyncImage(
            model = user.avatarUrl,
            contentDescription = "آواتار کاربر",
            modifier = Modifier
                .size(120.dp)
                .clip(CircleShape)
        )

        Spacer(modifier = Modifier.height(16.dp))

        Text(
            text = user.name,
            style = MaterialTheme.typography.headlineMedium
        )

        Text(
            text = user.email,
            style = MaterialTheme.typography.bodyLarge,
            color = MaterialTheme.colorScheme.onSurfaceVariant
        )

        Spacer(modifier = Modifier.height(24.dp))

        Button(onClick = onEditClick) {
            Icon(Icons.Default.Edit, contentDescription = null)
            Spacer(modifier = Modifier.width(8.dp))
            Text("ویرایش پروفایل")
        }
    }
}

@Preview(showBackground = true, showSystemUi = true)
@Composable
fun ProfileScreenPreview() {
    MaterialTheme {
        ProfileScreen(
            user = User(1, "آنا پتروا", "anna@example.com"),
            onEditClick = {}
        )
    }
}

تابع ProfileScreen به عنوان @Composable اعلام شده است — UI را بدون ایجاد نمونه‌های View به صورت اعلانی توصیف می‌کند. Compose با تغییر user به طور خودکار صفحه را به‌روز می‌کند. @Preview نتیجه را مستقیماً در IDE بدون ساختن و اجرا بر روی شبیه‌ساز نشان می‌دهد.

چرخه حیات Activity و Fragment

هر Activity در Android از شش حالت چرخه حیات عبور می‌کند: onCreate, onStart, onResume, onPause, onStop, onDestroy. Fragment onAttach, onCreateView, onViewCreated را اضافه می‌کند. درک چرخه حیات برای مدیریت حافظه و جلوگیری از نشت حیاتی است.

حالت‌های اصلی Activity

onCreate — یک بار هنگام ایجاد Activity فراخوانی می‌شود. در اینجا مقداردهی اولیه انجام می‌شود: setContentView، تنظیم آداپتورها، اشتراک LiveData. onResume — Activity در پیش‌زمینه است و با کاربر تعامل دارد. onPause — Activity تمرکز خود را از دست می‌دهد (دیالوگ، Activity دیگر). onStop — Activity قابل مشاهده نیست. onDestroy — Activity نابود می‌شود.

kotlin
// Activity با مدیریت چرخه حیات از طریق LifecycleScope
class MainActivity : ComponentActivity() {
    private val viewModel: UserViewModel by viewModels()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        setContent {
            MaterialTheme {
                lifecycleScope.launch {
                    repeatOnLifecycle(Lifecycle.State.STARTED) {
                        viewModel.users.collect { users ->
                            updateUi(users)
                        }
                    }
                }
            }
        }
    }

    override fun onSaveInstanceState(outState: Bundle) {
        super.onSaveInstanceState(outState)
        outState.putString("last_search", searchQuery)
    }

    override fun onRestoreInstanceState(savedInstanceState: Bundle) {
        super.onRestoreInstanceState(savedInstanceState)
        searchQuery = savedInstanceState.getString("last_search", "")
    }
}

استفاده از repeatOnLifecycle تضمین می‌کند که جمع‌آوری داده‌ها هنگام رفتن Activity به پس‌زمینه متوقف می‌شود و هنگام بازگشت به پیش‌زمینه از سر گرفته می‌شود. این کار از نشت و درخواست‌های شبکه غیرضروری جلوگیری می‌کند. onSaveInstanceState حالت موقت را هنگام چرخش صفحه ذخیره می‌کند.

Google Play: انتشار و الزامات

Google Play فروشگاه رسمی برنامه‌های Android است. ثبت حساب توسعه‌دهنده ۲۵ دلار یکبار هزینه دارد. هر برنامه تحت بررسی خودکار Google Play Integrity برای کدهای مخرب، نقض خط‌مشی‌ها و استفاده نادرست از مجوزها قرار می‌گیرد.

الزامات انتشار

Google امضای برنامه را از طریق Android App Bundle (AAB) یا APK الزامی می‌کند. AAB فرمت توصیه شده است که امکان تولید APK بهینه‌شده برای هر پیکربندی دستگاه را فراهم می‌کند. برنامه باید با یک کلید (keystore) با گواهی معتبر امضا شود. Google Play App Signing رمزگذاری اختیاری کلید در سمت گوگل است.

سیاست حفظ حریم خصوصی

همه برنامه‌هایی که دسترسی به داده‌های شخصی را درخواست می‌کنند باید سیاست حفظ حریم خصوصی ارائه دهند. از سال ۲۰۲۴، Google اعلامیه Data Safety را الزامی می‌کند — فرمی که انواع داده‌های جمع‌آوری‌شده و اهداف پردازش را مشخص می‌کند. برنامه‌هایی که Android 14+ را هدف قرار می‌دهند باید از Declarations API برای اعلام مجوزها استفاده کنند.

الزامتوضیح
Android App Bundleفرمت AAB برای تحویل بهینه‌شده
Data Safetyفرم در مورد جمع‌آوری و پردازش داده‌های شخصی
SDK هدفبرنامه باید جدیدترین سطح API Android را هدف قرار دهد
رده‌بندی محتواپرسشنامه رده‌بندی سنی
فهرست فروشگاهنام، آیکون، اسکرین‌شات‌ها، توضیحات

سوالات متداول

کدام زبان برای توسعه Android بهتر است؟

Kotlin — زبان رسماً توصیه‌شده توسط گوگل برای Android. Java نیز برای پروژه‌های قدیمی پشتیبانی می‌شود. Kotlin ایمنی null، کوروتین‌ها و توابع گسترش را ارائه می‌دهد و حجم کد را ۳۰–۴۰٪ در مقایسه با Java کاهش می‌دهد.

چه چیزی را انتخاب کنیم: Jetpack Compose یا XML Layouts؟

Jetpack Compose به دلیل نحو اعلانی و بهینه‌سازی خودکار ترکیب مجدد برای همه پروژه‌های جدید توصیه می‌شود. XML Layouts در پروژه‌های قدیمی و مواردی که نیاز به سفارشی‌سازی دقیق Canvas یا SurfaceView است باقی می‌مانند.

هزینه انتشار در Google Play چقدر است؟

ثبت‌نام توسعه‌دهنده Google Play ۲۵ دلار یکبار هزینه دارد. کمیسیون فروشگاه برای اولین ۱ میلیون دلار درآمد ۱۵٪ و سپس ۳۰٪ است. برای اشتراک‌ها، کمیسیون از روز اول ۱۵٪ است. برخلاف Apple Developer Program هزینه سالانه وجود ندارد.

Android Jetpack چیست؟

Android Jetpack مجموعه‌ای از کتابخانه‌های گوگل است که در SDK رسمی گنجانده شده‌اند: Navigation، Room (ORM SQLite با بررسی پرس و جو در زمان کامپایل)، WorkManager (وظایف پس‌زمینه تضمینی)، ViewModel (مدیریت حالت)، LiveData و StateFlow برای واکنش‌گرایی.

حداقل الزامات برای یک برنامه Android چیست؟

حداقل نسخه پشتیبانی‌شده برای پروژه‌های جدید API 24 (Android 7.0) است. AndroidManifest.xml مؤلفه‌ها و مجوزهای برنامه را توصیف می‌کند. APK/AAB با keystore امضا می‌شود. SDK هدف باید با جدیدترین سطح API در زمان انتشار مطابقت داشته باشد.

خلاصه

  • Android — سیستم‌عامل موبایل باز بر روی هسته لینوکس با ۷۲٪ سهم بازار جهانی و گزینه‌های سفارشی‌سازی توسط سازندگان
  • Kotlin — زبان اصلی توسعه Android با ایمنی null، کوروتین‌ها و ۱۰۰٪ سازگاری با Java
  • معماری Android بر چهار لایه ساخته شده است: هسته لینوکس، HAL، Android Runtime، Application Framework
  • Activity, Service, BroadcastReceiver, ContentProvider — چهار مؤلفه ثبت‌شده در مانیفست
  • Jetpack Compose — چارچوب UI اعلانی توصیه‌شده توسط گوگل با ترکیب مجدد خودکار
  • Google Play — پرداخت یکبار ۲۵ دلار، فرمت AAB، Data Safety و سیاست حفظ حریم خصوصی اجباری
  • WorkManager — API توصیه‌شده برای وظایف پس‌زمینه با ضمانت اجرا و محدودیت‌ها

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید