Android — smartphone, tablet, televizor, avtomobil, wearable va boshqa qurilmalar uchun yaratilgan mobil operatsion tizim va dasturiy platforma. U Linux kerneliga tayanadi, application framework, runtime, system service va development tool’larni birlashtiradi. Android applicationlar ko‘pincha Kotlin yoki Java tilida yaratiladi, ayrim qismlar C yoki C++ orqali yozilishi mumkin.
Android ochiq kodli Android Open Source Project asosiga ega. Qurilma ishlab chiqaruvchilari unga driver, interfeys va o‘z xizmatlarini qo‘shishi mumkin.
Platforma qatlamlari
Soddalashtirilgan Android stack:
- Linux kernel;
- hardware abstraction;
- native library;
- Android Runtime;
- system service;
- application framework;
- application.
Har qatlam yuqoridagi qatlamlarga ma’lum API beradi.
Linux kernel
- process;
- memory;
- network;
- security;
- driver;
- power;
- file system
kabi past darajadagi vazifalarni boshqaradi.
Android oddiy desktop Linux distributioni emas, ammo kernel asosidan foydalanadi.
Hardware Abstraction Layer
HAL Android framework va qurilma hardware implementationi orasida standard interface beradi.
Camera, audio, sensor va boshqa componentlar vendor module orqali ulanadi.
Bu frameworkni har hardware modelining ichki tafsilotidan ajratadi.
Android Runtime
ART application bytecode’ini bajaradi.
Build jarayonida Kotlin yoki Java kodi DEX formatiga aylantiriladi.
- ahead-of-time;
- just-in-time;
- garbage collection;
- profile-guided optimization
kabi mexanizmlardan foydalanishi mumkin.
Application sandbox
Har Android application alohida Linux user ID bilan ishlaydi.
Default holatda boshqa application file va processiga bevosita kira olmaydi.
Data almashish explicit component, provider, permission yoki platform API orqali amalga oshiriladi.
Sandbox barcha zaifliklarni yo‘q qilmaydi.
APK
APK application package formatidir.
U:
ni saqlashi mumkin.
Qurilmaga o‘rnatiladigan application odatda APK ko‘rinishiga ega.
AAB
Android App Bundle publish formatidir.
Store bundle’dan qurilma configurationiga mos optimized APKlar yaratadi.
Bu keraksiz architecture, til va screen resource’larini userga yubormaslikka yordam beradi.
AAB odatda qurilmaga to‘g‘ridan-to‘g‘ri o‘rnatilmaydi.
Manifest
AndroidManifest.xml application haqida platformaga ma’lumot beradi:
Export qilingan component va permission security uchun muhim.
Activity
Activity odatda user ko‘radigan bitta ekran yoki interaction entry pointini ifodalaydi.
U lifecycle callbacklarga ega:
- create;
- start;
- resume;
- pause;
- stop;
- destroy.
Configuration change va process death UI state boshqaruvini talab qiladi.
Fragment
Fragment Activity ichidagi reusable UI va lifecycle componenti.
Bir ekranda bir nechta fragment bo‘lishi mumkin.
Navigation va responsive layoutda ishlatiladi.
Fragment lifecycle Activity lifecycle’iga bog‘liq, ammo aynan bir xil emas.
Service
Service backgroundda uzoqroq operation bajaradigan component.
Background execution cheklovlari sabab service doimiy yashashi kafolatlanmaydi.
Foreground service userga notification ko‘rsatishi va ma’lum permission talab qilishi mumkin.
Scheduled ish uchun WorkManager ko‘proq mos bo‘lishi ehtimoli bor.
Broadcast Receiver
System yoki application eventlarini qabul qiladi.
Masalan:
- boot;
- networkga oid signal;
- custom broadcast.
Background va implicit broadcastlar platforma versiyalarida cheklangan bo‘lishi mumkin.
Receiver qisqa ish bajaradi, uzun taskni workerga topshiradi.
Content Provider
Structured data’ni boshqa component yoki applicationlarga URI orqali taqdim etadi.
Permission va grant bilan access boshqariladi.
File sharing uchun FileProvider xavfsiz content URI yaratishi mumkin.
Raw file path boshqa applicationga berilmaydi.
Intent
Intent action bajarish yoki component ishga tushirishni ifodalovchi message.
- explicit intent aniq componentni ko‘rsatadi;
- implicit intent action va data bilan mos componentni qidiradi.
Untrusted intent extra va URIlar validationdan o‘tadi.
Permission
Android permission:
- normal;
- dangerous;
- signature;
- special access
kabi toifalarga ega bo‘lishi mumkin.
Dangerous permission runtime’da userdan so‘raladi.
Application faqat kerakli minimal permissionni talab qiladi.
Storage
Application internal storage’iga faqat o‘zi kira oladi.
Shared media va document uchun MediaStore yoki Storage Access Framework ishlatiladi.
Scoped storage umumiy file systemga erkin accessni cheklaydi.
Sensitive data encrypted va backup policy bilan boshqariladi.
UI
Android UI:
orqali yaratilishi mumkin.
Density-independent unit turli ekranlarda o‘lchamni moslashtiradi.
Accessibility semantics, content description va touch target muhim.
Lifecycle va process death
System memory kerak bo‘lsa background processni o‘ldirishi mumkin.
User keyin qaytsa screen state qayta yaratiladi.
Muhim state:
- ViewModel;
- saved state;
- database;
- repository
orqali tiklanadi.
Singleton memory permanent storage emas.
Android versioni
Platform API level bilan versionlanadi.
Application:
minSdk;targetSdk;compileSdk
qiymatlariga ega.
Yangi target version security va behavior o‘zgarishlarini olib kelishi mumkin.
Runtime API mavjudligi version tekshiruvi bilan boshqariladi.
Update ekotizimi
Android system update Google, chipset vendor, qurilma ishlab chiqaruvchi va mobil operator qatlamlariga bog‘liq bo‘lishi mumkin. Security patch darajasi qurilmalar orasida farq qiladi. Application faqat OS versionni emas, kerakli API va security capability’ni tekshiradi.
Process va thread
UI operationlar main threadda bajariladi. Network yoki katta hisoblash main threadni bloklasa interface javob bermay qoladi. Coroutine, executor yoki worker background ishni bajaradi, UI natijasi lifecycle’ga mos qaytariladi.
Build variant
Debug, staging va release variantlari boshqa endpoint, signing va logging settingiga ega bo‘lishi mumkin. Production secret source code ichida saqlanmaydi.
Bog‘liq tushunchalar
Android, Linux kernel, Android Runtime, APK, AAB, Activity, Fragment, Service, Intent, Permission, Jetpack