Android — ochiq manba kodli (AOSP) va Linux yadrosida ishlaydigan Google mobil operatsion tizimi. Android dasturlash Kotlin tilida Android Studio muhitida amalga oshiriladi. Maqola OT arxitekturasi, ilova komponentlari, Jetpack Compose va Google Play-da nashr qilishni qamrab oladi.
Asosiy fikrlar
Android — Linux yadrosiga asoslangan mobil operatsion tizim, Google tomonidan 2007-yildan beri ishlab chiqilmoqda. Manba kodi Android Open Source Project (AOSP) doirasida Apache 2.0 litsenziyasi ostida ochiq. Har bir ishlab chiqaruvchi tizimni o‘zgartirishi va o‘z qurilmalariga o‘rnatishi mumkin.
StatCounter (2026) ma'lumotlariga ko‘ra, Android global mobil OT bozorining taxminan 72% ni egallaydi. Eng yirik ishlab chiqaruvchilar: Samsung, Xiaomi, Oppo, Vivo, Google Pixel. Parchalanish platformaning asosiy muammosidir: turli OT versiyalariga ega minglab modellar bir vaqtning o‘zida ishlatiladi.
Android arxitekturasi ruxsatlar (permissions) tamoyiliga asoslangan: har bir ilova alohida Linux UID ostida ishlaydi va faqat o‘z ma'lumotlariga kirish huquqiga ega. Tizim resurslariga (kamera, mikrofon, kontaktlar) kirish Android 6 (API 23) dan boshlab ish vaqtida Android Permissions orqali so‘raladi.
Android 1.0 2008-yilda HTC Dream da chiqarilgan. Asosiy bosqichlar: Android 4.0 Ice Cream Sandwich (telefonlar va planshetlar uchun yagona interfeys), Android 5.0 Lollipop (Material Design), Android 6.0 (ish vaqti ruxsatlari), Android 10 (qorong‘u mavzu, imo-ishoralar), Android 12 (Material You). 2023-yildan boshlab Google shirinlik nomlarisiz yillik asosiy relizlarga o‘tdi.
| Android versiyasi | Yil | Asosiy yangilik |
|---|---|---|
| Android 1.0 | 2008 | HTC Dream da birinchi reliz |
| Android 4.0 (ICS) | 2011 | Telefonlar va planshetlar uchun yagona dizayn |
| Android 5.0 (L) | 2014 | Material Design, Dalvik o‘rniga ART |
| Android 6.0 (M) | 2015 | Ish vaqti ruxsatlari, Doze rejimi |
| Android 8.0 (O) | 2017 | Kotlin rasmiy til sifatida |
| Android 10 (Q) | 2019 | Scoped Storage, qorong‘u mavzu |
| Android 12 (S) | 2021 | Material You, Privacy Dashboard |
| Android 15 | 2024 | Private Space, sun'iy yo‘ldosh aloqasi |
Android arxitekturasi to‘rtta asosiy qatlamdan iborat bo‘lib, ular apparat ta'minotini foydalanuvchi ilovalaridan ajratadi. Har bir qatlam qat'iy belgilangan interfeyslar orqali pastki qatlam xizmatlaridan foydalanadi.
Eng pastki qatlam — o‘zgartirilgan Linux yadrosi (LTS, Android 15 da versiya 6.x). U xotira boshqaruvi, jarayonlar, tarmoq steki va drayverlarni boshqaradi. Hardware Abstraction Layer (HAL) apparat bilan (kamera, Bluetooth, Wi-Fi, sensorlar) o‘zaro aloqa qilish uchun yagona API taqdim etadi. Ishlab chiqaruvchilar yuqori qatlamlarga ta'sir qilmasdan HAL modullarini amalga oshiradilar.
ART ilovalarning DEX bayt kodini bajaradi. Android 5.0 dan boshlab, ART Dalvik o‘rnini egalladi va ishlashni yaxshilash uchun Ahead-of-Time (AOT) kompilyatsiyasidan foydalanadi. Har bir ilova alohida ART instansi bilan o‘z jarayoniga ega. Axlat yig‘ish (GC) minimal pauzalar bilan ishlaydi — odatdagi GC pauzasi 2–4 ms.
Framework — bu dasturchi bevosita ishlaydigan qatlam. U Activity Manager (ekranlar steki), Content Providers (ma'lumotlarga kirish), Resource Manager (mahalliylashtirish, resurslar), Notification Manager, Location Manager ni o‘z ichiga oladi. Barcha tizim xizmatlari Binder IPC — Android ning jarayonlararo aloqa mexanizmi orqali chaqiriladi.
// AIDL interfeysi orqali Binder bilan ishlash misoli
interface IDataService : android.os.IInterface {
fun getData(): List<DataItem>
fun saveData(item: DataItem): Boolean
}
// Xizmatni amalga oshirish
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
}Yuqori qatlam standart tizim ilovalaridan iborat: Telefon, Kontaktlar, Kamera, Sozlamalar, Brauzer. Ular foydalanuvchi ilovalaridan yuqori imtiyozlarga ega emas, lekin uchinchi tomon ilovalari bilan almashtirilishi mumkin. Android 15 da tizim ilovalari ishlab chiqaruvchining OTA yangilanishlaridan mustaqil ravishda Google Play System Updates orqali yangilanadi.
Kotlin — JetBrains tomonidan statik tipli, JVM da ishlaydigan dasturlash tili. Google 2017 yilda Google I/O da Kotlin ni rasmiy Android tili deb e'lon qildi. Kotlin Java bilan to‘liq mos keladi, lekin uning kamchiliklarini bartaraf etadi: null xavfsizligi, ma'lumot sinflari, kengaytma funksiyalari va korutinlar.
Kotlin ning asosiy xususiyati NullPointerException ga qarshi o‘rnatilgan himoya. Turlar nullable (String?) va non-null (String) ga bo‘linadi. Kompilyator qurish vaqtida nullable kirishni tekshiradi. Safe call (?.) va Elvis operatori (?:) ichma-ich tekshirishlarsiz ixtiyoriy qiymatlar bilan ishlashni soddalashtiradi.
// Korutinlar va Flow bilan Kotlin kodi misoli
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)
}
}Misol asinxron tarmoq va ma'lumotlar bazasiga kirish uchun korutinlarni (suspend funksiyasi), ma'lumot o‘zgarishlarini reaktiv kuzatish uchun Flow ni va xavfsiz xatolarni boshqarish uchun Result ni ko‘rsatadi. Korutinlar thread yuklamasiz callback va RxJava o‘rnini bosadi.
Kotlin korutinlari umumiy thread hovuzida ishlaydigan yengil threadlardir. Tarmoq va disk uchun Dispatchers.IO, UI uchun Dispatchers.Main, CPU intensiv vazifalar uchun Dispatchers.Default. viewModelScope va lifecycleScope komponent yo‘q qilinganda korutinlarni avtomatik bekor qiladi.
// Korutinlar va StateFlow bilan ViewModel
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 — IntelliJ IDEA ga asoslangan rasmiy IDE, Google tomonidan ishlab chiqilgan. Kod muharriri, Layout Inspector, qurilma emulyatori, APK Analyzer, Profiler (CPU, Xotira, Tarmoq, Energiya) va Firebase integratsiyasini o‘z ichiga oladi. Android Studio 2024 (Ladybug) ko‘p platformali KMP rejimi bilan Kotlin 2.0 ni qo‘llab-quvvatlaydi.
Android emulyatori apparat tezlashtirish uchun KVM (Linux) yoki Hyper-V (Windows) dan foydalanadi. GPS, sensorlar, kamera, qo‘ng‘iroqlar va SMS simulyatsiyasini qo‘llab-quvvatlaydi. Google Pixel 9 Pro API 35 va 8 GB emulyator RAM bilan sinov uchun tavsiya etilgan konfiguratsiya.
Profiler real vaqtda CPU yuklanishi, xotira ajratilishi, tarmoq so‘rovlari va energiya sarfini ko‘rsatadi. Memory Profiler mos yozuvlar daraxti orqali heap tushirish va oqish tahliliga imkon beradi. Network Inspector tanasi va sarlavhalari bilan barcha HTTP/HTTPS so‘rovlarini qayd qiladi. Chuqur tahlil uchun Android Studio Canary ishlatiladi.
Android ilovasi to‘rt turdagi komponentlardan iborat, ularning har biri o‘z kirish nuqtasi va hayot sikliga ega. Komponentlar AndroidManifest.xml faylida ro‘yxatdan o‘tkaziladi.
| Komponent | Maqsad | Kirish nuqtasi |
|---|---|---|
| Activity | Foydalanuvchi bilan o‘zaro aloqa uchun UI ekran | Action.MAIN va LAUNCHER toifasi bilan Intent |
| Service | UIsiz fon vazifalarini bajarish | startService() yoki bindService() |
| BroadcastReceiver | Tizim yoki maxsus hodisalarni qabul qilish | Manifestda yoki kodda ro‘yxatdan o‘tish |
| ContentProvider | Strukturalangan ma'lumotlarga kirishni boshqarish | ContentResolver orqali URI |
Activity foydalanuvchi interfeysining asosiy komponentidir. Har bir ekran alohida Activity yoki Activity ichidagi Fragment. Ekranlar orasida navigatsiya Intent — harakat (ACTION_VIEW, ACTION_SEND) va ma'lumot (URI) ni o‘z ichiga olgan obyekt orqali amalga oshiriladi. Jetpack Navigation Graph da navigatsiya XML da tasvirlangan.
Service fon vazifalarini bajaradi, ammo Android 8 dan boshlab fon xizmatlari cheklangan. WorkManager zanjirlar, cheklovlar (masalan, faqat zaryadlash vaqtida) va qulashdan keyin qayta ishga tushirishni qo‘llab-quvvatlash bilan kechiktirilgan va kafolatlangan fon vazifalari uchun tavsiya etilgan kutubxona.
Jetpack Compose va an'anaviy XML layoutlar o‘rtasidagi tanlov Android loyihasini boshlashda asosiy arxitektura qaroridir. XML Layoutlar (RecyclerView, ConstraintLayout, FrameLayout) 2008 yildan beri standart. Jetpack Compose 2021 yilda deklarativ muqobil sifatida taqdim etilgan.
| Mezon | XML Layouts | Jetpack Compose |
|---|---|---|
| Paradigma | Buyruq (View daraxti) | Deklarativ (@Composable funksiyalar) |
| Minimal versiya | Istagan (API 1+) | API 21+ (Android 5.0) |
| Layout | XML + data binding / ViewBinding | Modifier bilan Kotlin kodi |
| RecyclerView analogi | RecyclerView + Adapter + ViewHolder | LazyColumn / LazyGrid |
| Oldindan ko‘rish | Android Studio da XML oldindan ko‘rish | Interaktivlik bilan @Preview annotatsiyasi |
| Qayta birlashish | notifyDataSetChanged (to‘liq) | Avtomatik, aniq (DiffUtil) |
| Interoperabellik | To‘liq (barcha kutubxonalar) | XML da ComposeView / Compose da AndroidView |
Google barcha yangi loyihalar uchun Jetpack Compose ni tavsiya qiladi. XML Layoutlar eski loyihalarni qo‘llab-quvvatlash va maksimal View sozlash (Canvas, SurfaceView) zarur bo‘lgan holatlar uchun dolzarb bo‘lib qoladi. Compose kodi ekvivalent XML + ViewBinding dan o‘rtacha 40% qisqa.
// Jetpack Compose — foydalanuvchi profil ekrani
@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 = Foydalanuvchi avatari,
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(Profilni tahrirlash)
}
}
}
@Preview(showBackground = true, showSystemUi = true)
@Composable
fun ProfileScreenPreview() {
MaterialTheme {
ProfileScreen(
user = User(1, Anna Petrova, "anna@example.com"),
onEditClick = {}
)
}
}ProfileScreen funksiyasi @Composable deb e'lon qilingan — View instansiyalarini yaratmasdan UI ni deklarativ tasvirlaydi. Compose user o‘zgarganda ekranni avtomatik yangilaydi. @Preview qurish va emulyatorda ishga tushirishsiz to‘g‘ridan-to‘g‘ri IDE da natijani ko‘rsatadi.
Android dagi har bir Activity hayot siklining olti holatidan o‘tadi: onCreate, onStart, onResume, onPause, onStop, onDestroy. Fragment onAttach, onCreateView, onViewCreated qo‘shadi. Hayot siklini tushunish xotira boshqaruvi va oqishlarning oldini olish uchun muhimdir.
onCreate — Activity yaratilganda bir marta chaqiriladi. Bu yerda ishga tushirish amalga oshiriladi: setContentView, adapter sozlash, LiveData obunasi. onResume — Activity oldingi planda va foydalanuvchi bilan o‘zaro aloqada. onPause — Activity fokusni yo‘qotadi (dialog, boshqa Activity). onStop — Activity ko‘rinmaydi. onDestroy — Activity yo‘q qilinadi.
// LifecycleScope orqali hayot siklini boshqarish bilan Activity
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 dan foydalanish Activity fon ga o‘tganda ma'lumot yig‘ish to‘xtashini va oldingi planga qaytganda davom etishini kafolatlaydi. Bu oqishlar va keraksiz tarmoq so‘rovlarining oldini oladi. onSaveInstanceState ekran aylanishida vaqtinchalik holatni saqlaydi.
Google Play rasmiy Android ilovalar do‘konidir. Dasturchi hisobini ro‘yxatdan o‘tkazish $25 bir martalik to‘lov. Har bir ilova zararli kod, siyosat buzilishlari va noto‘g‘ri ruxsat ishlatish uchun avtomatik Google Play Integrity tekshiruvidan o‘tadi.
Google ilovani Android App Bundle (AAB) yoki APK orqali imzolashni talab qiladi. AAB har bir qurilma konfiguratsiyasi uchun optimallashtirilgan APK yaratishga imkon beruvchi tavsiya etilgan format. Ilova haqiqiy sertifikat bilan kalit (keystore) yordamida imzolanishi kerak. Google Play App Signing Google tomondan ixtiyoriy kalit shifrlashdir.
Shaxsiy ma'lumotlarga kirishni talab qiladigan barcha ilovalar Maxfiylik siyosati ni taqdim etishi kerak. 2024 yildan boshlab Google to‘plangan ma'lumotlar turlari va qayta ishlash maqsadlarini ko‘rsatuvchi Data Safety deklaratsiyasini talab qiladi. Android 14+ ga mo‘ljallangan ilovalar ruxsatlarni e'lon qilish uchun Declarations API dan foydalanishi kerak.
| Talab | Tavsif |
|---|---|
| Android App Bundle | Optimallashtirilgan yetkazib berish uchun AAB formati |
| Data Safety | Shaxsiy ma'lumotlarni to‘plash va qayta ishlash haqida shakl |
| Target SDK | Ilova eng so‘nggi Android API darajasini nishonga olishi kerak |
| Kontent reytingi | Yosh reytingi so‘rovnomasi |
| Do‘kon ro‘yxati | Nom, ikonka, ekran tasvirlari, tavsif |
Tez-tez so‘raladigan savollar
Kotlin — Google tomonidan Android uchun rasmiy tavsiya etilgan til. Java ham eski loyihalar uchun qo‘llab-quvvatlanadi. Kotlin null xavfsizligi, korutinlar va kengaytma funksiyalarini taklif qiladi, Java bilan solishtirganda kod hajmini 30–40% kamaytiradi.
Jetpack Compose deklarativ sintaksisi va avtomatik qayta birlashish optimallashuvi tufayli barcha yangi loyihalar uchun tavsiya etiladi. XML Layouts eski loyihalarda va Canvas yoki SurfaceView ni aniq sozlash zarur bo‘lgan hollarda qoladi.
Google Play dasturchi ro‘yxatdan o‘tkazish $25 bir martalik. Do‘kon komissiyasi birinchi $1 million daromad uchun 15%, keyin 30%. Obunalar uchun komissiya birinchi kundan boshlab 15%. Apple Developer Program dan farqli o‘laroq yillik to‘lov yo‘q.
Android Jetpack rasmiy SDK tarkibidagi Google kutubxonalari to‘plami: Navigation, Room (kompilyatsiya vaqtida so‘rov tekshiruvi bilan SQLite ORM), WorkManager (kafolatlangan fon vazifalari), ViewModel (holat boshqaruvi), LiveData va StateFlow reaktivlik uchun.
Yangi loyihalar uchun minimal qo‘llab-quvvatlanadigan versiya API 24 (Android 7.0). AndroidManifest.xml ilova komponentlari va ruxsatlarini tavsiflaydi. APK/AAB keystore bilan imzolanadi. Target SDK nashr vaqtida eng so‘nggi API darajasiga mos kelishi kerak.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.