J'essaie d'ajouter ViewModel et LiveData à une application Kotlin. J'ai les dépendances suivantes ajoutées au build.gradle
de mon module:
implementation "Android.Arch.lifecycle:extensions:1.1.1"
kapt "Android.Arch.lifecycle:compiler:1.1.1"
testImplementation "Android.Arch.core:core-testing:1.1.1"
Je reçois l'erreur suivante:
Dépendance Android 'Android.Arch.lifecycle: runtime' a une version différente pour le chemin de classe compile (1.0.0) et runtime (1.1.1). Vous devez définir manuellement la même version via DependencyResolution
La suppression de la première ligne (extensions
) résout le problème, indiquant que l'erreur provient de là, mais je ne peux pas comprendre pourquoi.
Apparemment, support-v4
était à l'origine du conflit. Dans le cas de cette question, la tâche de dépendance de Gradle ne fonctionnait pas correctement, mais pour toute autre personne confrontée à ce problème:
./gradlew :app:dependencies
affichera les sous-dépendances utilisées par vos dépendances. Recherchez dans le résultat de cette commande (en modifiant app
le nom de votre module) pour déterminer la dépendance à l'origine du conflit.
Comme le mentionne @RedBassett, les bibliothèques de support dépendent de cette importation légère (bibliothèque d'exécution), comme expliqué dans Documentation pour les développeurs Android .
Ceci est, Android.Arch.lifecycle: runtime: 1.0.0 s’étend dans l’arbre des dépendances à la suite d’une importation interne (transitive) api. Dans mon cas, je n’ai donc dû inclure la bibliothèque d’extensions que comme "api". "implémentation" pour qu'il écrase sa version au plus haut niveau (1.1.1).
En conclusion, changement
implementation "Android.Arch.lifecycle:extensions:1.1.1"
à
api "Android.Arch.lifecycle:extensions:1.1.1"
Dans votre fichier build.gradle
principal
allprojects {
...
configurations {
all {
resolutionStrategy {
force "Android.Arch.lifecycle:runtime:1.1.1"
}
}
}
}
Ceci appliquera la version 1.1.1
@RedBassett a raison. Cependant, je rencontrais toujours un problème d’exclusion des sous-dépendances liées à Android.Arch.lifecycle
.
Dans mon cas, le conflit a été causé dans com.Android.support:appcompat-v7:27.1.1
.
Voici à quoi ressemble ma dépendance de grade après l'avoir exclue.
implementation ('com.Android.support:appcompat-v7:27.1.1') {
exclude group: 'Android.Arch.lifecycle'
}
api "Android.Arch.lifecycle:runtime:1.1.1"
kapt "Android.Arch.persistence.room:compiler:1.1.1"
En outre, vous devrez ajouter cette exclusion dans chaque module importé.