Jetpack — bu nədir, memarlıq komponentləri

Müəllif: IT Sectr Dərc olunub: 2026-05-01 Oxuma vaxtı: 9 dəq

Jetpack — tətbiq inkişafını sadələşdirən və sabit proqramların yaradılmasını sürətləndirən Google-dan Android kitabxanalar dəstidir. ViewModel, Room və Navigation kimi komponentlər tipik tapşırıqları həll edir: həyat dövrünün idarə edilməsi, məlumatların saxlanması və naviqasiya. Android Developers (2026) məlumatlarına görə, Jetpack 50-dən çox kitabxananı əhatə edir, onların hər biri AndroidX vasitəsilə Android 5.0 (API 21) ilə geriyə uyğunlaşır — Support Library-ni əvəz edən uyğunluq kitabxanası.

Əsas məqamlar

  • Android Jetpack — Android tətbiqlərinin inkişafını sürətləndirən və AndroidX vasitəsilə geriyə uyğunluğu təmin edən 50+ kitabxana dəsti.
  • ViewModel ekran dönmələrindən sağ çıxır və Activity yenidən yaradıldıqda məlumatları qoruyur, istifadəçi girişinin itirilməsinin qarşısını alır.
  • Room — SQLite üzərində ORM qatı, SQL sorğularının kompilasiya mərhələsində yoxlanılması və korutin dəstəyi ilə.
  • Navigation Component tip-təhlükəsiz arqumentlərlə naviqasiya qrafikləri vasitəsilə ekranlar arasında keçidləri idarə edir.
  • Lifecycle kontrollerlərdə boilerplate-kod olmadan Activity/Fragment-in həyat dövrü hadisələrinə reaksiya verməyə imkan verir.

Android Jetpack nədir?

Android Jetpack — 2018-ci ildə Google I/O-da təqdim edilmiş Google-dan kitabxanalar, alətlər və memarlıq tövsiyələri kolleksiyasıdır. Jetpack Support Library və Android Architecture Components-i əvəz edərək onları vahid ekosistemdə birləşdirdi. Jetpack-dən əvvəl hər Android kitabxanası müstəqil yenilənirdi, bu da versiya konfliktlərinə səbəb olurdu. Jetpack versiyaları vahid AndroidX identifikatoru altında sinxronlaşdırdı və kiçik yamalarla sabit əsas versiyalar modelini tətbiq etdi.

Jetpack kitabxanaları dörd kateqoriyaya bölünür: Architecture (ViewModel, Room, Navigation, WorkManager), UI (Fragment, Compose, Animation, Palette), Behavior (DownloadManager, Media, Permissions, Sharing), Foundation (Android KTX, Multidex, AppCompat). Hər kateqoriya tətbiqin müəyyən qatının tapşırıqlarını həll edir — məlumat idarəsindən istifadəçi interfeysinə qədər.

Jetpack fəlsəfəsi

Google üç Jetpack prinsipini təbliğ edir: accelerate development (az boilerplate, çox biznes məntiqi), eliminate boilerplate (ViewModel əl ilə vəziyyət saxlamağı aradan qaldırır, Room — SQLiteOpenHelper yazmağı) və build with confidence (hər kitabxana buraxılışdan əvvəl 15+ min testdən keçir). Android Developers (2026) məlumatlarına görə, Jetpack-də tətbiqlər həyat dövrü ilə bağlı 30% az crash-a malikdir.

AndroidX əsas kimi

Bütün Jetpack kitabxanaları AndroidX identifikatoru altında yayılır (androidx.* növündə artefaktlar). AndroidX Support Library-ni (com.android.support.* artefaktları) əvəz etdi, monolit kitabxananı müstəqil versiyalaşdırma ilə modul artefaktlara böldü. AndroidX-ə miqrasiya gradle.properties-də android.useAndroidX=true opsiyası vasitəsilə həyata keçirilir — Android Studio avtomatik olaraq importları konvert edir.

Memarlıq komponentləri: ViewModel, Lifecycle, LiveData

ViewModel — Jetpack memarlığının mərkəzi komponenti, UI məlumatlarını saxlayır. Ekran dönməsində məhv edilən Activity-dən fərqli olaraq, ViewModel yaddaşda qalır. İstifadəçi formanı doldurur, telefonu döndərir — məlumatlar itmir. ViewModel LifecycleOwner (Activity və ya Fragment) həyat dövrünü birdəfəlik başa vurduqda (finish) avtomatik təmizlənir.

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 işə salındı")
    }
}

LiveData — həyat dövrünü nəzərə alan müşahidə olunan məlumat konteyneri. Ekran görünməzsə (onStop), LiveData yeniləmələr göndərmir — bu, yaddaş sızmalarının və mövcud olmayan Activity-ni yeniləmə cəhdində crash-ların qarşısını alır. Lifecycle — cari vəziyyəti saxlayan sinif (CREATED, STARTED, RESUMED) və digər komponentlərə vəziyyət dəyişikliklərinə abunə olmağa imkan verir. Birlikdə ViewModel, LiveData və Lifecycle Android reaktiv memarlığının təməlini təşkil edir.

ViewModelScope və korutinlər

viewModelScope — ViewModel həyat dövrünə bağlı daxili CoroutineScope. Bu scop-da işə salınan bütün korutinlər ViewModel təmizlənərkən avtomatik ləğv edilir. Bu, hər ViewModel-də Disposable və CompositeDisposable-in əl ilə idarəsini aradan qaldırır. viewModelScope ilə işləmək üçün androidx.lifecycle:lifecycle-viewmodel-ktx asılılığı tələb olunur.

Room: Android-də verilənlər bazası ilə iş

Room — SQLite üzərində abstrakt qat təmin edən ORM Jetpack kitabxanasıdır. Xam SQL sorğuları yazmaq və Cursor-u əl ilə obyektlərə çevirmək əvəzinə, tərtibatçı Entity (cədvəl), DAO (Data Access Object) və Database (giriş nöqtəsi) elan edir. Room @Query annotasiyası vasitəsilə SQL sorğularını kompilasiya mərhələsində yoxlayır — cədvəl və ya sütunlar mövcud deyilsə, yığım başa düşülən xəta ilə dayanır.

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 üç sütunlu cədvəli təsvir edir. DAO korutinlərlə iş üçün suspend-funksiyalar elan edir — sorğu avtomatik olaraq fon ipində icra olunur. Room @Migration annotasiyası vasitəsilə miqrasiyaları dəstəkləyir: tərtibatçı versiyalar arasında keçid SQL-skriptini təsvir edir və Room onu məlumat itkisi olmadan icra edir. Miqrasiya olmadıqda Room IllegalStateException atır — beləliklə layihələr sxem yeniləməsində təsadüfi məlumat itkisindən qorunur.

TypeConverters və əlaqələr

Room yalnız primitiv tipləri və onların qablaşdırmalarını saxlayır. Siyahıları, Date və ya xüsusi obyektləri saxlamaq üçün @TypeConverter istifadə olunur — tipi String (JSON) və ya Long (timestamp) çevirən statik metod. Cədvəllər arasında əlaqələr @Relation annotasiyası ilə iç-içə obyektlər və səmərəli join sorğuları üçün @Transaction ilə köməkçi POJO sinifləri vasitəsilə modelləşdirilir.

Navigation Component — ekranlar arasında keçidləri idarə etmək üçün Jetpack kitabxanası. Əl ilə FragmentTransaction çağırmaq əvəzinə, tərtibatçı naviqasiya qrafiki yaradır (qovşaq-destinasiyaları olan XML faylı) və sistem tip-təhlükəsiz keçid metodları ilə Directions sinfi yaradır. Navigation Component back stack, deep links və ekranlar arasında arqument ötürülməsinin düzgün işləməsinə zəmanət verir.

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

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

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

userId arqumentləri naviqasiya qrafikində tip (integer) və standart dəyər göstərilməklə ötürülür. ProfileFragmentArgs sinfi Navigation Safe Args plagini tərəfindən avtomatik yaradılır — düzgün Kotlin tipləri ilə bütün arqumentləri ehtiva edir. Dərin linklər qrafikdə konfiqurasiya olunur: app:deepLink="app://profile/{userId}". Navigation Component özü URL-i təhlil edir və istifadəçi interfeysdən keçmiş kimi back stack yaradır.

Bottom Navigation və Conditional Navigation

Navigation Component NavController vasitəsilə BottomNavigationView ilə inteqrasiya olunur: menyunun hər bəndi qrafikdə destinasiyaya bağlanır. Tablar arasında keçid fragment-i yenidən yaratmır — Navigation Component NavBackStackEntry vasitəsilə vəziyyəti qoruyur. Şərti naviqasiya üçün (icazəsizdirsə girişi göstər) navController.navigate(condition) onCreate-də yoxlama ilə istifadə olunur.

AndroidX: Yeni nəsil Support Library

AndroidX — Support Library-nin yenidən işlənmiş memarlığıdır, burada hər kitabxana müstəqil versiya ilə öz artefaktını aldı. Vahid com.android.support:appcompat-v7:28.0.0 əvəzinə AndroidX androidx.appcompat:appcompat:1.7.0, androidx.recyclerview:recyclerview:1.4.0 və s. təklif edir. Bu, müxtəlif asılılıqların Support Library-nin müxtəlif versiyalarını çəkərək konflikt yaratması problemini aradan qaldırdı.

AndroidX-ə miqrasiya Android Studio 3.2+-da Refactor → Migrate to AndroidX menyusu vasitəsilə avtomatik yerinə yetirilir. Studio Java/Kotlin fayllarında, manifestlərdə və resurslarda bütün importları əvəz edir. Geriyə uyğunluq — AndroidX-in əsas üstünlüyü: kitabxanalar Android 5.0 (API 21) və daha yuxarıda işləyir, Google Play Console (2025) məlumatlarına görə aktiv cihazların 97%-ni əhatə edir.

Əsas AndroidX artefaktları

Ən çox istifadə olunan artefaktlar: appcompat (qaranlıq tema, köhnə API-lərdə Material Design), recyclerview (ViewHolder ilə adaptiv siyahılar), constraintlayout (düz iyerarxiya ilə çevik konteyner), cardview (Material Design kartları), preference (Material-stil parametrlər ekranı). Hər artefakt müstəqil versiyalaşdırılır, bütün paketi yeniləmədən düzəlişləri almağı sürətləndirir.

Digər vacib Jetpack kitabxanaları

Architecture və AndroidX-dən başqa, Jetpack mobil inkişafın tipik tapşırıqları üçün çoxlu ixtisaslaşmış kitabxanaları ehtiva edir. WorkManager — zəmanətli icra ilə fon tapşırıqları üçün (sinxronizasiya, logların yüklənməsi), dövri və təxirə salınmış tapşırıqları, həmçinin şəbəkə və batareya məhdudiyyətlərini dəstəkləyir. DataStore — korutinlərə əsaslanan SharedPreferences əvəzləyicisi, tipli xassələri (Preferences DataStore) və Protocol Buffers-ı (Proto DataStore) dəstəkləyir.

  • Hilt — Dagger-ə əsaslanan DI freymvorku, @HiltViewModel, @Inject, @Module annotasiyaları vasitəsilə asılılıqların yeridilməsini sadələşdirir. ViewModel və Navigation ilə daxili inteqrasiya.
  • Paging 3 — şəbəkə/BD-dən RemoteMediator (şəbəkə + keş), StateFlow və Compose dəstəyi ilə səhifəli məlumat yükləmə kitabxanası.
  • CameraX — kamera ilə iş üçün API, istehsalçı fərqlərini (Samsung, Xiaomi, Honor) vahid CameraController interfeysi vasitəsilə abstraksiya edir.
  • Security Crypto — Android Keystore-da əsas açar ilə AES-256 əsasında EncryptedSharedPreferences və EncryptedFile vasitəsilə məlumatların şifrələnməsi.

Hər kitabxananın öz minimal SDK-sı və artefaktı var. Google ildə bir dəfə (Android buraxılışı ilə eyni vaxtda) əsas versiyaları və rüblük təhlükəsizlik yamalarını buraxır. Tövsiyə — APK ölçüsünü artırmamaq üçün yalnız lazımi kitabxanaları qoşmaq. Jetpack bütövlükdə (bütün artefaktlar) 20 MB-dan çox çəkir, lakin tipik tətbiq 5–7 kitabxana istifadə edir, APK-ya 3–5 MB əlavə edir.

Tez-tez verilən suallar

Support Library-dən AndroidX-ə miqrasiya etmək lazımdırmı?

Bəli, Google 2019-cu ildə Support Library-ni dəstəkləməyi dayandırdı. Bütün yeni Jetpack və Google Play Services kitabxanaları AndroidX tələb edir. Miqrasiya Android Studio vasitəsilə 30–60 dəqiqə ərzində yerinə yetirilir.

Jetpack-dən Java ilə istifadə etmək olar, yoxsa yalnız Kotlin ilə?

Jetpack Java ilə tam uyğundur. Lakin bir çox xüsusiyyətlər (viewModelScope, korutinlər, Compose) yalnız Kotlin-də mövcuddur. Google yeni layihələr üçün Kotlin tövsiyə edir.

ViewModel onSaveInstanceState-dan nə ilə fərqlənir?

ViewModel obyektləri yaddaşda saxlayır və dönmədən sağ çıxır. onSaveInstanceState yalnız seriyalaşdırıla bilən primitivlər (Bundle) üçün uyğundur. ViewModel proses öldürüldükdə saxlanmır — bunun üçün SavedStateHandle lazımdır.

Korutinlər əvəzinə WorkManager nə vaxt istifadə edilməlidir?

WorkManager — tətbiq bağlandıqdan sonra da yerinə yetirilməli olan tapşırıqlar üçün: sinxronizasiya, logların yüklənməsi, analitikanın göndərilməsi. Korutinlər — ekrana bağlı tapşırıqlar üçün.

SharedPreferences-dən DataStore-a necə miqrasiya etmək olar?

SharedPreferences importlarını DataStore<Preferences> ilə əvəz edin. Oxuma dataStore.data.first() (suspend) vasitəsilə, yazma dataStore.edit { ... } vasitəsilə. DataStore asinxrondur və ANR-dən qorunur.

Xülasə

  • Android Jetpack — API 21-ə qədər geriyə uyğunluqla AndroidX altında birləşdirilmiş 50+ kitabxana dəsti.
  • ViewModel ekran dönmələrindən sağ çıxır və UI məlumatlarını saxlayır, Lifecycle isə komponentlərə Activity/Fragment vəziyyətinin dəyişməsi barədə xəbərdarlıq edir.
  • Room — SQLite üzərində type-safe ORM, sorğuların kompilasiya yoxlanışı, miqrasiyalar və korutin dəstəyi ilə.
  • Navigation Component tip-təhlükəsiz arqumentlər və avtomatik deep link ilə qrafiklər vasitəsilə keçidləri idarə edir.
  • WorkManager tətbiq bağlandıqdan sonra da fon tapşırıqlarının icrasına zəmanət verir, DataStore SharedPreferences-i əvəz edir.
  • Jetpack dörd kateqoriyaya bölünür: Architecture, UI, Behavior, Foundation — hər biri tətbiqin öz qatını əhatə edir.
  • Jetpack-də tətbiqlər həyat dövrü ilə bağlı 30% az crash-a malikdir və hazır memarlıq həlləri sayəsində daha sürətli inkişaf etdirilir.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun