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.
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
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?
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.
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.
Mon correctif était de convertir la bibliothèque avec l'erreur de compilation à AndroidX et de soumettre une demande d'extraction à la bibliothèque.