Je sais, dépendance d'Androidx et du support provoquant une erreur multidex Nous ne pouvons pas utiliser le support d'Androidx et Android en même temps. Donc je migre totalement vers androidx. mais une de mes bibliothèques de dépendance utilisée Android prend en charge "lottie".
Que pouvons-nous faire dans la situation ci-dessus? Dois-je retirer 'lottie' de mon projet?.
ci-dessous est mon grade
defaultConfig {
minSdkVersion 19
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true
multiDexEnabled true
}
ext{
lottieVersion = "2.5.4"
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
def androidx = "1.0.0-rc01"
api "androidx.constraintlayout:constraintlayout:1.1.2"
api "androidx.appcompat:appcompat:$androidx"
api "androidx.recyclerview:recyclerview:$androidx"
api "androidx.cardview:cardview:$androidx"
api "androidx.core:core-ktx:$androidx"
api "com.google.Android.material:material:1.0.0-rc01"
implementation "com.google.code.gson:gson:2.8.5"
implementation "androidx.multidex:multidex:2.0.0"
implementation "com.airbnb.Android:lottie:$lottieVersion"
}
Vous pouvez activer Jetifier
sur votre projet, qui échangera essentiellement les dépendances Android Support Library
dans vos dépendances de projet avec celles AndroidX
-. (par exemple, vos dépendances Lottie seront modifiées de Support à AnroidX)
De la Android Documentation de Studio ( https://developer.Android.com/studio/preview/features/ ):
Le plug-in Android Gradle fournit les indicateurs globaux suivants que vous pouvez définir dans votre fichier gradle.properties:
- Android.useAndroidX: lorsqu'il est défini sur true, cet indicateur indique que vous souhaitez commencer à utiliser AndroidX à partir de maintenant. Si l'indicateur est absent, Android Studio se comporte comme si l'indicateur était défini sur false.
- Android.enableJetifier: lorsqu'il est défini sur true, cet indicateur indique que vous souhaitez que le support des outils (à partir du plug-in Android Gradle) convertisse automatiquement les bibliothèques tierces existantes comme si elles avaient été écrites pour AndroidX. Si l'indicateur est absent, Android Studio se comporte comme si l'indicateur était défini sur false.
Condition préalable pour Jetifier:
Android Studio 3.2
Pour activer le jetifier, ajoutez ces deux lignes à votre fichier gradle.properties
:
Android.useAndroidX=true
Android.enableJetifier=true
Enfin, veuillez consulter les notes de publication d’AndroidX, car jetifier
a encore quelques problèmes avec certaines bibliothèques (par exemple, Dagger Android): https://developer.Android.com/topic/libraries/support-library/androidx-rn
Ajouter manuellement Android.useAndroidX=true
et Android.enableJetifier=true
me causant des difficultés. Parce que c'est jeter une erreur ou Suggestion: add 'tools:replace="Android:appComponentFactory"' to <application>
Pour activer Jet-fire dans le projet, une option est disponible dans Android Studio.
Sélectionnez votre projet ---> Clic droit
app ----> Refactor ----> Migrer vers AndroidX
Montré dans l'image ci-dessous: -
Après avoir cliqué sur Migrer vers AndroidX .
Il vous demandera confirmation et sauvegarde pour votre projet.
Et dernière étape, il vous demandera de faire un refactor.
Après avoir refactorisé, vérifiez que vos propriétés gradle. ont Android.useAndroidX=true
et Android.enableJetifier=true
. Si ce n'est pas le cas, ajoutez ces deux lignes à votre fichier gradle.properties:
Android.useAndroidX=true
Android.enableJetifier=true
Vous n'avez pas à vous inquiéter
Activez simplement Jetifier dans votre projet.
Ouvrez gradle.properties
et ajoutez ci-dessous deux lignes.
Android.enableJetifier=true
Android.useAndroidX=true
Il convertira toutes les bibliothèques de support de votre dépendance en AndroidX au moment de l'exécution (vous pouvez avoir des erreurs de compilation, mais l'application s'exécutera).
J'ai utilisé ces deux lignes de code dans la balise d'application dans le fichier manifest.xml et cela a fonctionné.
tools:replace="Android:appComponentFactory" Android:appComponentFactory="whateverString"
Source: https://github.com/Android/android-ktx/issues/576#issuecomment-437145192