Guide pratique de migration vers AndroidX

Farouk Sabiou
AndroidMood
Published in
3 min readJun 10, 2020
programmer focused on code | Burst

Dans son article sur les meilleures pratiques en développement Android, Gabriel TEK’s a souligné combien il est important de migrer vers AndroidX si vous avez une codebase encore sous la bibliothèque de support. Cette dernière est désormais obsolète et son développement a été stoppé depuis la version 28.0.0. Ceci dit pour profiter de fonctionnalités futures du SDK et corrections de bugs les développeurs doivent migrer leurs codebases vers AndroidX qui est une amélioration majeure de la version précédente.

Avantages androidX:

  • Tous les packages sous AndroidX résident dans un espace de noms cohérent commençant par la chaîne androidx. Les packages de la bibliothèque de support ont été mappés dans les packages androidx. * Correspondants. Pour un mappage complet de toutes les anciennes classes voir la page Artifact Mappings . Vous pouvez télécharger la liste gratuitement au format CSV.
  • Contrairement à la bibliothèque de support, les packages AndroidX sont gérés et mis à jour séparément. Les packages androidx utilisent le semantic versioning et commencent à partir de la version 1.0.0. Vous pouvez mettre à jour les bibliothèques AndroidX de votre projet indépendamment.
  • Tous les développements futurs auront lieu dans la bibliothèque AndroidX. Cela inclut la maintenance des artefacts de la bibliothèque de support d’origine ainsi que l’introduction de nouveaux composants Jetpack.

👉 Visitez la section AndroidX de la documentation pour en savoir plus.

Dans cet article, nous allons voir étape par étape comment migrer l’application Popular Movies de la Support Library à AndroidX.

Popular Movies 🎥 est une application que j’ai développé il y a 2 ans pendant le Nanodegree Android.

Créer une branche de migration 🔧

Il est vivement recommandé de créer une branche dédiée à l’opération afin d’éviter tout conflit avec le code fonctionnel.

Pour la migration de notre projet, on a créer une branche androidx-migration.

Étape 1

Il est également recommandé de passer d’abord à la version finale d’Android Support Library (28.0.0) avant de commencer la migration vers AndroidX. Pour notre application les librairies du SDK sont sous la version 27.1.1, nous allons donc passer à 28.0.0

Voir commit 1a8ad97

Étape 2

Cette étape consiste à mettre à jour toutes les librairies tierces présentes dans le projet.

Avant de passer a la dernière étape, il nous faut ajouter ces deux lignes dans notre fichier gradle.properties.

voir commit 172a993
  • Android.useAndroidX: lorsqu'il est défini sur true, le plug-in Android utilise la bibliothèque AndroidX appropriée au lieu d'une bibliothèque de support. La valeur par défaut est false.
  • Android.enableJetifier: lorsqu'il est défini sur true, le plug-in Android migre automatiquement les bibliothèques tierces existantes afin qu'elles utilisent AndroidX en réécrivant leurs fichiers binaires. La valeur par défaut est également false.

Étape 3

Enfin, la dernière étape consiste à migrer tous les paquets vers androidX. Depuis Android Studio 3.2, il existe une option directe pour effectuer cette opération. A partir de la barre de menu, cliquez sur Refactor > Migrate to AndroidX puis accepter les changements à faire. Cette action va refactorer tous les paquets automatiquement.

Voir commit 73d8c05 pour un aperçu des changements.

commit 73d8c05

Après cette modification vous aurez sûrement besoin d’effectuer quelques modifications mineures telles que la gestion de certains import au niveau des packages etc.. comme ici par exemple cette classe, nous devons supprimer les anciens packages et re-importer les nouveaux. Voir commit e0254d0

hint 🔥: Un simple CTRL+Alt+O (control + option + o pour Mac) suffit pour éliminer tous les packages non utilisés.

Et.. Bingo 🚀 notre application est désormais sous androidX et nous pouvons y intégrer des a présent toutes les dernières librairies stables du sdk 🔥.

Quelques liens utiles 🔗

N’hésitez pas à partager et à suivre AndroidMood pour ne pas rater nos prochains articles.

Bonne lecture 😄

--

--