Jetpack — bu nima, arxitektura komponentlari

Muallif: IT Sectr Nashr etilgan: 2026-05-01 O'qish vaqti: 9 daq

Jetpack — bu Google tomonidan ishlab chiqilgan Android kutubxonalari to'plami bo'lib, dastur ishlab chiqishni soddalashtiradi va barqaror ilovalar yaratishni tezlashtiradi. ViewModel, Room va Navigation kabi komponentlar odatiy vazifalarni hal qiladi: hayotiy tsiklni boshqarish, ma'lumotlarni saqlash va navigatsiya. Android Developers (2026) ma'lumotlariga ko'ra, Jetpack 50 dan ortiq kutubxonani o'z ichiga oladi, ularning har biri AndroidX orqali Android 5.0 (API 21) bilan orqaga qarab mos keladi — Support Library o'rnini egallagan moslik kutubxonasi.

Asosiy

  • Android Jetpack — Android ilovalarini ishlab chiqishni tezlashtiradigan va AndroidX orqali orqaga qarab moslikni ta'minlaydigan 50+ kutubxona to'plami.
  • ViewModel ekran aylanishlaridan omon qoladi va Activity qayta yaratilganda ma'lumotlarni saqlaydi, foydalanuvchi kiritgan ma'lumotlarning yo'qolishini oldini oladi.
  • Room — SQLite ustidagi ORM qatlami, SQL so'rovlarini kompilyatsiya bosqichida tekshirish va korutinlarni qo'llab-quvvatlash bilan.
  • Navigation Component type-safe argumentlar bilan navigatsiya graflari orqali ekranlar o'rtasidagi o'tishlarni boshqaradi.
  • Lifecycle kontrollerlarda boilerplate-kodsiz Activity/Fragment hayotiy tsikli hodisalariga reaksiya berishga imkon beradi.

Android Jetpack nima?

Android Jetpack — 2018-yilda Google I/O da taqdim etilgan Google-dan kutubxonalar, vositalar va arxitektura tavsiyalari to'plami. Jetpack Support Library va Android Architecture Components o'rnini egalladi va ularni yagona ekotizimga birlashtirdi. Jetpackdan oldin har bir Android kutubxonasi mustaqil yangilanar edi, bu versiyalar ziddiyatiga olib kelardi. Jetpack versiyalarni yagona AndroidX identifikatori ostida sinxronlashtirdi va kichik yamalar bilan barqaror asosiy versiyalar modelini joriy qildi.

Jetpack kutubxonalari to'rt turkumga bo'linadi: Architecture (ViewModel, Room, Navigation, WorkManager), UI (Fragment, Compose, Animation, Palette), Behavior (DownloadManager, Media, Permissions, Sharing), Foundation (Android KTX, Multidex, AppCompat). Har bir turkum dasturning ma'lum qatlami vazifalarini hal qiladi — ma'lumotlarni boshqarishdan foydalanuvchi interfeysigacha.

Jetpack falsafasi

Google uchta Jetpack tamoyilini targ'ib qiladi: accelerate development (kamroq boilerplate, ko'proq biznes mantiq), eliminate boilerplate (ViewModel holatni qo'lda saqlashni yo'q qiladi, Room — SQLiteOpenHelper yozishni) va build with confidence (har bir kutubxona chiqarishdan oldin 15+ ming testdan o'tadi). Android Developers (2026) ma'lumotlariga ko'ra, Jetpackdagi ilovalar hayotiy tsikl bilan bog'liq 30% kamroq crashga ega.

AndroidX asos sifatida

Barcha Jetpack kutubxonalari AndroidX identifikatori ostida tarqatiladi (androidx.* ko'rinishidagi artefaktlar). AndroidX Support Library (com.android.support.* artefaktlari) o'rnini egalladi, monolit kutubxonani mustaqil versiyalash bilan modulli artefaktlarga ajratdi. AndroidX ga migratsiya gradle.properties faylida android.useAndroidX=true opsiyasi orqali amalga oshiriladi — Android Studio importlarni avtomatik ravishda konvert qiladi.

Arxitektura komponentlari: ViewModel, Lifecycle, LiveData

ViewModel — UI ma'lumotlarini saqlaydigan Jetpack arxitekturasining markaziy komponenti. Ekran aylanishida yo'q qilinadigan Activity dan farqli o'laroq, ViewModel xotirada qoladi. Foydalanuvchi formani to'ldiradi, telefonni aylantiradi — ma'lumotlar yo'qolmaydi. ViewModel LifecycleOwner (Activity yoki Fragment) hayotiy tsiklini butunlay tugatganda (finish) avtomatik tozalanadi.

kotlin
class ProfileViewModel : ViewModel() {

    private val _userName = MutableLiveData<String>()
    val userName: LiveData<String> = _userName

    fun loadProfile(userId: String) {
        viewModelScope.launch {
            val user = repository.getUser(userId)
            _userName.value = user.name
        }
    }
}

@OptIn(ExperimentalLifecycleApi::class)
class MyObserver : LifecycleObserver {
    @OnLifecycleEvent(Lifecycle.Event.ON_START)
    fun onStart() {
        println("Ekran ishga tushirildi")
    }
}

LiveData — hayotiy tsiklni hisobga oladigan kuzatiladigan ma'lumot konteyneri. Agar ekran ko'rinmasa (onStop), LiveData yangilanishlarni yubormaydi — bu xotira oqishlari va mavjud bo'lmagan Activity ni yangilashga urinishdagi crashlarning oldini oladi. Lifecycle — joriy holatni saqlaydigan sinf (CREATED, STARTED, RESUMED) va boshqa komponentlarga holat o'zgarishlariga obuna bo'lish imkonini beradi. Birgalikda ViewModel, LiveData va Lifecycle Android reaktiv arxitekturasining poydevorini tashkil qiladi.

ViewModelScope va korutinlar

viewModelScope — ViewModel hayotiy tsikliga bog'langan o'rnatilgan CoroutineScope. Ushbu scope da ishga tushirilgan barcha korutinlar ViewModel tozalanganda avtomatik bekor qilinadi. Bu har bir ViewModel da Disposable va CompositeDisposable ni qo'lda boshqarishni yo'q qiladi. viewModelScope bilan ishlash uchun androidx.lifecycle:lifecycle-viewmodel-ktx bog'liqligi talab qilinadi.

Room: Android-da ma'lumotlar bazasi bilan ishlash

Room — SQLite ustidan abstrakt qatlamni ta'minlovchi ORM Jetpack kutubxonasi. Xom SQL so'rovlarini yozish va Cursor ni qo'lda obyektlarga aylantirish o'rniga, dasturchi Entity (jadval), DAO (Data Access Object) va Database (kirish nuqtasi) ni e'lon qiladi. Room @Query annotatsiyasi orqali SQL so'rovlarini kompilyatsiya bosqichida tekshiradi — jadvallar yoki ustunlar mavjud bo'lmasa, qurilish tushunarli xato bilan to'xtaydi.

kotlin
@Entity
data class User(
    @PrimaryKey val id: String,
    val name: String,
    val email: String
)

@Dao
interface UserDao {
    @Query("SELECT * FROM User WHERE id = :userId")
    suspend fun getUser(userId: String): User?

    @Insert
    suspend fun insertUser(user: User)
}

@Database(entities = [User::class], version = 1)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

Entity User uch ustunli jadvalni tavsiflaydi. DAO korutinlar bilan ishlash uchun suspend-funksiyalarni e'lon qiladi — so'rov avtomatik ravishda fon ipida bajariladi. Room @Migration annotatsiyasi orqali migratsiyalarni qo'llab-quvvatlaydi: dasturchi versiyalar o'rtasidagi o'tish SQL-skriptini tavsiflaydi va Room uni ma'lumot yo'qotmasdan bajaradi. Migratsiya bo'lmaganda Room IllegalStateException tashlaydi — shunday qilib loyihalar sxema yangilanishida tasodifiy ma'lumot yo'qotishdan himoyalanadi.

TypeConverters va munosabatlar

Room faqat primitiv turlarni va ularning o'ramlarini saqlaydi. Ro'yxatlar, Date yoki maxsus obyektlarni saqlash uchun @TypeConverter ishlatiladi — turni String (JSON) yoki Long (timestamp) ga aylantiruvchi statik metod. Jadvallar o'rtasidagi munosabatlar @Relation annotatsiyasi bilan ichma-ich obyektlar va samarali join so'rovlari uchun @Transaction bilan yordamchi POJO sinflari orqali modellashtiriladi.

Navigation Component — ekranlar o'rtasidagi o'tishlarni boshqarish uchun Jetpack kutubxonasi. Qo'lda FragmentTransaction chaqirish o'rniga, dasturchi navigatsiya grafi yaratadi (tugun-destinatsiyalar bilan XML fayl) va tizim type-safe o'tish metodlari bilan Directions sinfini yaratadi. Navigation Component back stack, deep links va ekranlar o'rtasida argumentlarni uzatishning to'g'ri ishlashini kafolatlaydi.

kotlin
// nav_graph.xml
// <fragment android:id="@+id/profileFragment"
//     android:name=".ProfileFragment">
//     <argument android:name="userId"
//         android:defaultValue="-1"
//         app:argType="integer" />
// </fragment>

// Fragment kodida:
class ProfileFragment : Fragment() {
    private val args: ProfileFragmentArgs by navArgs()

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        loadProfile(args.userId)
    }
}

userId argumentlari navigatsiya grafigida tur (integer) va standart qiymat ko'rsatilgan holda uzatiladi. ProfileFragmentArgs sinfi Navigation Safe Args plagini tomonidan avtomatik yaratiladi — to'g'ri Kotlin turlari bilan barcha argumentlarni o'z ichiga oladi. Chuqur havolalar grafikda sozlanadi: app:deepLink="app://profile/{userId}". Navigation Component o'zi URLni tahlil qiladi va foydalanuvchi interfeys orqali o'tgandek back stack yaratadi.

Bottom Navigation va Conditional Navigation

Navigation Component NavController orqali BottomNavigationView bilan integratsiyalanadi: menyuning har bir bandi grafikdagi destinatsiyaga bog'lanadi. Tablar o'rtasidagi o'tish fragmentni qayta yaratmaydi — Navigation Component NavBackStackEntry orqali holatni saqlaydi. Shartli navigatsiya uchun (avtorizatsiyadan o'tmagan bo'lsa, kirishni ko'rsatish) navController.navigate(condition) onCreate da tekshirish bilan ishlatiladi.

AndroidX: Yangi avlod Support Library

AndroidX — Support Library ning qayta ishlangan arxitekturasi bo'lib, unda har bir kutubxona mustaqil versiyaga ega bo'lgan o'z artefaktini oldi. Yagona com.android.support:appcompat-v7:28.0.0 o'rniga AndroidX androidx.appcompat:appcompat:1.7.0, androidx.recyclerview:recyclerview:1.4.0 va hokazolarni taklif qiladi. Bu turli bog'liqliklar Support Library ning turli versiyalarini tortib, ziddiyat yaratishi muammosini bartaraf etdi.

AndroidX ga migratsiya Android Studio 3.2+ da Refactor → Migrate to AndroidX menyusi orqali avtomatik amalga oshiriladi. Studio Java/Kotlin fayllarida, manifestlarda va resurslarda barcha importlarni almashtiradi. Orqaga qarab moslik — AndroidX ning asosiy ustunligi: kutubxonalar Android 5.0 (API 21) va undan yuqorida ishlaydi, Google Play Console (2025) ma'lumotlariga ko'ra faol qurilmalarning 97% ini qamrab oladi.

Asosiy AndroidX artefaktlari

Eng ko'p ishlatiladigan artefaktlar: appcompat (qorong'u mavzu, eski API larda Material Design), recyclerview (ViewHolder bilan adaptiv ro'yxatlar), constraintlayout (tekis iyerarxiya bilan moslashuvchan konteyner), cardview (Material Design kartochkalari), preference (Material uslubidagi sozlamalar ekrani). Har bir artefakt mustaqil versiyalanadi, butun paketni yangilamasdan tuzatishlarni olishni tezlashtiradi.

Boshqa muhim Jetpack kutubxonalari

Architecture va AndroidX dan tashqari, Jetpack mobil ishlab chiqishning odatiy vazifalari uchun ko'plab ixtisoslashgan kutubxonalarni o'z ichiga oladi. WorkManager — kafolatlangan bajarish bilan fon vazifalari uchun (sinxronizatsiya, loglarni yuklash), davriy va kechiktirilgan vazifalarni, shuningdek tarmoq va batareya cheklovlarini qo'llab-quvvatlaydi. DataStore — korutinlarga asoslangan SharedPreferences o'rnini bosuvchi, tipli xususiyatlarni (Preferences DataStore) va Protocol Buffers (Proto DataStore) qo'llab-quvvatlaydi.

  • Hilt — Dagger ga asoslangan DI freymvorki, @HiltViewModel, @Inject, @Module annotatsiyalari orqali bog'liqliklarni kiritishni soddalashtiradi. ViewModel va Navigation bilan o'rnatilgan integratsiya.
  • Paging 3 — RemoteMediator (tarmoq + kesh), StateFlow va Compose qo'llab-quvvatlashi bilan tarmoq/MB dan sahifali ma'lumot yuklash kutubxonasi.
  • CameraX — kamera bilan ishlash uchun API, ishlab chiqaruvchilar farqlarini (Samsung, Xiaomi, Honor) yagona CameraController interfeysi orqali abstraksiya qiladi.
  • Security Crypto — Android Keystore da asosiy kalit bilan AES-256 asosida EncryptedSharedPreferences va EncryptedFile orqali ma'lumotlarni shifrlash.

Har bir kutubxona o'zining minimal SDK va artefaktiga ega. Google yiliga bir marta (Android chiqarilishi bilan bir vaqtda) asosiy versiyalarni va har chorakda xavfsizlik yamalarini chiqaradi. Tavsiya — APK hajmini oshirmaslik uchun faqat kerakli kutubxonalarni ulash. Jetpack butun holda (barcha artefaktlar) 20 MB dan ortiq og'irlik qiladi, ammo odatdagi ilova 5-7 kutubxonadan foydalanadi, APK ga 3-5 MB qo'shadi.

Ko'p beriladigan savollar

Support Library dan AndroidX ga migratsiya qilish kerakmi?

Ha, Google 2019 yilda Support Library ni qo'llab-quvvatlashni to'xtatdi. Barcha yangi Jetpack va Google Play Services kutubxonalari AndroidX talab qiladi. Migratsiya Android Studio orqali 30-60 daqiqada amalga oshiriladi.

Jetpack dan Java bilan foydalanish mumkinmi yoki faqat Kotlin bilan?

Jetpack Java bilan to'liq mos keladi. Biroq ko'plab xususiyatlar (viewModelScope, korutinlar, Compose) faqat Kotlin da mavjud. Google yangi loyihalar uchun Kotlin ni tavsiya qiladi.

ViewModel onSaveInstanceState dan qanday farq qiladi?

ViewModel obyektlarni xotirada saqlaydi va aylanishdan omon qoladi. onSaveInstanceState faqat seriyalash mumkin bo'lgan primitivlar (Bundle) uchun mos keladi. ViewModel jarayon o'ldirilganda saqlanmaydi — buning uchun SavedStateHandle kerak.

Korutinlar o'rniga WorkManager qachon ishlatiladi?

WorkManager — ilova yopilgandan keyin ham bajarilishi kerak bo'lgan vazifalar uchun: sinxronizatsiya, loglarni yuklash, analitikani jo'natish. Korutinlar — ekranga bog'liq vazifalar uchun.

SharedPreferences dan DataStore ga qanday migratsiya qilish kerak?

SharedPreferences importlarini DataStore<Preferences> bilan almashtiring. O'qish dataStore.data.first() (suspend) orqali, yozish dataStore.edit { ... } orqali. DataStore asinxron va ANR dan himoyalangan.

Xulosa

  • Android Jetpack — API 21 gacha orqaga qarab moslik bilan AndroidX ostida birlashtirilgan 50+ kutubxona to'plami.
  • ViewModel ekran aylanishlaridan omon qoladi va UI ma'lumotlarini saqlaydi, Lifecycle esa komponentlarga Activity/Fragment holati o'zgarishi haqida xabar beradi.
  • Room — SQLite ustida type-safe ORM, so'rovlarni kompilyatsiya tekshiruvi, migratsiyalar va korutinlarni qo'llab-quvvatlash bilan.
  • Navigation Component type-safe argumentlar va avtomatik deep link bilan graflar orqali o'tishlarni boshqaradi.
  • WorkManager ilova yopilgandan keyin ham fon vazifalarining bajarilishini kafolatlaydi, DataStore SharedPreferences o'rnini bosadi.
  • Jetpack to'rt turkumga bo'linadi: Architecture, UI, Behavior, Foundation — har biri dasturning o'z qatlamini qamrab oladi.
  • Jetpackdagi ilovalar hayotiy tsikl bilan bog'liq 30% kamroq crashga ega va tayyor arxitektura yechimlari tufayli tezroq ishlab chiqiladi.

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.

Loyihani muhokama qilish

Shuningdek o'qing