Jetpack — Android application yaratishni soddalashtirish, architecture’ni tartibga solish va platforma versiyalari orasidagi compatibility’ni yaxshilash uchun taqdim etilgan kutubxonalar, vositalar va tavsiyalar to‘plami. Jetpack bitta framework emas; u lifecycle, navigation, database, background work, UI va boshqa yo‘nalishlardagi ko‘plab componentlarni birlashtiradi.
Jetpack kutubxonalari Android platforma APIlaridan alohida release qilinishi mumkin. Shu sababli yangi imkoniyat ayrim hollarda to‘liq OS update kutmasdan application dependency sifatida olinadi.
AndroidX
Ko‘p Jetpack kutubxonalari androidx.* package namespace’ida joylashadi.
AndroidX eski Support Library’ning davomidir.
Misollar:
androidx.lifecycle
androidx.room
androidx.navigation
androidx.work
androidx.compose
Dependency versionlari Gradle orqali boshqariladi.
Lifecycle
Lifecycle component Activity va Fragment holatini kuzatish uchun standard model beradi.
Observer componentning:
- started;
- resumed;
- stopped;
- destroyed
holatiga mos ish bajarishi mumkin.
Bu callbacklarni qo‘lda ko‘p joyda takrorlashni kamaytiradi.
ViewModel
ViewModel UI bilan bog‘liq state va logikani configuration change davomida saqlash uchun ishlatiladi.
Masalan, ekran aylanganda Activity qayta yaratilsa ViewModel saqlanadi.
ViewModel permanent storage emas.
Process o‘ldirilsa muhim state database yoki saved state’dan tiklanadi.
LiveData va Flow
LiveData lifecycle-aware observable data container.
Kotlin Flow asynchronous streamlar uchun umumiyroq vosita.
Zamonaviy Jetpack loyihalarida Flow, StateFlow va Compose state bilan ishlash keng tarqalgan.
Collector lifecycle holatiga mos boshqariladi.
Room
Room SQLite ustida abstraction beradi.
U:
- entity;
- DAO;
- query validation;
- migration;
- transaction;
- Flow integration
imkoniyatlariga ega.
SQL query compile vaqtida tekshirilishi mumkin.
Schema version o‘zgarsa migration yoziladi.
Navigation
Navigation component destination va ular orasidagi actionlarni boshqaradi.
U:
- back stack;
- deep link;
- argument;
- nested graph;
- transition
bilan ishlaydi.
Compose va Fragment uchun alohida integratsiya mavjud.
WorkManager
Kafolatli, kechiktirilishi mumkin bo‘lgan background ishlar uchun ishlatiladi.
Masalan:
- network;
- charging;
- battery;
- storage
bilan belgilanadi.
Aniq sekundda real-time ishlash uchun mo‘ljallanmagan.
DataStore
Kichik preference yoki typed data’ni asynchronous saqlash uchun ishlatiladi.
SharedPreferences’ga zamonaviy alternativa sifatida qo‘llanadi.
Preferences DataStore key-value, Proto DataStore typed schema bilan ishlaydi.
Katta relational data uchun Room mosroq.
Paging
Paging katta datasetni bo‘lib yuklash va UI’da ko‘rsatishni boshqaradi.
U network, database va remote mediator bilan ishlashi mumkin.
Loading, retry va end-of-pagination holatlarini standardlashtiradi.
Har sahifani qo‘lda boshqarishdagi race conditionlarni kamaytiradi.
Hilt
Hilt Android uchun dependency injectionni soddalashtiradi.
U Dagger asosida ishlaydi.
Application, Activity, ViewModel va boshqa lifecycle scope’lar uchun component yaratadi.
Dependency graph compile vaqtida tekshiriladi.
CameraX
CameraX camera use-case’larini soddalashtiradi:
Turli device implementationlari orasidagi compatibility’ni yaxshilashga intiladi.
Camera permission va lifecycle bilan integratsiya qilinadi.
Security kutubxonalari
Jetpack oilasida encryption, credential yoki biometric interactionga yordam beruvchi componentlar bo‘lishi mumkin.
Ular platforma security primitive’larini qulay API bilan beradi.
Kutubxona ishlatish threat model va server-side security ehtiyojini almashtirmaydi.
Compose
Jetpack Compose Android uchun declarative UI toolkit.
U Jetpack oilasining UI yo‘nalishidagi muhim qismi.
State o‘zgarganda composable functionlar qayta ishlaydi.
Compose View tizimi bilan bir projectda birga qo‘llanishi mumkin.
Architecture
Jetpack tavsiyalarida application qatlamlarga ajratilishi mumkin:
Repository data source’larni yashiradi.
ViewModel UI state’ni boshqaradi.
Bu qat’iy yagona architecture emas, loyiha hajmiga moslashtiriladi.
Single source of truth
Ma’lumotning asosiy ishonchli manbasi bitta qatlamda saqlanadi.
Masalan, offline-first applicationda database UI uchun source of truth bo‘lishi mumkin.
Network response avval database’ni yangilaydi, UI esa database oqimini kuzatadi.
Bu state conflictni kamaytiradi.
Versioning
Jetpack kutubxonalari mustaqil versionlarga ega.
BOM ayrim oiladagi compatible versionlarni birga boshqarishi mumkin.
Release note breaking change, deprecation va bug fixlarni ko‘rsatadi.
Dependency update test bilan amalga oshiriladi.
Testability
ViewModel, Room, WorkManager va Navigation test uchun APIlar beradi.
Business logic Android frameworkdan ajratilsa unit test osonlashadi.
Instrumentation test real platforma behaviorini tekshiradi.
Fake repository va in-memory database ishlatilishi mumkin.
Process lifecycle
Application background va foreground holatini kuzatish uchun process lifecycle componenti mavjud.
Bu analytics yoki session tushunchasiga yordam beradi.
U har Activity lifecycle’ining o‘rnini bosmaydi.
Multi-window holatlari hisobga olinadi.
Compatibility
Jetpack componentlar eski API levelda fallback yoki compatibility qatlamidan foydalanishi mumkin.
Barcha feature barcha eski qurilmada aynan bir xil ishlashi shart emas.
Minimal SDK va library release talablari tekshiriladi.
SavedStateHandle
ViewModel process qayta yaratilganda kichik navigation yoki UI state’ni SavedStateHandle orqali tiklashi mumkin. U katta object va doimiy database o‘rnini bosmaydi. Faqat qayta yaratish uchun zarur primitive yoki serializable qiymatlar saqlanadi.
Startup
App Startup komponenti kutubxona initializationlarini tartibli boshqarishga yordam beradi. Har dependency application ochilishida darhol ishga tushishi shart emas. Lazy initialization startup vaqtini kamaytiradi.
Baseline profile
Muhim user flow uchun oldindan compilationga yordam beruvchi profile startup va scrolling performance’ni yaxshilashi mumkin. Profile real release build va representative interaction asosida yaratiladi.
Bog‘liq tushunchalar
Android Jetpack, AndroidX, ViewModel, Lifecycle, Room, WorkManager, Navigation, DataStore, Paging, Hilt, Jetpack Compose