Android: ما هو، هندسة النظام والتطوير بلغة Kotlin

المؤلف: IT Sectr نُشر: 2026-02-07 وقت القراءة: 11 دق

Android هو نظام تشغيل محمول من Google مفتوح المصدر (AOSP) يعمل على نواة Linux. يتم تطوير تطبيقات Android باستخدام Kotlin في بيئة Android Studio. تغطي المقالة بنية نظام التشغيل، ومكونات التطبيقات، وJetpack Compose، والنشر على Google Play.

الملامح الرئيسية

  • Android — نظام تشغيل على نواة Linux بأربع طبقات: النواة، HAL، Android Runtime، Application Framework
  • Kotlin — لغة التطوير الأساسية مع أمان القيم الخالية والكوروتينات للبرمجة غير المتزامنة
  • Activity, Service, BroadcastReceiver, ContentProvider — أربعة مكونات إلزامية لتطبيق Android
  • Jetpack Compose — إطار عمل واجهة مستخدم تصريحي موصى به من Google للمشاريع الجديدة
  • Google Play — قناة التوزيع الرئيسية مع عمولة 15–30% والتحقق الأمني Play Integrity

ما هو Android؟

Android هو نظام تشغيل محمول يعتمد على نواة Linux، تم تطويره بواسطة Google منذ عام 2007. كود المصدر مفتوح بموجب ترخيص Apache 2.0 ضمن مشروع Android Open Source Project (AOSP). يمكن لكل مصنع تعديل النظام وتثبيته على أجهزته.

وفقًا لـ StatCounter (2026)، يستحوذ Android على حوالي 72% من سوق أنظمة التشغيل المحمولة العالمية. أكبر المصنعين هم Samsung وXiaomi وOppo وVivo وGoogle Pixel. التجزؤ هو المشكلة الرئيسية للمنصة: يتم استخدام آلاف الطرازات بإصدارات مختلفة من نظام التشغيل في وقت واحد.

بنية Android مبنية على مبدأ الأذونات (permissions): يعمل كل تطبيق تحت UID منفصل في Linux وله حق الوصول فقط إلى بياناته الخاصة. يتم طلب الوصول إلى موارد النظام (الكاميرا، الميكروفون، جهات الاتصال) عبر أذونات Android في وقت التشغيل، بدءًا من Android 6 (API 23).

تاريخ إصدارات Android

تم إصدار Android 1.0 في عام 2008 على HTC Dream. المعالم الرئيسية: Android 4.0 Ice Cream Sandwich (واجهة موحدة للهواتف والأجهزة اللوحية)، Android 5.0 Lollipop (Material Design)، Android 6.0 (أذونات وقت التشغيل)، Android 10 (الوضع الداكن، الإيماءات)، Android 12 (Material You). منذ عام 2023، انتقلت Google إلى إصدارات رئيسية سنوية بدون أسماء حلويات.

إصدار 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، لوحة الخصوصية
Android 152024المساحة الخاصة، الاتصال عبر الأقمار الصناعية

هندسة Android: أربع طبقات رئيسية

تتكون بنية Android من أربع طبقات رئيسية تعزل الأجهزة عن تطبيقات المستخدم. تستخدم كل طبقة خدمات الطبقة التي تحتها من خلال واجهات محددة بدقة.

نواة Linux وHAL

الطبقة السفلية هي نواة Linux معدلة (LTS، الإصدار 6.x في Android 15). تدير الذاكرة والعمليات ومكدس الشبكة وبرامج التشغيل. توفر طبقة تجريد الأجهزة (HAL) واجهة برمجة تطبيقات موحدة للتفاعل مع الأجهزة: الكاميرا، Bluetooth، Wi-Fi، أجهزة الاستشعار. يقوم المصنعون بتنفيذ وحدات HAL دون التأثير على الطبقات العليا.

Android Runtime (ART)

يقوم ART بتنفيذ DEX bytecode للتطبيقات. منذ Android 5.0، استبدل ART Dalvik ويستخدم التجميع Ahead-of-Time (AOT) لتحسين الأداء. كل تطبيق له عمليته الخاصة مع مثيل ART منفصل. يعمل جمع القمامة (GC) مع فترات توقف قليلة — فترة توقف GC النموذجية هي 2–4 مللي ثانية.

Application 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 عن Kotlin كلغة رسمية لـ Android في عام 2017 في Google I/O. Kotlin متوافقة تمامًا مع Java ولكنها تلغي عيوبها: أمان القيم الخالية، فئات البيانات، دوال الامتداد والكوروتينات.

أمان القيم الخالية والأنواع

الميزة الرئيسية لـ 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 للمعالجة الآمنة للأخطاء. تحل الكوروتينات محل callbacks وRxJava دون عبء إضافي على الخيوط.

كوروتينات Kotlin وFlow

كوروتينات Kotlin هي خيوط خفيفة تعمل على مجموعة خيوط مشتركة. Dispatchers.IO للشبكة والقرص، Dispatchers.Main لواجهة المستخدم، Dispatchers.Default للمهام كثيفة الاستخدام لوحدة المعالجة المركزية. تقوم 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 هو بيئة التطوير المتكاملة الرسمية المعتمدة على IntelliJ IDEA، والمطورة بواسطة Google. يتضمن محرر أكواد، Layout Inspector، محاكي الأجهزة، APK Analyzer، Profiler (CPU، الذاكرة، الشبكة، الطاقة) والتكامل مع Firebase. يدعم Android Studio 2024 (Ladybug) Kotlin 2.0 مع الوضع متعدد المنصات KMP.

محاكي Android

يستخدم محاكي Android KVM (Linux) أو Hyper-V (Windows) لتسريع الأجهزة. يدعم محاكاة GPS وأجهزة الاستشعار والكاميرا والمكالمات والرسائل النصية. Google Pixel 9 Pro هو التكوين الموصى به للاختبار مع API 35 و8 جيجابايت من ذاكرة الوصول العشوائي للمحاكي.

Android Profiler وتصحيح الأخطاء

يعرض Profiler في الوقت الفعلي تحميل وحدة المعالجة المركزية وتخصيص الذاكرة وطلبات الشبكة واستهلاك الطاقة. يتيح Memory Profiler تفريغ heap وتحليل التسريبات عبر شجرة المرجع. يسجل Network Inspector جميع طلبات HTTP/HTTPS مع الجسم والرؤوس. للتحليل المتعمق، يُستخدم Android Studio Canary.

مكونات تطبيق Android

يتكون تطبيق Android من أربعة أنواع من المكونات، لكل منها نقطة دخول خاصة به ودورة حياة خاصة به. يتم تسجيل المكونات في ملف AndroidManifest.xml.

المكونالغرضنقطة الدخول
Activityشاشة بواجهة مستخدم للتفاعل مع المستخدمIntent مع Action.MAIN وفئة LAUNCHER
Serviceتنفيذ مهام خلفية بدون واجهة مستخدمstartService() أو 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) هي المعيار منذ عام 2008. تم تقديم Jetpack Compose في عام 2021 كبديل تصريحي.

المعيار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

توصي Google بـ Jetpack Compose لجميع المشاريع الجديدة. تظل تخطيطات XML ذات صلة بدعم المشاريع القديمة وفي الحالات التي تكون هناك حاجة إلى أقصى تخصيص لـ View (Canvas, SurfaceView). كود Compose أقصر بنسبة 40% في المتوسط من 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 — تصف واجهة المستخدم بشكل تصريحي دون إنشاء مثيلات 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. تكلفة تسجيل حساب المطور 25 دولارًا أمريكيًا لمرة واحدة. يخضع كل تطبيق لفحص تلقائي من Google Play Integrity للتحقق من وجود تعليمات برمجية ضارة وانتهاكات السياسات والاستخدام غير الصحيح للأذونات.

متطلبات النشر

تطلب Google توقيع التطبيق عبر Android App Bundle (AAB) أو APK. AAB هو التنسيق الموصى به، والذي يتيح إنشاء APK محسّن لكل تكوين جهاز. يجب توقيع التطبيق بمفتاح (keystore) بشهادة صالحة. Google Play App Signing هو تشفير اختياري للمفتاح على جانب Google.

سياسة الخصوصية

يجب على جميع التطبيقات التي تطلب الوصول إلى البيانات الشخصية تقديم سياسة خصوصية. منذ عام 2024، تطلب Google إعلان أمان البيانات — نموذج يحدد أنواع البيانات التي تم جمعها وأغراض المعالجة. يجب على التطبيقات التي تستهدف Android 14+ استخدام Declarations API للإعلان عن الأذونات.

المتطلبالوصف
Android App Bundleتنسيق AAB للتوزيع المحسّن
أمان البياناتنموذج حول جمع ومعالجة البيانات الشخصية
الحد الأدنى لإصدار SDKيجب أن يستهدف التطبيق أحدث إصدار API لنظام Android
تصنيف المحتوىاستبيان التصنيف العمري
قائمة المتجرالاسم، الأيقونة، لقطات الشاشة، الوصف

الأسئلة الشائعة

ما هي أفضل لغة لتطوير Android؟

Kotlin — اللغة الموصى بها رسميًا من Google لنظام Android. Java مدعومة أيضًا للمشاريع القديمة. تقدم Kotlin أمان القيم الخالية والكوروتينات ودوال الامتداد، مما يقلل حجم الكود بنسبة 30–40% مقارنة بـ Java.

ماذا تختار: Jetpack Compose أم XML Layouts؟

Jetpack Compose موصى به لجميع المشاريع الجديدة بفضل بنيته التصريحية والتحسين التلقائي لإعادة التركيب. XML Layouts تبقى في المشاريع القديمة والحالات التي تتطلب تخصيصًا دقيقًا لـ Canvas أو SurfaceView.

كم تكلفة النشر على Google Play؟

تسجيل مطور Google Play يكلف $25 لمرة واحدة. عمولة المتجر هي 15% لأول مليون دولار من الإيرادات، ثم 30%. للاشتراكات، العمولة 15% من اليوم الأول. لا توجد رسوم سنوية على عكس Apple Developer Program.

ما هو Android Jetpack؟

Android Jetpack هو مجموعة من مكتبات Google المضمنة في SDK الرسمي: Navigation، Room (ORM SQLite مع التحقق من الاستعلامات في وقت الترجمة)، WorkManager (المهام الخلفية المضمونة)، ViewModel (إدارة الحالة)، LiveData وStateFlow للتفاعلية.

ما هي المتطلبات الدنيا لتطبيق Android؟

الحد الأدنى للإصدار المدعوم هو API 24 (Android 7.0) للمشاريع الجديدة. يصف AndroidManifest.xml مكونات التطبيق وأذوناته. يتم توقيع APK/AAB باستخدام keystore. يجب أن يتوافق Target SDK مع أحدث إصدار API وقت النشر.

الملخص

  • Android — نظام تشغيل محمول مفتوح على نواة Linux بحصة سوقية 72% عالميًا وخيارات تخصيص من قبل المصنعين
  • Kotlin — لغة تطوير Android الأساسية مع أمان القيم الخالية والكوروتينات وتوافق 100% مع Java
  • هندسة Android مبنية على أربع طبقات: نواة Linux، HAL، Android Runtime، Application Framework
  • Activity, Service, BroadcastReceiver, ContentProvider — أربعة مكونات مسجلة في البيان
  • Jetpack Compose — إطار عمل واجهة مستخدم تصريحي موصى به من Google مع إعادة تركيب تلقائية
  • Google Play — دفع لمرة واحدة $25، تنسيق AAB، إلزامية أمان البيانات وسياسة الخصوصية
  • WorkManager — API موصى به للمهام الخلفية مع ضمانات التنفيذ والقيود

سنقوم بتطوير تطبيق جوال جاهز

تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.

مناقشة المشروع

اقرأ أيضًا