Ich versuche, ViewModel und LiveData zu einer Kotlin-App hinzuzufügen. Ich habe die folgenden Abhängigkeiten zum build.gradle
meines Moduls hinzugefügt:
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"
Ich habe folgende Fehlermeldung erhalten:
Die Android-Abhängigkeit 'Android.Arch.lifecycle: Runtime' hat unterschiedliche Versionen für den Klassenpfad compile (1.0.0) und Runtime (1.1.1). Sie sollten dieselbe Version manuell über DependencyResolution einstellen
Das Entfernen der ersten Zeile (extensions
) behebt das Problem und zeigt an, dass der Fehler von dort kommt, aber ich kann nicht herausfinden, warum.
Anscheinend verursachte support-v4
den Konflikt. Bei dieser Frage funktionierte die Gradle-Abhängigkeitsaufgabe nicht ordnungsgemäß, aber für alle anderen Personen, die auf dieses Problem stoßen:
./gradlew :app:dependencies
zeigt die von Ihren Abhängigkeiten verwendeten Unterabhängigkeiten an. Durchsuchen Sie die Ausgabe dieses Befehls (ändert app
für Ihren Modulnamen) nach der Abhängigkeit, die den Konflikt verursacht.
Wie @RedBassett erwähnt, sind Support-Bibliotheken von diesem leichtgewichtigen Import (Laufzeitbibliothek) abhängig, wie unter Dokumentation für Android-Entwickler erläutert.
Dies ist Android.Arch.lifecycle: Laufzeit: 1.0.0 verbreitet sich im Abhängigkeitsbaum als Ergebnis eines internen (transitiven) Imports von APIs. In meinem Fall musste ich daher nur die Erweiterungsbibliothek als "API" anstelle von "" hinzufügen Implementierung ", so dass es seine Version auf die höchste (1.1.1) überschreibt.
Abschließend ändern
implementation "Android.Arch.lifecycle:extensions:1.1.1"
zu
api "Android.Arch.lifecycle:extensions:1.1.1"
In Ihrer build.gradle
-Hauptdatei
allprojects {
...
configurations {
all {
resolutionStrategy {
force "Android.Arch.lifecycle:runtime:1.1.1"
}
}
}
}
Dadurch wird die Version 1.1.1
erzwungen.
@RedBassett hat recht. Ich hatte jedoch immer noch ein Problem mit dem Ausschluss Android.Arch.lifecycle
abhängiger Unterabhängigkeiten.
In meinem Fall wurde der Konflikt in com.Android.support:appcompat-v7:27.1.1
verursacht.
So sieht meine Abhängigkeit nach dem Ausschluss aus.
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"
Außerdem müssen Sie diesen Ausschluss in jedem importierten Modul hinzufügen.
Ich habe nach allen Abhängigkeiten mit ./gradlew :app:dependencies
Gesucht, wie @RedBassett erwähnt. Ich habe festgestellt, dass die inkompatible Version von Android.Arch.core:runtime
, Über die sich Gradle beschwert hat, aus meiner Version von com.Android.support:appcompat-v7
Stammt. Ich habe diese Version auf den neuesten Stand gebracht und alles hat funktioniert.