AndroidX est un ensemble de bibliothèques Jetpack de Google qui a remplacé l'ancienne Support Library. Selon la Google Developer Documentation, 2024, AndroidX fournit des composants rétrocompatibles pour toutes les versions d'Android et constitue la norme du développement Android moderne. Les bibliothèques AndroidX incluent des outils pour l'UI, la navigation, le traitement des données, l'appareil photo et les tâches en arrière-plan.
Points essentiels
AndroidX est une bibliothèque open source qui fait partie d'Android Jetpack. Google a publié AndroidX en 2018 en remplacement de Support Library, qui fournissait des composants rétrocompatibles pour les anciennes versions d'Android depuis 2011.
Avant AndroidX, chaque composant de Support Library avait sa propre version liée à targetSdkVersion. Les développeurs devaient inclure plusieurs versions de la même bibliothèque simultanément, ce qui entraînait des conflits de dépendances et une augmentation de la taille de l'APK.
AndroidX a résolu ce problème grâce au versionnage sémantique (SemVer). Désormais, chaque bibliothèque est un artefact Gradle indépendant avec une version au format MAJOR.MINOR.PATCH. Les développeurs peuvent mettre à jour Room de 2.4.0 à 2.6.0 sans toucher à Activity, Fragment ou d'autres modules.
La première version stable d'AndroidX 1.0.0 est sortie en décembre 2018 avec Android 9 Pie. Google a annoncé que Support Library passait en mode maintenance et que tous les nouveaux composants — Navigation, WorkManager, Compose — seraient publiés uniquement dans le cadre d'AndroidX. La dernière version de Support Library — 28.0.0 — est sortie en 2019.
Selon Google I/O 2019, la raison clé de la transition était la nécessité d'accélérer les publications de mises à jour. Dans l'ancien modèle, une bibliothèque devait attendre une autre en raison d'une version unique de paquet. AndroidX a supprimé ce goulot d'étranglement, et Jetpack a commencé à recevoir des versions majeures et mineures tous les 2 à 3 mois.
La principale différence est l'espace de noms. Support Library utilisait le paquet android.support.*, tandis qu'AndroidX est passé à androidx.*. Ce changement a permis de diviser les bibliothèques en modules fonctionnels. Par exemple, Fragment dans Support Library s'appelait android.support.v4.app.Fragment, alors que dans AndroidX il s'agit d'androidx.fragment.app.Fragment.
La deuxième différence importante est l'architecture. AndroidX est fourni avec Jetpack — un ensemble de recommandations d'architecture d'applications. Jetpack inclut ViewModel, LiveData, Room, Navigation et WorkManager, conçus comme un écosystème unifié plutôt que comme des utilitaires dispersés.
La rétrocompatibilité s'est également améliorée. Alors que Support Library prenait en charge Android 2.3+, AndroidX garantit le fonctionnement sur les appareils sous Android 4.0 (API 14) et supérieur — couvrant plus de 99 % des appareils actifs selon Google Play Console 2024.
AndroidX comprend plus de 100 bibliothèques regroupées par catégorie. Chaque groupe couvre un domaine spécifique : UI, données, navigation, tâches en arrière-plan, multimédia et tests. Vous trouverez ci-dessous un aperçu des modules clés.
androidx.core:core est la bibliothèque de base qui contient des versions rétrocompatibles des API système : NotificationCompat, ActivityCompat, ContextCompat. Le module core-ktx fournit des extensions Kotlin pour travailler avec les fichiers, SharedPreferences et les éléments de vue.
La bibliothèque androidx.activity:activity a introduit l'API Activity Result (registerForActivityResult), remplaçant l'obsolète startActivityForResult. Le module fragment:fragment gère le cycle de vie des fragments et prend en charge FragmentManager pour les transactions et la pile arrière.
androidx.lifecycle est le fondement de l'architecture Jetpack. LifecycleOwner et LifecycleObserver permettent aux composants de réagir aux changements du cycle de vie d'Activity ou de Fragment. ViewModel préserve les données lors de la rotation de l'écran, tandis que LiveData notifie l'UI des modifications de données.
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 est un composant puissant pour afficher des listes et des grilles. RecyclerView prend en charge LayoutManager (LinearLayoutManager, GridLayoutManager), ItemDecoration et les animations via ItemAnimator. La bibliothèque ListAdapter avec AsyncListDiffer simplifie la mise à jour des listes avec calcul automatique des différences.
androidx.navigation:navigation est une bibliothèque pour la navigation entre les écrans. Le Navigation Component fonctionne avec NavHostFragment et NavController, prend en charge Safe Args pour passer des paramètres typés et Deep Links pour les liens externes. NavGraph décrit tous les itinéraires dans un fichier XML.
androidx.compose.ui est un framework d'UI déclarative, Jetpack Compose, construit sur Kotlin. Contrairement au système View, Compose ne redessine que les éléments modifiés via la recomposition. Les composants Material Design 3 (Button, TextField, Scaffold) sont disponibles dans le module material3.
| Bibliothèque | Artefact | Objectif |
|---|---|---|
| Fragment | androidx.fragment | Gestion des fragments et transactions |
| RecyclerView | androidx.recyclerview | Listes et grilles optimisées |
| Navigation | androidx.navigation | Navigation entre écrans |
| Compose UI | androidx.compose.ui | UI déclarative en Kotlin |
androidx.room:room est un ORM pour le stockage local de données. Room génère des classes DAO à partir de requêtes SQLite annotées, valide la syntaxe SQL à la compilation et prend en charge RxJava et Kotlin Flow. La version 2.6 inclut le support de KSP pour une génération de code plus rapide.
androidx.work:workmanager est une bibliothèque pour les tâches en arrière-plan avec exécution garantie. WorkManager prend en charge les tâches périodiques, les chaînes de travail (beginWith, then) et les critères de lancement (Constraints : réseau, charge, stockage). Même si l'application est fermée, WorkManager livre la tâche après le redémarrage de l'appareil.
androidx.datastore:datastore est un remplacement moderne de SharedPreferences. DataStore utilise Kotlin Coroutines et Flow, fonctionne de manière synchrone et asynchrone, évitant le blocage du thread UI. Preferences DataStore stocke de simples paires clé-valeur, tandis que Proto DataStore gère des objets typés via Protocol Buffers.
La migration automatique est la méthode recommandée par Google pour passer de Support Library à AndroidX. Android Studio depuis la version 3.2 inclut l'outil intégré Refactor Migrate to AndroidX, qui remplace les espaces de noms et met à jour les dépendances dans build.gradle.
Avant la migration, vous devez mettre à jour la version de compileSdk à 28 ou plus. Assurez-vous également que toutes les bibliothèques tierces prennent en charge AndroidX. Si une dépendance n'a pas encore migré, utilisez le flag android.enableJetifier=true dans gradle.properties — il réécrit automatiquement le bytecode des bibliothèques tierces.
Dans Android Studio, sélectionnez Refactor Migrate to AndroidX dans le menu. L'IDE analysera l'ensemble du projet, trouvera toutes les importations du paquet android.support.* et les remplacera par androidx.*. Les dépendances dans app/build.gradle seront également mises à jour — les artefacts Support Library seront remplacés par les versions AndroidX correspondantes.
Après la migration, Gradle Sync peut afficher des erreurs si certaines dépendances n'ont pas été trouvées. Vérifiez la liste des bibliothèques utilisées dans la documentation Google Maven — tous les artefacts AndroidX sont publiés sur google(). Si une bibliothèque n'est pas disponible, ajoutez mavenCentral() dans repositories.
android {
compileSdk 34
}
dependencies {
// Support Library (obsolète)
// 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'
}
Si le projet est trop volumineux ou contient des Vues personnalisées de Support Library, le remplacement automatique peut être incomplet. Remplacez manuellement toutes les chaînes dans le code : modifiez les importations, les attributs XML (app/src/main/res) et les références dans le manifeste. Pour les attributs Support Library, le préfixe android: devient app: (par exemple, app:cardCornerRadius au lieu de android:cardCornerRadius).
Après la migration manuelle, vérifiez les références R. Support Library exportait les ressources via android.support.v7.appcompat.R, tandis qu'AndroidX utilise androidx.appcompat.R. Recherchez dans le projet et remplacez toutes les références aux anciens chemins R. La compilation du projet doit se terminer sans erreurs ni avertissements de dépréciation.
Le premier avantage d'AndroidX est la modularité. Vous n'incluez que les bibliothèques que vous utilisez réellement. Si votre application a seulement besoin de RecyclerView et Navigation, il n'est pas nécessaire d'inclure toute Support Library avec tous ses composants View. Cela réduit la taille de l'APK et accélère le temps de compilation.
Le deuxième avantage est les mises à jour régulières. Jetpack publie des versions stables tous les 1 à 3 mois. Room 2.6.0, sorti en 2024, a ajouté le support de KSP et la compatibilité avec Kotlin 2.0. Navigation 2.8.0 a introduit des routes typées basées sur Kotlinx Serialization. Les développeurs obtiennent de nouvelles fonctionnalités sans attendre la prochaine version d'Android.
Le troisième avantage est l'intégration avec Kotlin. Toutes les bibliothèques AndroidX ont des modules -ktx avec des fonctions d'extension. viewLifecycleOwner.lifecycleScope lance des coroutines dans le contexte du fragment, collectLatest traite Flow, et SharedFlow et StateFlow sont entièrement compatibles avec les composants lifecycle-aware. Cela rend le code plus concis et plus sûr.
La rétrocompatibilité est un avantage clé d'AndroidX par rapport aux nouvelles API de la plateforme. Vous pouvez utiliser AppCompatDelegate.setDefaultNightMode pour le thème sombre sur Android 4.0+, NotificationCompat.setBubble pour les bulles sur Android 5.0+ et LocationRequestCompat pour la localisation fusionnée sur Android 4.0+. La couverture des appareils atteint 99 % sans augmenter la version minimale du SDK.
Le quatrième avantage est le test. AndroidX inclut la bibliothèque androidx.test pour écrire des tests instrumentés et unitaires. FragmentScenario et ActivityScenario permettent de tester les composants d'UI en isolation, tandis que TestNavHostController permet de vérifier la navigation sans exécuter un appareil réel. MockK et Robolectric complètent l'écosystème.
Questions fréquentes
AndroidX utilise l'espace de noms androidx.* au lieu de android.support.*, dispose d'un versionnage indépendant (SemVer), inclut les bibliothèques Jetpack et prend en charge les extensions Kotlin -ktx. Support Library a été figée à la version 28.0.0 en 2019.
Dans Android Studio, activez le flag Use AndroidX à l'étape de création du projet. Pour les projets existants, ajoutez android.useAndroidX=true et android.enableJetifier=true dans gradle.properties. Remplacez ensuite les dépendances dans build.gradle par des artefacts du groupe androidx.
Google Play exige que toutes les applications et mises à jour utilisent AndroidX. La maintenance de Support Library a été interrompue et elle ne reçoit plus de correctifs de sécurité. Si votre application n'a pas encore migré, cela peut entraîner le rejet de la mise à jour dans Google Play Console.
Jetpack est un ensemble de bibliothèques, d'outils et de directives de Google pour le développement d'applications Android. AndroidX est le fondement de Jetpack. Jetpack inclut Architecture Components (Lifecycle, ViewModel, Room), UI (Compose, Fragment, RecyclerView) et Behavior (WorkManager, Navigation, CameraX).
Oui, Jetpack Compose lui-même fait partie d'AndroidX (androidx.compose.ui). Les bibliothèques ViewModel, Navigation, Room et WorkManager sont entièrement compatibles avec Compose. Les fonctions collectAsState() et collectAsStateWithLifecycle() assurent l'intégration de Flow avec les fonctions Composable.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi