Qu'est-ce qu'AndroidX?

255

Je lis sur une bibliothèque de salle d'Android. Je vois qu'ils ont changé de package androidpour androidx. Je n'ai pas compris ça. Quelqu'un peut-il expliquer, s'il vous plaît?

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

Même cela est également disponible avec le androidpackage.

implementation "android.arch.persistence.room:runtime:$room_version"
annotationProcessor "android.arch.persistence.room:compiler:$room_version"
  • Qu'est-ce qui avait besoin d'empaqueter de nouvelles bibliothèques de support au androidxlieu deandroid ?
  • Cas d'utilisation et facteurs d'influence dans les projets existants.
Khemraj
la source
4
Lisez developer.android.com/topic/libraries/support-library/… . androidx.*est la hiérarchie des packages pour les bibliothèques de support. Ils viendront tous dans le même paquet que nous arrivons à l'ère de androidx(comme les composants d'architecture, les autres bibliothèques de support).
ADM
3
Qu'est-ce que tu n'as pas compris exactement? Pourquoi ils ont changé le paquet?
Rohit5k2
@ADM pourquoi ils sont passés au androidxpackage de CORE android.
Khemraj
2
Ils ont juste repensé la structure du package par souci de simplicité. Cela a également été annoncé dans IO 2018 si vous voulez y jeter un œil. Thx
ADM

Réponses:

334

AndroidX - Bibliothèque d'extensions Android

À partir de la documentation AndroidX

Nous déployons une nouvelle structure de packages pour clarifier les packages fournis avec le système d'exploitation Android et ceux qui sont fournis avec l'APK de votre application. À l'avenir, la hiérarchie des packages android. * Sera réservée aux packages Android livrés avec le système d'exploitation. D'autres packages seront publiés dans la nouvelle hiérarchie de packages androidx. * Dans le cadre de la bibliothèque AndroidX.

Besoin d'AndroidX

AndroidX est une bibliothèque repensée pour rendre les noms de packages plus clairs. Donc, à partir de maintenant, la hiérarchie Android sera réservée aux classes Android par défaut, qui est fournie avec le système d'exploitation Android et d'autres bibliothèques / dépendances feront partie d' Androidx (cela a plus de sens). Donc, désormais, 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

Mappages d'artefacts complets pour les packages AndroidX

AndroidX utilise la version sémantique

Auparavant, support libraryutilisé la version SDK, mais AndroidX utilise le Semantic-version. Il va re-version de 28.0.0 → 1.0.0.

Comment migrer le projet en cours

Dans Android Studio 3.2 (septembre 2018), il existe une option directe pour migrer le projet existant vers AndroidX. Ce refactoriser tous les packages automatiquement.

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

Projet existant

  • Android Studio> Menu Refactor> Migrer vers AndroidX ...
  • Il analysera et ouvrira la fenêtre du réfracteur en bas. Acceptez les modifications à effectuer.

image

Nouveau projet

Mettez ces drapeaux dans votre gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Vérifiez les mappages @ Library pour un package AndroidX égal .

Consultez la page officielle de Migrate to AndroidX

Qu'est-ce que Jetifier?

Bugs de migration

  • Si vous créez une application et trouvez des erreurs après la migration, vous devez corriger ces erreurs mineures. Vous ne serez pas coincé là-bas, car cela peut être facilement résolu.
  • 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 , alors ne vous inquiétez pas des erreurs de compilation, votre application fonctionnera parfaitement.

Le support 28.0.0 est la dernière version?

Depuis Android Support Revision 28.0.0

Ce sera la dernière version de la fonctionnalité sous le package android.support , et les développeurs sont encouragés à migrer vers AndroidX 1.0.0

Allez donc avec AndroidX, car Android ne mettra à jour que le package androidx.

Lectures complémentaires

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

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

Khemraj
la source
2
@androidmalin Heureux d'avoir de vos nouvelles - ces informations vous ont aidé :)
Khemraj
Dans quelles circonstances pouvez-vous / devez-vous définir enableJetifier sur false?
Mark
1
@Mark enableJetifier=falseest la valeur par défaut. C'est faux quand vous ne le définissez pas. Cela signifie qu'aucune de vos bibliothèques ne sera réécrite sur AndroidX.
Khemraj
4
La migration du studio Android fonctionne mal. j'ai dû corriger manuellement des centaines de fichiers ... je passe plus de temps à corriger le code en raison des modifications des outils Google qu'à programmer réellement le code qui compte ... soupir
LearningPath
1
Il est maintenant (3.3) appeléMigrate to AndroidX
Dale
32

Sur la base de la documentation :

androidx est une nouvelle structure de package pour rendre plus clair les packages fournis avec le système d'exploitation Android et ceux qui sont fournis avec l'APK de votre application. À l'avenir, la hiérarchie des packages android. * Sera réservée aux packages Android livrés avec le système d'exploitation; d'autres packages seront publiés 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 concernant les mappages d'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 de SDK minimal pris en charge est 14, la nouvelle dénomination permet de comprendre clairement la division entre les API fournies avec la plate-forme et les bibliothèques pour les développeurs d'applications qui sont utilisées. sur différentes versions d'Android. Vous pouvez vous référer à l'annonce officielle pour plus de détails.

Sagar
la source
22

AndroidX est le projet open-source que l'équipe Android utilise pour développer, tester, empaqueter, versions et versions de librairies dans Jetpack .

AndroidX est une amélioration majeure de la bibliothèque de support Android d' origine . Comme la bibliothèque de support, AndroidX est livré séparément du système d'exploitation Android et offre une compatibilité descendante entre les versions d'Android. AndroidX remplace entièrement la bibliothèque de support en fournissant la parité des fonctionnalités et de nouvelles bibliothèques.

AndroidX comprend les fonctionnalités suivantes:

  • Tous les packages dans AndroidX vivent 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 et de la génération des artefacts vers les nouvelles, consultez la page Refactorisation de packages.

  • Contrairement à la bibliothèque de support, les packages AndroidX sont gérés et mis à jour séparément. Les packages androidx utilisent strictement à Semantic Versioningpartir de la version 1.0.0. Vous pouvez mettre à jour les bibliothèques AndroidX dans votre projet indépendamment.

  • Tous les nouveaux développements de la bibliothèque de support auront lieu dans la bibliothèque AndroidX. Cela comprend la maintenance des artefacts de la bibliothèque de support d'origine et l'introduction de nouveaux composants Jetpack.

Utiliser AndroidX

Voir Migration vers AndroidX pour savoir comment migrer un projet existant.

Si vous souhaitez utiliser AndroidX dans un nouveau projet, vous devez définir le SDK de compilation sur Android 9.0 (API niveau 28) ou supérieur et définir les deux indicateurs de plug-in Android Gradle suivants sur true dans votre gradle.propertiesfichier.

  • 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. Le drapeau est faux par défaut s'il n'est pas spécifié.

  • android.enableJetifier: Lorsqu'il est défini sur true, le plug-in Android migre automatiquement les bibliothèques tierces existantes pour utiliser AndroidX en réécrivant leurs fichiers binaires. Le drapeau est faux par défaut s'il n'est pas spécifié.

Pour les mappages d'artefacts, voir ceci

Basi
la source
14

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

Aujourd'hui, beaucoup considèrent la bibliothèque d'assistance comme une partie essentielle du développement d'applications Android, au point qu'elle est utilisée par 99% des applications du Google Play Store. Cependant, à mesure que la bibliothèque de support s'est développée, des incohérences se sont glissées autour de la convention de dénomination de la bibliothèque.

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

Pour dissiper cette confusion, Google refactorise actuellement la bibliothèque d'assistance dans une nouvelle bibliothèque d'extensions Android. structure de package de (AndroidX). AndroidX proposera des noms de package simplifiés, ainsi que des identifiants de groupe et des artifactIds Maven qui reflètent mieux le contenu de chaque package et ses niveaux d'API pris en charge.

Avec la convention de dénomination actuelle, il n'est pas clair non plus quels packages sont fournis avec le système d'exploitation Android et lesquels sont fournis avec l'APK de votre application (Kit de package Android) . Pour dissiper cette confusion, toutes les bibliothèques dégroupées seront déplacées vers l'espace de noms androidx. * D'AndroidX, tandis que la hiérarchie des packages android. * Sera réservée aux packages livrés avec le système d'exploitation Android .

onmyway133
la source
12

Quelques ajouts de mon côté à toutes les réponses disponibles

Besoin d'AndroidX

  1. Comme dit dans une réponse étonnante de @KhemRaj,

Avec la convention de dénomination actuelle, il n'est pas clair quels packages sont fournis avec le système d'exploitation Android et lesquels sont fournis avec l' APK de votre application ( Kit de package Android ). Pour éclaircir cette confusion, toutes les bibliothèques dégroupées seront déplacés vers AndroidX « s androidx. * Espace de noms, alors que la hiérarchie de package android. * Sera réservé pour les paquets livrés avec le système d'exploitation Android.

  1. A part ça,

    Initialement, le nom de chaque package indiquait le niveau d'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é l' API minimum à 14 , donc aujourd'hui de nombreux noms de packages n'ont rien à voir avec le niveau d'API minimum pris en charge. Lorsque support-v4 et les packages support-v7 ont tous les deux une API minimale de 14, il est facile de comprendre pourquoi les gens sont confus! Donc maintenant avec AndroidX, il n'y a aucune dépendance au niveau de l'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 d'avoir à modifier chaque dépendance à la fois. Ces messages frustrants « Toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version » devraient devenir une chose du passé!

Abhishek Kumar
la source
7

J'ai découvert AndroidX grâce à cette vidéo Android Dev Summit . Le résumé est -

  1. Plus de bibliothèque de support: la bibliothèque de support Android ne sera jamais gérée par Google dans l'espace de noms de la bibliothèque de support. Donc, si vous voulez trouver des correctifs d'un bug dans la bibliothèque de support, vous devez migrer votre projet dans AndroidX
  2. Meilleure gestion des packages: pour un contrôle de version standardisé et indépendant, car le contrôle de version de la bibliothèque de support précédente était trop déroutant. Cela vous libérera de la douleur du message «Toutes les bibliothèques com.android.support doivent utiliser exactement la même spécification de version» .
  3. D'autres bibliothèques God ont migré vers AndroidX : les services Google Play, Firebase, Mockito 2, etc. sont migrés vers AndroidX.
  4. De nouvelles bibliothèques seront publiées en utilisant l'artefact AndroidX: toutes les bibliothèques seront dans l'espace de noms AndroidX comme Android Jetpack
Gk Mohammad Emon
la source
4

C'est la même chose que les versions de support AppCompat, mais il a moins de dégâts des versions v4 et v7, il est donc beaucoup plus utile d'utiliser les différents composants des éléments XML Android.

raj kavadia
la source
4

androidxremplacera support libraryaprès 28.0.0. Vous devez migrer votre projet pour l'utiliser. androidxutilise Semantic Versioning. L'utilisation AndroidXne sera pas confondue avec la version présentée dans le nom de la bibliothèque et le nom du package. La vie devient plus facile

[AndroidX et compatibilité de support]

yoAlex5
la source
3

AndroidX est le projet open source que l'équipe Android utilise pour développer, tester, empaqueter, versions et versions de librairies dans Jetpack.

Après des heures de difficultés, je l'ai résolu en incluant les éléments suivants dans app / build.gradle:

android {
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Mettez ces drapeaux dans votre gradle.properties

android.enableJetifier=true
android.useAndroidX=true

Changes in gradle:

implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'com.google.android.material:material:1.1.0-alpha04'

Lors de la migration sur Android studio, le fichier app / gradle est automatiquement mis à jour avec les implémentations de la bibliothèque de correction de la bibliothèque standard

Reportez-vous à: https://developer.android.com/jetpack/androidx/migrate

Kanwarpreet Singh
la source
0

Android propose deux ensembles de bibliothèques différents. L'un s'appelle la bibliothèque de support Android et l'autre s'appelle AndroidX. La sélection de "Utiliser les artefacts Android. *" Indique que nous voulons utiliser AndroidX.

Patrick Cyubahiro
la source