Problem doppelte Klasse androidx.lifecycle.viewmodel in Modulen gefunden
Lesezeit: 5 Minuten
Martin GG
Ich habe diese Fehler, wenn ich versuche, den Emulator auszuführen
Doppelte Klasse androidx.lifecycle.ViewModelLazy gefunden in den Modulen jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) und lifecycle-viewmodel-2.4.0-runtime (androidx .lifecycle:lifecycle-viewmodel:2.4.0)
Doppelte Klasse androidx.lifecycle.ViewModelProviderKt in den Modulen jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) und lifecycle-viewmodel-2.4.0-runtime (androidx .lifecycle:lifecycle-viewmodel:2.4.0)
Doppelte Klasse androidx.lifecycle.ViewTreeViewModelKt in den Modulen jetified-lifecycle-viewmodel-ktx-2.3.1-runtime (androidx.lifecycle:lifecycle-viewmodel-ktx:2.3.1) und lifecycle-viewmodel-2.4.0-runtime (androidx .lifecycle:lifecycle-viewmodel:2.4.0)
Vielleicht funktioniert diese Lösung für Ihre Antwort auf Stackoverflow
– Vishal-Piep
3. November 2021 um 10:45 Uhr
Ich habe dieses Problem auch mit Gradle Build. Dies ist nicht spezifisch für den Android-Emulator
– Leerstelle
3. November 2021 um 13:06 Uhr
Höchstwahrscheinlich verwendet eine Ihrer Abhängigkeiten die kotlin Version der viewmodel Bibliothek, während Ihr Code die verwendet java Ausführung.
Geben Sie beides an So erzwingen Sie die neueste Version für alle Abhängigkeiten:
Danke, ich habe viewmodel-ktx nicht verwendet, aber es sieht so aus, als ob viewmodel-savedstate es benötigt hätte. Nach dem Hinzufügen von viewmodel-ktx:$lifecycle_version wurde das Problem behoben.
– Leerstelle
4. November 2021 um 10:43 Uhr
Gut, dies soll als richtige Antwort markiert werden. Ich habe auch ein Java-Modul, das Lifecycle-Viewmodel 2.4.0 und Lifecycle-Livedata 2.4.0 verwendet, und der Jetifier generiert widerspenstig 2.3.1 und führt zu Konflikten. Auch wenn ich ktx nicht im Java-Modul verwende, nachdem ich die Abhängigkeit lifecycle-viewmodel-ktx:2.4.0 hinzugefügt habe, ging mein Fehler einen Weg.
– Yinding Wang
7. November 2021 um 12:34 Uhr
Wo füge ich das in mein Projekt ein? Build.gradle?
– Jackie
15. August um 15:47 Uhr
@Jackie Ja, die App build.gradle in dem dependencies Sektion.
– l33t
16. August um 10:56 Uhr
Ich hatte das gleiche Problem und habe es gelöst, indem ich nur eine Codezeile hinzugefügt habe
Vielen Dank. Das hat heute funktioniert. Ich habe keine Ahnung, welche Bibliothek Klassen verwendet. Ich habe Folgendes hinzugefügt, um das Problem zu lösen: implementierung ‘androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.0’
– Hong
1. Juli um 22:21 Uhr
Ich verstehe nicht, warum Leute diese Nachahmerantwort positiv bewerten. Zunächst einmal ist diese Lösung falsch und wird kaputt gehen, wenn die Bibliothek des Drittanbieters aktualisiert wird. Sie sollten angeben beide die Kotlin- und Java-Versionen. Auf diese Weise haben Sie die Kontrolle darüber lifecycle-viewmodel Bibliotheksversion zu verwenden.
– l33t
15. August um 12:11 Uhr
Das funktioniert für mich, also ist es mir egal, ob es sich um eine Nachahmerantwort handelt oder nicht, ich habe sie positiv bewertet. Hat mir Stunden gespart, nachdem ich so viele Strategien zur Auflösung von Abhängigkeiten ausprobiert hatte
– Rafsandschani
20. August um 11:40 Uhr
Alex Rmcf
Ich dachte, dass es besser ist, doppelte Klassen zu eliminieren, als neue hinzuzufügen, also poste ich hier meine Lösung für dieses Problem:
Diese Codezeilen müssen der build.gradle-Datei auf Projektebene hinzugefügt werden – und der Build-Fehler verschwindet zusammen mit dem verschwendeten Speicher (ein bisschen, aber immer noch).
Seltsames und unverständliches Verhalten. Ich habe es bekommen, nachdem ich dem Projekt die Kotlin-Bibliothek hinzugefügt hatte, die später durch eine Version für Java ersetzt wurde. Wenn Sie zum .gradle-Ordner gehen, können Sie es dort finden, aber ich bin mir nicht sicher, ob es eine gute Idee ist, es von dort zu entfernen, da es möglicherweise in anderen Bibliotheken verwendet wird. Seltsamerweise löst Gradle oder AndroidStudio dieses Problem nicht automatisch, da in der Datei build.gradle nur Abhängigkeiten für Java angegeben sind.
Welche “Erinnerung” meinst du? Der PC oder das Android-Gerät? Soweit ich sehen konnte, gibt es keine zusätzliche Aufblähung in der resultierenden APK (könnte ein Ergebnis von R8).
– l33t
29. Dezember 2021 um 13:44 Uhr
Ich spreche von resultierenden apk
– Alex Rmcf
29. Dezember 2021 um 18:42 Uhr
@ l33t genau – 12 870 436 Bytes gegenüber 13 102 070 Bytes. Wie ich schon sagte – ein bisschen, aber immerhin
– Alex Rmcf
29. Dezember 2021 um 18:47 Uhr
Ich habe einige Tests durchgeführt. Bei allen Optimierungen (zB Release + minify mit R8) entfernen lifecycle-viewmodel-ktx reduziert die Größe mit weniger als 1kB. Höchstwahrscheinlich R8 ist in der Lage, 99 % der Blähungen loszuwerden, sodass ein oder zwei zusätzliche Klassen übrig bleiben (classes.dex unterscheidet sich). Ihre Lösung scheint zu funktionieren, aber warum entfernt der Minifier diese letzten Klassen nicht? Könnte ein kleiner Fehler sein R8 oder vielleicht gibt es eine echte Abhängigkeit von Drittanbietern, die irgendwann diese Kotlin-Klassen benötigt. Ihre Zahlen weisen auf ein anderes Problem hin.
– l33t
6. Januar um 12:27 Uhr
@ l33t Ich habe es nicht ganz richtig erklärt. Um die genannten Zahlen zu erhalten, habe ich mehrere Bibliotheken ausgeschlossen, die ich explizit verwendet habe, die aber auch als Abhängigkeiten in anderen Bibliotheken vorhanden waren (aber beispielsweise mit niedrigeren Versionen). Gruppe ausschließen: „org.json“, Modul: „json“ Gruppe ausschließen: „androidx.lifecycle“, Modul: „lifecycle-viewmodel-ktx“ Gruppe ausschließen: „androidx.lifecycle“, Modul: „lifecycle-viewmodel:2.3. 1′ Gruppe ausschließen: ‘org.apache.commons’, Modul: ‘commons-lang3’ und andere
– Alex Rmcf
6. Januar um 16:10 Uhr
Das Ändern der Viewmodel- und Viewmodel-ktx-Version auf die neueste Version löste das Problem für mich:
Ich habe ‘com.google.android.material:material:1.7.0-alpha03’ aktualisiert und erhalte diesen Fehler. Dann füge ich, wie @kirill vorschlägt, das neueste ktx-Ansichtsmodell hinzu, selbst wenn unser Code vollständig auf Java läuft, funktioniert es wieder.
Es hat für mich funktioniert. Mein Code ist in Kotlin. Nur die Version der Abhängigkeit zu aktualisieren, hat den Job gemacht.
– Rumit Patel
16. August um 10:54 Uhr
KirilP
Es hat mir geholfen, appcompat von 1.5.0 auf 1.4.2 zurückzusetzen, wie in diesem Thread vorgeschlagen: Duplicate class androidx.lifecycle.ViewModelLazy found in modules lifecycle-viewmodel-2.5.0-runtime
Es hat für mich funktioniert. Mein Code ist in Kotlin. Nur die Version der Abhängigkeit zu aktualisieren, hat den Job gemacht.
– Rumit Patel
16. August um 10:54 Uhr
Linh
Nachdem ich eine neue leere Compose-Aktivität erstellt habe, habe ich diesen Fehler erhalten.
Aktualisieren Sie alle Abhängigkeiten auf die neueste Version, um den Fehler zu beheben Duplicate class androidx.lifecycle.ViewModelLazy ...
13957400cookie-checkProblem doppelte Klasse androidx.lifecycle.viewmodel in Modulen gefundenyes
Vielleicht funktioniert diese Lösung für Ihre Antwort auf Stackoverflow
– Vishal-Piep
3. November 2021 um 10:45 Uhr
Ich habe dieses Problem auch mit Gradle Build. Dies ist nicht spezifisch für den Android-Emulator
– Leerstelle
3. November 2021 um 13:06 Uhr