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 — 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.
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.
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.
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.
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 — 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 — 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.
@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.
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.
// 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.
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 — 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.
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.
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.
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
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 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 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.
WorkManager — ilova yopilgandan keyin ham bajarilishi kerak bo'lgan vazifalar uchun: sinxronizatsiya, loglarni yuklash, analitikani jo'natish. Korutinlar — ekranga bog'liq vazifalar uchun.
SharedPreferences importlarini DataStore<Preferences> bilan almashtiring. O'qish dataStore.data.first() (suspend) orqali, yozish dataStore.edit { ... } orqali. DataStore asinxron va ANR dan himoyalangan.
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.