web-dev-qa-db-fra.com

Puis-je utiliser une bibliothèque utilisant le support Android avec des projets Androidx.

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"
    }
49
Hitesh-1

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:

  • vous devez utiliser au moins 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

65
Christopher

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: -

enter image description here

Après avoir cliqué sur Migrer vers AndroidX .

Il vous demandera confirmation et sauvegarde pour votre projet.

enter image description here

Et dernière étape, il vous demandera de faire un refactor.

enter image description here

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
26
sushildlh

Vous n'avez pas à vous inquiéter

Activez simplement Jetifier dans votre projet.

  • Mettez à jour Android Studio vers 3.2.0 ou plus récent.
  • 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).

10
Khemraj

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

1
andy mubalama