AndroidX è un insieme di librerie Jetpack di Google che ha sostituito la obsoleta Support Library. Secondo la Google Developer Documentation, 2024, AndroidX fornisce componenti retrocompatibili per tutte le versioni di Android ed è lo standard dello sviluppo Android moderno. Le librerie AndroidX includono strumenti per UI, navigazione, gestione dati, fotocamera e attività in background.
Punti chiave
AndroidX è una libreria open source che fa parte di Android Jetpack. Google ha rilasciato AndroidX nel 2018 come sostituto di Support Library, che dal 2011 forniva componenti retrocompatibili per le versioni precedenti di Android.
Prima di AndroidX, ogni componente di Support Library aveva la propria versione legata a targetSdkVersion. Gli sviluppatori dovevano includere più versioni della stessa libreria contemporaneamente, causando conflitti di dipendenze e aumento delle dimensioni dell'APK.
AndroidX ha risolto questo problema attraverso il versionamento semantico (SemVer). Ora ogni libreria è un artefatto Gradle indipendente con versione in formato MAJOR.MINOR.PATCH. Gli sviluppatori possono aggiornare Room dalla 2.4.0 alla 2.6.0 senza toccare Activity, Fragment o altri moduli.
La prima versione stabile di AndroidX 1.0.0 è uscita a dicembre 2018 insieme ad Android 9 Pie. Google ha annunciato che Support Library entrava in modalità manutenzione e che tutti i nuovi componenti — Navigation, WorkManager, Compose — sarebbero stati rilasciati solo come parte di AndroidX. L'ultima versione di Support Library — 28.0.0 — è stata rilasciata nel 2019.
Secondo Google I/O 2019, il motivo principale della transizione era la necessità di accelerare il rilascio degli aggiornamenti. Nel vecchio modello, una libreria doveva aspettare un'altra a causa di una versione unica del pacchetto. AndroidX ha rimosso questo collo di bottiglia e Jetpack ha iniziato a ricevere versioni major e minor ogni 2–3 mesi.
La differenza principale è il namespace. Support Library utilizzava il pacchetto android.support.*, mentre AndroidX è passato a androidx.*. Questo cambiamento ha permesso di suddividere le librerie in moduli funzionali. Ad esempio, Fragment in Support Library si chiamava android.support.v4.app.Fragment, mentre in AndroidX è androidx.fragment.app.Fragment.
La seconda differenza importante è l'architettura. AndroidX viene fornito con Jetpack — un insieme di raccomandazioni sull'architettura delle app. Jetpack include ViewModel, LiveData, Room, Navigation e WorkManager, progettati come un ecosistema unificato anziché utility sparse.
La retrocompatibilità è anche migliorata. Mentre Support Library supportava Android 2.3+, AndroidX garantisce il funzionamento su dispositivi con Android 4.0 (API 14) e superiori — coprendo oltre il 99% dei dispositivi attivi secondo Google Play Console 2024.
AndroidX include oltre 100 librerie raggruppate per categoria. Ogni gruppo copre un'area specifica: UI, dati, navigazione, attività in background, multimedia e test. Di seguito una panoramica dei moduli chiave.
androidx.core:core è la libreria di base che contiene versioni retrocompatibili delle API di sistema: NotificationCompat, ActivityCompat, ContextCompat. Il modulo core-ktx fornisce estensioni Kotlin per lavorare con file, SharedPreferences ed elementi della vista.
La libreria androidx.activity:activity ha introdotto l'API Activity Result (registerForActivityResult), sostituendo il deprecato startActivityForResult. Il modulo fragment:fragment gestisce il ciclo di vita dei fragment e supporta FragmentManager per transazioni e back stack.
androidx.lifecycle è il fondamento dell'architettura Jetpack. LifecycleOwner e LifecycleObserver consentono ai componenti di reagire ai cambiamenti del ciclo di vita di Activity o Fragment. ViewModel preserva i dati durante la rotazione dello schermo, mentre LiveData notifica la UI delle modifiche ai dati.
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 è un potente componente per visualizzare elenchi e griglie. RecyclerView supporta LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration e animazioni tramite ItemAnimator. La libreria ListAdapter con AsyncListDiffer semplifica l'aggiornamento degli elenchi con calcolo automatico delle differenze.
androidx.navigation:navigation è una libreria per la navigazione tra schermate. Il Navigation Component funziona con NavHostFragment e NavController, supporta Safe Args per passare parametri tipizzati e Deep Links per collegamenti esterni. NavGraph descrive tutte le rotte in un file XML.
androidx.compose.ui è un framework UI dichiarativo, Jetpack Compose, costruito su Kotlin. A differenza del sistema View, Compose ridisegna solo gli elementi modificati tramite ricomposizione. I componenti Material Design 3 (Button, TextField, Scaffold) sono disponibili nel modulo material3.
| Libreria | Artefatto | Scopo |
|---|---|---|
| Fragment | androidx.fragment | Gestione fragment e transazioni |
| RecyclerView | androidx.recyclerview | Elenchi e griglie ottimizzati |
| Navigation | androidx.navigation | Navigazione tra schermate |
| Compose UI | androidx.compose.ui | UI dichiarativa in Kotlin |
androidx.room:room è un ORM per l'archiviazione locale dei dati. Room genera classi DAO da query SQLite annotate, valida la sintassi SQL in fase di compilazione e supporta RxJava e Kotlin Flow. La versione 2.6 include il supporto KSP per una generazione di codice più rapida.
androidx.work:workmanager è una libreria per attività in background con esecuzione garantita. WorkManager supporta attività periodiche, catene di lavoro (beginWith, then) e criteri di avvio (Constraints: rete, carica, memoria). Anche se l'app è chiusa, WorkManager consegna l'attività dopo il riavvio del dispositivo.
androidx.datastore:datastore è un sostituto moderno di SharedPreferences. DataStore utilizza Kotlin Coroutines e Flow, funziona in modo sincrono e asincrono, prevenendo il blocco del thread UI. Preferences DataStore archivia semplici coppie chiave-valore, mentre Proto DataStore gestisce oggetti tipizzati tramite Protocol Buffers.
La migrazione automatica è il metodo raccomandato da Google per passare da Support Library ad AndroidX. Android Studio dalla versione 3.2 include lo strumento integrato Refactor Migrate to AndroidX, che sostituisce i namespace e aggiorna le dipendenze in build.gradle.
Prima della migrazione, è necessario aggiornare la versione di compileSdk a 28 o superiore. Assicurati anche che tutte le librerie di terze parti supportino AndroidX. Se una dipendenza non ha ancora migrato, usa il flag android.enableJetifier=true in gradle.properties — riscrive automaticamente il bytecode delle librerie di terze parti.
In Android Studio, seleziona Refactor Migrate to AndroidX dal menu. L'IDE scannerà l'intero progetto, troverà tutte le importazioni dal pacchetto android.support.* e le sostituirà con androidx.*. Anche le dipendenze in app/build.gradle verranno aggiornate — gli artefatti di Support Library saranno sostituiti con le corrispondenti versioni AndroidX.
Dopo la migrazione, Gradle Sync potrebbe mostrare errori se alcune dipendenze non sono state trovate. Controlla l'elenco delle librerie utilizzate nella documentazione di Google Maven — tutti gli artefatti AndroidX sono pubblicati su google(). Se una libreria non è disponibile, aggiungi mavenCentral() in repositories.
android {
compileSdk 34
}
dependencies {
// Support Library (obsoleta)
// 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'
}
Se il progetto è troppo grande o contiene View personalizzate da Support Library, la sostituzione automatica potrebbe essere incompleta. Sostituisci manualmente tutte le stringhe nel codice: modifica le importazioni, gli attributi XML (app/src/main/res) e i riferimenti nel manifest. Per gli attributi di Support Library, il prefisso android: cambia in app: (ad esempio, app:cardCornerRadius invece di android:cardCornerRadius).
Dopo la migrazione manuale, verifica i riferimenti R. Support Library esportava risorse tramite android.support.v7.appcompat.R, mentre AndroidX usa androidx.appcompat.R. Cerca nel progetto e sostituisci tutti i riferimenti ai vecchi percorsi R. La build del progetto dovrebbe completarsi senza errori o avvisi di deprecazione.
Il primo vantaggio di AndroidX è la modularità. Includi solo le librerie che utilizzi effettivamente. Se la tua app ha bisogno solo di RecyclerView e Navigation, non è necessario includere l'intera Support Library con tutti i componenti View. Questo riduce le dimensioni dell'APK e accelera i tempi di build.
Il secondo vantaggio sono gli aggiornamenti regolari. Jetpack pubblica versioni stabili ogni 1–3 mesi. Room 2.6.0, rilasciato nel 2024, ha aggiunto il supporto KSP e la compatibilità con Kotlin 2.0. Navigation 2.8.0 ha introdotto route type-safe basate su Kotlinx Serialization. Gli sviluppatori ottengono nuove funzionalità senza aspettare la prossima versione di Android.
Il terzo vantaggio è l'integrazione con Kotlin. Tutte le librerie AndroidX hanno moduli -ktx con funzioni di estensione. viewLifecycleOwner.lifecycleScope avvia coroutine nel contesto del fragment, collectLatest elabora Flow, e SharedFlow e StateFlow sono completamente compatibili con i componenti lifecycle-aware. Questo rende il codice più conciso e sicuro.
La retrocompatibilità è un vantaggio chiave di AndroidX rispetto alle nuove API della piattaforma. Puoi usare AppCompatDelegate.setDefaultNightMode per il tema scuro su Android 4.0+, NotificationCompat.setBubble per le bolle su Android 5.0+ e LocationRequestCompat per la posizione fusa su Android 4.0+. La copertura dei dispositivi raggiunge il 99% senza aumentare la versione minima dell'SDK.
Il quarto vantaggio sono i test. AndroidX include la libreria androidx.test per scrivere test strumentati e unitari. FragmentScenario e ActivityScenario consentono di testare i componenti UI in isolamento, mentre TestNavHostController permette di verificare la navigazione senza eseguire un dispositivo reale. MockK e Robolectric completano l'ecosistema.
Domande frequenti
AndroidX usa il namespace androidx.* invece di android.support.*, ha versionamento indipendente (SemVer), include le librerie Jetpack e supporta le estensioni Kotlin -ktx. Support Library è stata congelata alla versione 28.0.0 nel 2019.
In Android Studio, attiva il flag Use AndroidX nella fase di creazione del progetto. Per progetti esistenti, aggiungi android.useAndroidX=true e android.enableJetifier=true in gradle.properties. Poi sostituisci le dipendenze in build.gradle con artefatti del gruppo androidx.
Google Play richiede che tutte le app e gli aggiornamenti utilizzino AndroidX. Il supporto di Support Library è stato interrotto e non riceve più patch di sicurezza. Se la tua app non ha ancora migrato, ciò potrebbe portare al rifiuto dell'aggiornamento in Google Play Console.
Jetpack è un insieme di librerie, strumenti e linee guida di Google per lo sviluppo di app Android. AndroidX è il fondamento di Jetpack. Jetpack include Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) e Behavior (WorkManager, Navigation, CameraX).
Sì, Jetpack Compose stesso fa parte di AndroidX (androidx.compose.ui). Le librerie ViewModel, Navigation, Room e WorkManager sono completamente compatibili con Compose. Le funzioni collectAsState() e collectAsStateWithLifecycle() forniscono l'integrazione di Flow con le funzioni Composable.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche