AndroidX Google-dan Jetpack kitabxanalar dəstidir və köhnəlmiş Support Library-ni əvəz etmişdir. Google Developer Documentation, 2024-ə görə, AndroidX Android-in bütün versiyaları üçün geriyə uyğun komponentlər təqdim edir və müasir Android inkişafının standartıdır. AndroidX kitabxanaları interfeys, naviqasiya, məlumatlarla iş, kamera və fon tapşırıqları üçün alətlər daxildir.
Əsas məqamlar
AndroidX Android Jetpack-in tərkib hissəsi olan açıq mənbəli kitabxanadır. Google AndroidX-i 2018-ci ildə 2011-ci ildən köhnə Android versiyaları üçün geriyə uyğun komponentlər təmin edən Support Library-nin əvəzi olaraq buraxdı.
AndroidX meydana gəlməzdən əvvəl hər bir Support Library komponentinin targetSdkVersion-a bağlı öz versiyası var idi. Tərtibatçılar eyni kitabxananın bir neçə versiyasını eyni anda qoşmalı olurdular ki, bu da asılılıq münaqişələrinə və APK faylının ölçüsünün artmasına səbəb olurdu.
AndroidX bu problemi semantik versiyalama (SemVer) vasitəsilə həll etdi. İndi hər bir kitabxana MAJOR.MINOR.PATCH formatında versiyası olan ayrıca Gradle artefaktıdır. Tərtibatçı Room-u 2.4.0-dan 2.6.0-a yeniləyə bilər, Activity, Fragment və ya digər modullara toxunmadan.
İlk stabil buraxılış AndroidX 1.0.0 2018-ci ilin dekabrında Android 9 Pie ilə birlikdə baş tutdu. Google Support Library-nin dəstək rejiminə keçdiyini və bütün yeni komponentlərin — Navigation, WorkManager, Compose — yalnız AndroidX tərkibində buraxılacağını elan etdi. Support Library-nin son versiyası — 28.0.0 — 2019-cu ildə çıxdı.
Google I/O 2019-a görə, keçidin əsas səbəbi yeniləmələrin buraxılışını sürətləndirmək ehtiyacı idi. Köhnə modeldə bir kitabxana paketin vahid versiyasına görə digərini gözləyirdi. AndroidX bu bloklanmanı aradan qaldırdı və Jetpack hər 2–3 aydan bir əsas və kiçik buraxılışlar almağa başladı.
Əsas fərq ad məkanıdır. Support Library android.support.* paketindən istifadə edirdi, AndroidX isə androidx.*-ə keçdi. Bu dəyişiklik kitabxanaları funksional modullara bölməyə imkan verdi. Məsələn, Support Library-də Fragment android.support.v4.app.Fragment, AndroidX-də isə androidx.fragment.app.Fragment adlanırdı.
İkinci vacib fərq arxitekturadır. AndroidX Jetpack ilə birlikdə gəlir — tətbiq arxitekturası üzrə tövsiyələr dəsti. Jetpack ViewModel, LiveData, Room, Navigation və WorkManager-i əhatə edir ki, onlar da ayrı-ayrı alətlər deyil, vahid ekosistem kimi hazırlanmışdır.
Geri uyğunluq da yaxşılaşmışdır. Support Library Android 2.3+-ü dəstəkləyirdisə, AndroidX Android 4.0 (API 14) və daha yüksək olan cihazlarda işləməyə təminat verir — bu, Google Play Console 2024 məlumatlarına görə aktiv cihazların 99%-dən çoxunu əhatə edir.
AndroidX qruplara bölünmüş 100-dən çox kitabxana daxildir. Hər bir qrup müəyyən sahəyə cavabdehdir: interfeys, məlumatlar, naviqasiya, fon tapşırıqları, multimedia və test. Aşağıda əsas modulların icmalı verilmişdir.
androidx.core:core — sistem API-lərinin geriyə uyğun versiyalarını ehtiva edən əsas kitabxana: NotificationCompat, ActivityCompat, ContextCompat. core-ktx modulu fayllar, SharedPreferences və görünüş elementləri ilə iş üçün Kotlin uzantıları təqdim edir.
androidx.activity:activity kitabxanası köhnəlmiş startActivityForResult-u əvəz edən Activity Result API (registerForActivityResult) təqdim etdi. fragment:fragment modulu fraqmentlərin həyat dövrünü idarə edir və əməliyyatlar və geri yığın üçün FragmentManager-i dəstəkləyir.
androidx.lifecycle — Jetpack arxitekturasının əsası. LifecycleOwner və LifecycleObserver komponentlərə Activity və ya Fragment-in həyat dövrü dəyişikliklərinə reaksiya verməyə imkan verir. ViewModel ekran fırlanması zamanı məlumatları qoruyur, LiveData isə UI-ə məlumat dəyişiklikləri barədə xəbərdarlıq edir.
class MainViewModel : ViewModel() {
private val _users = MutableLiveData<List<User>>()
val users: LiveData<List<User>> = _users
fun loadUsers() {
viewModelScope.launch {
val result = repository.getUsers()
_users.value = result
}
}
}
androidx.recyclerview:recyclerview — siyahı və şəbəkələrin göstərilməsi üçün güclü komponent. RecyclerView LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration və ItemAnimator vasitəsilə animasiyaları dəstəkləyir. ListAdapter AsyncListDiffer ilə siyahının avtomatik diff hesablanması ilə yenilənməsini sadələşdirir.
androidx.navigation:navigation — ekranlar arasında naviqasiya üçün kitabxana. Navigation Component NavHostFragment və NavController ilə işləyir, parametrləşdirilmiş arqumentlərin ötürülməsi üçün Safe Args və xarici keçidlər üçün Deep Link-ləri dəstəkləyir. NavGraph bütün marşrutları XML faylında təsvir edir.
androidx.compose.ui — Kotlin üzərində qurulmuş deklarativ UI freymvorku Jetpack Compose. View sistemindən fərqli olaraq, Compose yalnız dəyişdirilmiş elementləri recomposition vasitəsilə yenidən çəkir. Material Design 3 komponentləri (Button, TextField, Scaffold) material3 modulunda mövcuddur.
| Kitabxana | Artefakt | Məqsəd |
|---|---|---|
| Fragment | androidx.fragment | Fraqmentlərin və əməliyyatların idarə edilməsi |
| RecyclerView | androidx.recyclerview | Optimallaşdırma ilə siyahı və şəbəkələr |
| Navigation | androidx.navigation | Ekranlar arasında naviqasiya |
| Compose UI | androidx.compose.ui | Kotlin-də deklarativ UI |
androidx.room:room — yerli məlumat saxlama üçün ORM. Room annotasiya edilmiş SQLite sorğularından DAO sinifləri yaradır, kompilyasiya mərhələsində SQL sintaksisini yoxlayır və RxJava və Kotlin Flow-u dəstəkləyir. 2.6 versiyası daha sürətli kod generasiyası üçün KSP dəstəyini ehtiva edir.
androidx.work:workmanager — zəmanətli icra ilə fon tapşırıqları üçün kitabxana. WorkManager dövri tapşırıqları, iş zəncirlərini (beginWith, then) və başlatma meyarlarını (Constraints: şəbəkə, doldurma, yaddaş) dəstəkləyir. Tətbiq bağlı olsa belə, WorkManager cihaz yenidən başladıldıqdan sonra tapşırığı çatdırır.
androidx.datastore:datastore — SharedPreferences-in müasir əvəzedicisi. DataStore Kotlin Coroutines və Flow-dan istifadə edir, sinxron və asinxron işləyir, UI axınının bloklanmasını aradan qaldırır. Preferences DataStore sadə açar-dəyər cütlərini, Proto DataStore isə Protocol Buffers vasitəsilə tipləşdirilmiş obyektləri saxlayır.
Avtomatik miqrasiya Google tərəfindən Support Library-dən AndroidX-ə keçid üçün tövsiyə olunan üsuldur. Android Studio 3.2 versiyasından etibarən ad məkanlarını dəyişdirən və build.gradle-də asılılıqları yeniləyən Refactor Migrate to AndroidX alətini daxildir.
Miqrasiyadan əvvəl compileSdk versiyasını 28 və ya daha yüksəklərə yeniləmək lazımdır. Həmçinin bütün üçüncü tərəf kitabxanalarının AndroidX-i dəstəklədiyinə əmin olun. Əgər hansısa asılılıq hələ miqrasiya edilməyibsə, gradle.properties-də android.enableJetifier=true bayrağından istifadə edə bilərsiniz — o, üçüncü tərəf kitabxanalarının baytkodunu avtomatik yenidən yazır.
Android Studio-da menyudan Refactor Migrate to AndroidX seçin. IDE bütün layihəni skan edəcək, android.support.* paketindən bütün importları tapacaq və onları androidx.* ilə əvəz edəcək. Həmçinin app/build.gradle-də asılılıqlar yenilənəcək — Support Library artefaktları müvafiq AndroidX versiyaları ilə əvəz olunacaq.
Miqrasiyadan sonra Gradle Sync bəzi asılılıqlar tapılmadıqda xəta göstərə bilər. İstifadə olunan kitabxanaların siyahısını Google Maven sənədlərində yoxlayın — bütün AndroidX artefaktları google()-da dərc olunub. Kitabxana mövcud deyilsə, repositories-ə mavenCentral() əlavə edin.
android {
compileSdk 34
}
dependencies {
// Support Library (köhnəlmiş)
// implementation 'com.android.support:appcompat-v7:28.0.0'
// AndroidX
implementation 'androidx.core:core-ktx:1.13.1'
implementation 'androidx.appcompat:appcompat:1.7.0'
implementation 'androidx.activity:activity-ktx:1.9.3'
implementation 'androidx.fragment:fragment-ktx:1.8.5'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
implementation 'androidx.room:room-runtime:2.6.1'
ksp 'androidx.room:room-compiler:2.6.1'
}
Layihə çox böyükdürsə və ya Support Library-dən xüsusi View ehtiva edirsə, avtomatik dəyişdirmə tam olmaya bilər. Kodda bütün sətirləri əl ilə dəyişdirin: importları, XML-də atributları (app/src/main/res) və manifestdə istinadları dəyişin. Support Library atributları üçün android: prefiksi app: ilə əvəz olunur (məsələn, android:cardCornerRadius əvəzinə app:cardCornerRadius).
Əl ilə miqrasiyadan sonra R istinadlarını yoxlayın. Support Library resursları android.support.v7.appcompat.R vasitəsilə, AndroidX isə androidx.appcompat.R vasitəsilə ixrac edirdi. Layihədə axtarış aparın və köhnə R yollarının bütün qeydlərini dəyişdirin. Layihənin qurulması xəta və deprecation xəbərdarlıqları olmadan keçməlidir.
Birinci üstünlük AndroidX-in modulluğudur. Siz yalnız həqiqətən istifadə etdiyiniz kitabxanaları qoşursunuz. Tətbiqə yalnız RecyclerView və Navigation lazımdırsa, bütün View komponentləri ilə bütün Support Library-ni çəkməyə ehtiyac yoxdur. Bu, APK ölçüsünü azaldır və layihənin qurulmasını sürətləndirir.
İkinci üstünlük müntəzəm yeniləmələrdir. Jetpack hər 1–3 aydan bir stabil buraxılışlar edir. 2024-cü ildə buraxılmış Room 2.6.0 KSP və Kotlin 2.0 dəstəyini əlavə etdi. Navigation 2.8.0 Kotlinx Serialization-a əsaslanan təhlükəsiz tipli marşrutlar təqdim etdi. Tərtibatçılar növbəti Android versiyasını gözləmədən yeni imkanlar əldə edirlər.
Üçüncü üstünlük Kotlin ilə inteqrasiyadır. Bütün AndroidX kitabxanalarında uzantı funksiyaları olan -ktx modulları var. viewLifecycleOwner.lifecycleScope fraqment kontekstində korutinləri işə salır, collectLatest Flow-u emal edir, SharedFlow və StateFlow isə Lifecycle-aware komponentləri ilə tam uyğundur. Bu, kodu daha yığcam və təhlükəsiz edir.
Geri uyğunluq AndroidX-in yeni platforma API-ləri qarşısında əsas üstünlüyüdür. Siz Android 4.0+-da tünd mövzu üçün AppCompatDelegate.setDefaultNightMode, Android 5.0+-da baloncuklar üçün NotificationCompat.setBubble və Android 4.0+-da fused location üçün LocationRequestCompat istifadə edə bilərsiniz. Cihaz əhatəsi minimal SDK versiyasını artırmadan 99%-ə çatır.
Dördüncü üstünlük testdir. AndroidX instrumental və modul testləri yazmaq üçün androidx.test kitabxanasını daxildir. FragmentScenario və ActivityScenario UI komponentlərini izolyasiyada test etməyə, TestNavHostController isə real cihazı işə salmadan naviqasiyanı yoxlamağa imkan verir. MockK və Robolectric ekosistemi tamamlayır.
Tez-tez verilən suallar
AndroidX android.support.* əvəzinə androidx.* ad məkanından istifadə edir, müstəqil versiyalamaya (SemVer) malikdir, Jetpack kitabxanalarını ehtiva edir və -ktx Kotlin uzantılarını dəstəkləyir. Support Library 2019-cu ildə 28.0.0 versiyasında dondurulmuşdur.
Android Studio-da layihə yaratma mərhələsində Use AndroidX bayrağını aktivləşdirin. Mövcud layihə üçün gradle.properties-ə android.useAndroidX=true və android.enableJetifier=true əlavə edin. Sonra build.gradle-də asılılıqları androidx qrupundan artefaktlarla əvəz edin.
Google Play bütün tətbiqlərin və yeniləmələrin AndroidX istifadə etməsini tələb edir. Support Library dəstəyi dayandırılıb və təhlükəsizlik düzəlişləri almır. Tətbiqiniz hələ miqrasiya edilməyibsə, bu, Google Play Console-da yeniləmənin rədd edilməsinə səbəb ola bilər.
Jetpack Android tətbiqlərinin inkişafı üçün Google-dan kitabxanalar, alətlər və tövsiyələr dəstidir. AndroidX Jetpack-in əsasını təşkil edir. Jetpack-ə Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) və Behavior (WorkManager, Navigation, CameraX) daxildir.
Bəli, Jetpack Compose özü AndroidX-in bir hissəsidir (androidx.compose.ui). ViewModel, Navigation, Room və WorkManager kitabxanaları Compose ilə tam uyğundur. collectAsState() və collectAsStateWithLifecycle() funksiyaları Flow-un Compose funksiyaları ilə inteqrasiyasını təmin edir.
Nəticə
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.
Həm də oxuyun