Bosh sahifa Wiki Jetpack

Jetpack

JetpackAndroid 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:

imkoniyatlariga ega.

SQL query compile vaqtida tekshirilishi mumkin.

Schema version o‘zgarsa migration yoziladi.

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:

Constraint:

  • 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