web-dev-qa-db-fra.com

Dépendances/bibliothèques d'AndroidX

J'ai migré avec succès mon projet vers AndroidX . App fonctionne parfaitement, mais je reçois des erreurs de compilation, car mes dépendances utilisent le support. 

 image1

 image2

Raison de cette erreur

Parce que PhotoView est une classe de dépendance, qui utilise Android.support.v7.widget.AppCompatImageView qui n’est plus disponible dans mon projet. Parce que c'est maintenant androidx.appcompat.widget.AppCompatImageView

Le projet est toujours en cours?

Oui, Android.enableJetifier convertit cette dépendance en AndroidX à l'exécution, mais je veux me débarrasser des erreurs de compilation.

Y a-t-il une solution rapide pour l'instant?

7
Khemraj

J'ai résolu ce problème en supprimant le dossier .idea et en synchronisant à nouveau le projet.

Cela semble un bogue de IDE et non de Jetifier, il ne re-synchronise pas les dépendances après la migration. Jetifier fait bien son travail. Il convertit toutes les bibliothèques de prise en charge des dépendances en androidx au moment de la construction. Voir @this post pour une bonne explication.

1
Khemraj

Si vous dépendez d'une bibliothèque qui référence l'ancienne bibliothèque de support, Android Studio la mettra à jour pour faire référence à androidx via une traduction de dépendance. La traduction de dépendance est automatiquement appliquée par Android Gradle Plugin 3.2.0-alpha14, qui réécrit le bytecode et les ressources des dépendances JAR et AAR (et des dépendances transitives) afin de référencer les nouvelles classes et artefacts fournis par androidx. Nous fournirons également un outil de traduction autonome sous forme de fichier JAR.

Je constate (à l'aide de ./gradlew app: dependencies) que la dépendance de conception de rxbinding est mise à jour vers la nouvelle dépendance com.google.Android.material. Si vous passez com.google.Android.material.snackbar.Snackbar à une fonction de bibliothèque faisant référence à Android.support.design.widget.Snackbar, Android Studio affiche une erreur de compilation, mais la compilation et l'exécution de l'application fonctionnent. Je suppose qu'AS ne peut pas encore gérer ces changements.

Il semble y avoir des problèmes de mise en cache, supprimer .idea/libraries et effectuer une synchronisation Gradle fait disparaître les erreurs.

6
Kousic

Mon correctif était de convertir la bibliothèque avec l'erreur de compilation à AndroidX et de soumettre une demande d'extraction à la bibliothèque. 

1
thejuki