309 votes

Qu'est-ce qu'AndroidX?

Je suis en train de lire sur une bibliothèque de salle d'Android. Je vois qu'ils ont changé le package android en androidx. Je n'ai pas compris ça. Est-ce que quelqu'un peut expliquer, s'il vous plaît?

implementation "androidx.room:room-runtime:$room_version"
annotationProcessor "androidx.room:room-compiler:$room_version"

Même cela est disponible avec le package android également.

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • Quel était le besoin d'emballer de nouvelles bibliothèques de support dans androidx au lieu de android?
  • Cas d'utilisation et facteurs d'impact dans les projets existants.

5 votes

Lire developer.android.com/topic/libraries/support-library/…. androidx.* est la hiérarchie de packages pour les bibliothèques de support. Ils seront tous regroupés sous le même package alors que nous entrons dans l'ère de androidx (comme les composants d'architecture, les autres bibliothèques de support).

3 votes

Qu'est-ce que tu n'as pas compris exactement? Pourquoi ont-ils changé le forfait?

1 votes

@ADM pourquoi ont-ils basculé vers le package androidx à partir du package CORE android.

385voto

Khemraj Points 8449

AndroidX - Android Extension Library

De la documentation AndroidX

Nous déployons une nouvelle structure de package pour clarifier quels packages sont regroupés avec le système d'exploitation Android, et lesquels sont emballés dans l'APK de votre application. À l'avenir, la hiérarchie de package android.* sera réservée aux packages Android qui sont expédiés avec le système d'exploitation. D'autres packages seront émis dans la nouvelle hiérarchie de package androidx.* dans le cadre de la bibliothèque AndroidX.

Besoin d'AndroidX

AndroidX est une bibliothèque repensée pour rendre les noms de package plus clairs. Ainsi, à partir de maintenant, la hiérarchie android sera uniquement pour les classes par défaut d'Android, qui viennent avec le système d'exploitation Android et les autres bibliothèques/dépendances seront partie de androidx (ce qui a plus de sens). Donc à partir de maintenant, tous les nouveaux développements seront mis à jour dans androidx.

com.android.support.** : androidx.
com.android.support:appcompat-v7 : androidx.appcompat:appcompat com.android.support:recyclerview-v7 : androidx.recyclerview:recyclerview com.android.support:design : com.google.android.material:material

Mappings complets des artefacts pour les packages AndroidX

AndroidX utilise Semantic-version

Auparavant, la bibliothèque de support utilisait la version du SDK mais AndroidX utilise la Semantic-version. Elle va se re-versionner de 28.0.0 à 1.0.0.

Comment migrer un projet actuel

Dans Android Studio 3.2 (septembre 2018), il y a une option directe pour migrer un projet existant vers AndroidX. Cela refactorise automatiquement tous les packages.

Avant de migrer, il est fortement recommandé de sauvegarder votre projet.

Projet existant

  • Android Studio > Menu Refactor > Migrate to AndroidX...
  • Il analysera et ouvrira la fenêtre Refactor en bas. Acceptez les changements à effectuer.

image

Nouveau projet

Placez ces paramètres dans votre gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Vérifiez les @Mappings de bibliothèques pour les packages AndroidX équivalents.

Vérifiez la @Page officielle de la migration vers AndroidX

Qu'est-ce que Jetifier?

Bugs de la migration

  • Si vous compilez l'application et trouvez des erreurs après la migration, vous devrez corriger ces erreurs mineures. Vous ne resterez pas bloqué, car cela peut être facilement corrigé.
  • Les bibliothèques tierces ne sont pas converties en AndroidX dans le répertoire, mais elles sont converties au moment de l'exécution par Jetifier, donc ne vous inquiétez pas des erreurs de compilation, votre application fonctionnera parfaitement.

La version 28.0.0 de la bibliothèque de support est-elle la dernière?

De la révision 28.0.0 de la bibliothèque de support Android

Ce sera la dernière version avec de nouvelles fonctionnalités sous l'emballage android.support, et les développeurs sont encouragés à migrer vers AndroidX 1.0.0

Donc allez avec AndroidX, car Android n'actualisera que le package androidx à partir de maintenant.

Lecture supplémentaire

https://developer.android.com/topic/libraries/support-library/androidx-overview

https://android-developers.googleblog.com/2018/05/hello-world-androidx.html

2 votes

@androidmalin Heureux d'avoir de tes nouvelles - cette information t'a aidé :)

0 votes

Sous quelles circonstances pouvez / devez-vous définir enableJetifier sur false?

1 votes

@Mark enableJetifier=false est la valeur par défaut. Elle est fausse lorsque vous ne la définissez pas. Cela signifie que aucune de vos bibliothèques ne sera réécrite en AndroidX.

34voto

Sagar Points 12352

Basé sur la documentation:

androidx est une nouvelle structure de package visant à clarifier quels packages sont inclus dans le système d'exploitation Android, et lesquels sont empaquetés avec l'APK de votre application. À l'avenir, la hiérarchie de packages android.* sera réservée aux packages Android qui sont livrés avec le système d'exploitation; les autres packages seront émis dans la nouvelle hiérarchie de packages androidx.*.

La structure de package repensée vise à encourager des bibliothèques plus petites et plus ciblées. Vous trouverez des détails sur les mappages des artefacts ici.

Il existe des bibliothèques de support (contenant des composants et des packages pour la compatibilité descendante) nommées "v7" lorsque le niveau minimal de SDK pris en charge est 14, le nouveau nommage permet de comprendre clairement la division entre les API incluses dans la plateforme et les bibliothèques pour les développeurs d'applications utilisées sur différentes versions d'Android. Vous pouvez consulter l'annonce officielle pour plus de détails.

32voto

Basi Points 304

AndroidX est le projet open source que l'équipe Android utilise pour développer, tester, empaqueter, versionner et publier des bibliothèques au sein de Jetpack.

AndroidX est une amélioration majeure par rapport à la Android Support Library originale. Comme la Bibliothèque de support, AndroidX est distribué séparément du système Android et assure une compatibilité ascendante entre les versions d'Android. AndroidX remplace entièrement la Bibliothèque de support en offrant une parité de fonctionnalités et de nouvelles bibliothèques.

AndroidX inclut les fonctionnalités suivantes :

  • Tous les packages d'AndroidX se trouvent 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 en packages correspondants androidx.*. Pour une correspondance complète de toutes les anciennes classes et artefacts de build aux nouvelles, consultez la page de Refactorisation des packages.

  • Contrairement à la Bibliothèque de support, les packages AndroidX sont maintenus et mis à jour séparément. Les packages androidx utilisent la Semantic Versioning strict en commençant par la version 1.0.0. Vous pouvez mettre à jour les bibliothèques AndroidX dans votre projet de manière indépendante.

  • Tout nouveau développement de la Bibliothèque de support se fera dans la bibliothèque AndroidX. Cela inclut la maintenance des artefacts originaux de la Bibliothèque de support et l'introduction de nouveaux composants Jetpack.

Utilisation d'AndroidX

Consultez Migration vers AndroidX pour apprendre comment migrer un projet existant.

Si vous souhaitez utiliser AndroidX dans un nouveau projet, vous devez définir la version de compilation SDK sur Android 9.0 (niveau API 28) ou supérieure et définir les deux indicateurs du plugin Android Gradle suivants sur true dans votre fichier gradle.properties.

  • android.useAndroidX : lorsqu'il est défini sur true, le plugin Android utilise la bibliothèque AndroidX appropriée au lieu d'une Bibliothèque de support. L'indicateur est faux par défaut s'il n'est pas spécifié.

  • android.enableJetifier : lorsqu'il est défini sur true, le plugin Android migre automatiquement les bibliothèques tierces existantes pour utiliser AndroidX en réécrivant leurs binaires. L'indicateur est faux par défaut s'il n'est pas spécifié.

Pour les Correspondances des artefacts, consultez ce lien

19voto

onmyway133 Points 2196

Cet article Android Jetpack : Que signifient les récentes annonces pour la bibliothèque de support d'Android ? l'explique bien

Aujourd'hui, beaucoup considèrent que la bibliothèque de support est une partie essentielle du développement d'applications Android, au point qu'elle est utilisée par 99 pour cent des applications sur le Google Play store. Cependant, avec la croissance de la bibliothèque de support, des incohérences sont apparues concernant la convention de nommage de la bibliothèque.

Initialement, le nom de chaque package indiquait le niveau API minimum pris en charge par ce package, par exemple, support-v4. Cependant, la version 26.0.0 de la bibliothèque de support a augmenté le niveau API minimum à 14, de sorte que de nos jours, nombreux sont les noms de package qui n'ont rien à voir avec le niveau API minimum pris en charge. Lorsque support-v4 et les packages support-v7 ont tous les deux un niveau API minimum de 14, il est facile de comprendre pourquoi les gens sont déconcertés !

Pour dissiper cette confusion, Google est en train de refactoriser la bibliothèque de support en une nouvelle structure de package bibliothèque d'extension Android (AndroidX). AndroidX présentera des noms de package simplifiés, ainsi que des groupIds et des artifactIds Maven qui reflètent mieux le contenu de chaque package et ses niveaux API pris en charge.

Avec la convention de nommage actuelle, il n'est pas non plus clair quels packages sont inclus dans le système d'exploitation Android, et lesquels sont inclus dans l'APK de votre application (Android Package Kit). Pour dissiper cette confusion, toutes les bibliothèques non incluses seront déplacées dans l'espace de noms androidx.* d'AndroidX, tandis que la hiérarchie de packages android.* sera réservée aux packages intégrés au système d'exploitation Android.

14voto

Abhishek Kumar Points 167

Juste quelques ajouts de ma part à toutes les réponses disponibles

Besoin d'AndroidX

  1. Comme mentionné dans une réponse incroyable de @KhemRaj,

Avec la convention de nommage actuelle, il n'est pas clair quels packages sont inclus avec le système d'exploitation Android, et lesquels sont empaquetés avec l'APK de votre application (Android Package Kit). Pour dissiper cette confusion, toutes les bibliothèques non incluses seront déplacées dans l'espace de noms androidx.* d'AndroidX, tandis que la hiérarchie des packages android.* sera réservée aux packages inclus avec le système d'exploitation Android.

  1. En dehors de cela,

    Initialement, le nom de chaque package indiquait le niveau API minimum pris en charge par ce package, par exemple support-v4. Cependant, la version 26.0.0 de la bibliothèque de support a augmenté le niveau API minimum à 14, donc aujourd'hui de nombreux noms de packages n'ont rien à voir avec le niveau API minimum pris en charge. Lorsque support-v4 et les packages support-v7 ont tous les deux un niveau API minimum de 14, il est facile de comprendre pourquoi les gens sont confus ! Donc maintenant, avec AndroidX, il n'y a pas de dépendance au niveau API.

Un autre changement important est que les artefacts AndroidX seront mis à jour indépendamment, vous pourrez donc mettre à jour les bibliothèques AndroidX individuelles dans votre projet, plutôt que de devoir changer toutes les dépendances en même temps. Ces messages frustrants de "Toutes les bibliothèques com.android.support doivent utiliser la même spécification de version exacte" devraient appartenir au passé !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X