AndroidX este un set de biblioteci Jetpack de la Google care a înlocuit Support Library învechită. Conform Google Developer Documentation, 2024, AndroidX oferă componente compatibile invers pentru toate versiunile Android și este standardul dezvoltării moderne Android. Bibliotecile AndroidX includ instrumente pentru UI, navigare, lucru cu date, cameră și sarcini în fundal.
Principalele puncte
AndroidX este o bibliotecă open source care face parte din Android Jetpack. Google a lansat AndroidX în 2018 ca înlocuitor pentru Support Library, care din 2011 furniza componente compatibile invers pentru versiunile vechi de Android.
Înainte de apariția AndroidX, fiecare component Support Library avea propria versiune legată de targetSdkVersion. Dezvoltatorii trebuiau să conecteze simultan mai multe versiuni ale aceleiași biblioteci, ceea ce ducea la conflicte de dependențe și creșterea dimensiunii fișierului APK.
AndroidX a rezolvat această problemă prin versionarea semantică (SemVer). Acum fiecare bibliotecă este un artefact Gradle separat cu o versiune în formatul MAJOR.MINOR.PATCH. Dezvoltatorul poate actualiza Room de la 2.4.0 la 2.6.0 fără a atinge Activity, Fragment sau alte module.
Prima lansare stabilă AndroidX 1.0.0 a avut loc în decembrie 2018 împreună cu Android 9 Pie. Google a anunțat că Support Library trece în modul de suport și că toate componentele noi — Navigation, WorkManager, Compose — vor fi lansate doar în cadrul AndroidX. Ultima versiune a Support Library — 28.0.0 — a fost lansată în 2019.
Conform Google I/O 2019, motivul principal al tranziției a fost necesitatea de a accelera lansarea actualizărilor. În modelul vechi, o bibliotecă o aștepta pe alta din cauza versiunii unice a pachetului. AndroidX a eliminat această blocare, iar Jetpack a început să primească versiuni majore și minore la fiecare 2–3 luni.
Diferența principală este spațiul de nume. Support Library folosea pachetul android.support.*, iar AndroidX a trecut la androidx.*. Această modificare a permis împărțirea bibliotecilor pe module funcționale. De exemplu, Fragment din Support Library se numea android.support.v4.app.Fragment, iar în AndroidX — androidx.fragment.app.Fragment.
A doua diferență importantă este arhitectura. AndroidX este livrat împreună cu Jetpack — un set de recomandări pentru arhitectura aplicațiilor. Jetpack include ViewModel, LiveData, Room, Navigation și WorkManager, care au fost concepute ca un ecosistem unitar, nu ca utilități disparate.
Compatibilitatea inversă s-a îmbunătățit și ea. Dacă Support Library suporta Android 2.3+, AndroidX garantează funcționarea pe dispozitive cu Android 4.0 (API 14) și mai sus — aceasta acoperă peste 99% dintre dispozitivele active conform Google Play Console 2024.
AndroidX include peste 100 de biblioteci împărțite pe grupuri. Fiecare grup răspunde de un domeniu specific: UI, date, navigare, sarcini în fundal, multimedia și testare. Mai jos este prezentată o prezentare generală a modulelor cheie.
androidx.core:core — biblioteca de bază care conține versiuni compatibile invers ale API-urilor de sistem: NotificationCompat, ActivityCompat, ContextCompat. Modulul core-ktx oferă extensii Kotlin pentru lucrul cu fișiere, SharedPreferences și elemente de vizualizare.
Biblioteca androidx.activity:activity a introdus Activity Result API (registerForActivityResult), care a înlocuit startActivityForResult învechit. Modulul fragment:fragment gestionează ciclul de viață al fragmentelor și suportă FragmentManager pentru tranzacții și stiva de revenire.
androidx.lifecycle — fundamentul arhitecturii Jetpack. LifecycleOwner și LifecycleObserver permit componentelor să reacționeze la modificările ciclului de viață al Activity sau Fragment. ViewModel păstrează datele la rotirea ecranului, iar LiveData notifică UI despre modificările datelor.
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 — o componentă puternică pentru afișarea listelor și grilelor. RecyclerView suportă LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration și animații prin ItemAnimator. Biblioteca ListAdapter cu AsyncListDiffer simplifică actualizarea listei cu calculul automat al diferențelor.
androidx.navigation:navigation — biblioteca pentru navigarea între ecrane. Navigation Component lucrează cu NavHostFragment și NavController, suportă Safe Args pentru transmiterea parametrilor tipizați și Deep Links pentru linkuri externe. NavGraph descrie toate rutele într-un fișier XML.
androidx.compose.ui — framework-ul declarativ UI Jetpack Compose, construit pe Kotlin. Spre deosebire de sistemul View, Compose redesenează doar elementele modificate prin recomposition. Componentele Material Design 3 (Button, TextField, Scaffold) sunt disponibile în modulul material3.
| Bibliotecă | Artefact | Destinație |
|---|---|---|
| Fragment | androidx.fragment | Gestionarea fragmentelor și tranzacțiilor |
| RecyclerView | androidx.recyclerview | Liste și grile cu optimizare |
| Navigation | androidx.navigation | Navigare între ecrane |
| Compose UI | androidx.compose.ui | UI declarativ pe Kotlin |
androidx.room:room — ORM pentru stocarea locală a datelor. Room generează clase DAO din interogări SQLite adnotate, verifică sintaxa SQL la compilare și suportă RxJava și Kotlin Flow. Versiunea 2.6 include suport pentru KSP pentru generarea mai rapidă a codului.
androidx.work:workmanager — biblioteca pentru sarcini în fundal cu execuție garantată. WorkManager suportă sarcini periodice, lanțuri de lucru (beginWith, then) și criterii de pornire (Constraints: rețea, încărcare, memorie). Chiar dacă aplicația este închisă, WorkManager livrează sarcina după repornirea dispozitivului.
androidx.datastore:datastore — înlocuitor modern pentru SharedPreferences. DataStore utilizează Kotlin Coroutines și Flow, funcționează sincron și asincron, eliminând blocarea firului UI. Preferences DataStore stochează perechi simple cheie-valoare, iar Proto DataStore — obiecte tipizate prin Protocol Buffers.
Migrarea automată este metoda recomandată de Google pentru trecerea de la Support Library la AndroidX. Android Studio începând cu versiunea 3.2 include instrumentul integrat Refactor Migrate to AndroidX, care înlocuiește spațiile de nume și actualizează dependențele în build.gradle.
Înainte de migrare, trebuie să actualizați versiunea compileSdk la 28 sau mai mare. De asemenea, asigurați-vă că toate bibliotecile terțe suportă AndroidX. Dacă o dependență nu a fost încă migrată, puteți utiliza flag-ul android.enableJetifier=true în gradle.properties — acesta rescrie automat bytecodul bibliotecilor terțe.
În Android Studio, selectați Refactor Migrate to AndroidX din meniu. IDE va scana întregul proiect, va găsi toate importurile din pachetul android.support.* și le va înlocui cu androidx.*. De asemenea, dependențele din app/build.gradle vor fi actualizate — artefactele Support Library vor fi înlocuite cu versiunile corespunzătoare AndroidX.
După migrare, Gradle Sync poate afișa erori dacă unele dependențe nu au fost găsite. Verificați lista bibliotecilor utilizate în documentația Google Maven — toate artefactele AndroidX sunt publicate pe google(). Dacă biblioteca nu este disponibilă, adăugați mavenCentral() în repositories.
android {
compileSdk 34
}
dependencies {
// Support Library (învechit)
// 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'
}
Dacă proiectul este prea mare sau conține View-uri personalizate din Support Library, înlocuirea automată poate fi incompletă. Înlocuiți manual toate șirurile din cod: modificați importurile, atributele în XML (app/src/main/res) și referințele în manifest. Pentru atributele Support Library, prefixul android: se schimbă în app: (de exemplu, app:cardCornerRadius în loc de android:cardCornerRadius).
După migrarea manuală, verificați referințele R. Support Library exporta resurse prin android.support.v7.appcompat.R, iar AndroidX — prin androidx.appcompat.R. Rulați o căutare în proiect și înlocuiți toate mențiunile vechilor căi R. Compilarea proiectului trebuie să se realizeze fără erori și avertismente de depreciere.
Primul avantaj al AndroidX este modularitatea. Conectați doar bibliotecile pe care le utilizați efectiv. Dacă aplicația are nevoie doar de RecyclerView și Navigation, nu este necesar să includeți întreaga Support Library cu toate componentele View. Aceasta reduce dimensiunea APK și accelerează construirea proiectului.
Al doilea avantaj — actualizări regulate. Jetpack lansează versiuni stabile la fiecare 1–3 luni. Room 2.6.0, lansat în 2024, a adăugat suport pentru KSP și Kotlin 2.0. Navigation 2.8.0 a introdus rute sigure tipizate bazate pe serializarea Kotlinx Serialization. Dezvoltatorii primesc funcționalități noi fără a aștepta următoarea versiune Android.
Al treilea avantaj — integrarea cu Kotlin. Toate bibliotecile AndroidX au module -ktx cu funcții de extensie. viewLifecycleOwner.lifecycleScope lansează corutini în contextul fragmentului, collectLatest procesează Flow, iar SharedFlow și StateFlow sunt complet compatibile cu componentele Lifecycle-aware. Acest lucru face codul mai concis și mai sigur.
Compatibilitatea inversă este avantajul cheie al AndroidX față de noile API-uri ale platformei. Puteți utiliza AppCompatDelegate.setDefaultNightMode pentru tema întunecată pe Android 4.0+, NotificationCompat.setBubble pentru baloane pe Android 5.0+ și LocationRequestCompat pentru fused location pe Android 4.0+. Acoperirea dispozitivelor ajunge la 99% fără creșterea versiunii minime SDK.
Al patrulea avantaj — testarea. AndroidX include biblioteca androidx.test pentru scrierea testelor instrumentale și unitare. FragmentScenario și ActivityScenario permit testarea componentelor UI în izolare, iar TestNavHostController — verificarea navigării fără a porni un dispozitiv real. MockK și Robolectric completează ecosistemul.
Întrebări frecvente
AndroidX utilizează spațiul de nume androidx.* în loc de android.support.*, are versionare independentă (SemVer), include bibliotecile Jetpack și suportă extensiile Kotlin -ktx. Support Library a fost înghețată la versiunea 28.0.0 în 2019.
În Android Studio activați flag-ul Use AndroidX la pasul de creare a proiectului. Pentru un proiect existent, adăugați android.useAndroidX=true și android.enableJetifier=true în gradle.properties. Apoi înlocuiți dependențele în build.gradle cu artefacte din grupul androidx.
Google Play solicită ca toate aplicațiile și actualizările să utilizeze AndroidX. Suportul pentru Support Library a fost întrerupt și aceasta nu primește corecții de securitate. Dacă aplicația dvs. nu a fost încă migrată, aceasta poate duce la respingerea actualizării în Google Play Console.
Jetpack este un set de biblioteci, instrumente și recomandări de la Google pentru dezvoltarea aplicațiilor Android. AndroidX reprezintă fundamentul Jetpack. Jetpack include Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) și Behavior (WorkManager, Navigation, CameraX).
Da, Jetpack Compose însuși face parte din AndroidX (androidx.compose.ui). Bibliotecile ViewModel, Navigation, Room și WorkManager sunt complet compatibile cu Compose. Funcțiile collectAsState() și collectAsStateWithLifecycle() asigură integrarea Flow cu funcțiile Compose.
Concluzii
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și