/ / Können RxJava und RxJava 2 im selben Android-Projekt gleichzeitig vorhanden sein? [duplizieren] - Java, Android, RX-Java, RX-Android, RX-Java2

Können RxJava und RxJava 2 im selben Android-Projekt existieren? [Duplizieren] - Java, Android, RX-Java, RX-Android, RX-Java2

Ich habe ein Projekt, das RxJava 1 verwendet. Jetzt erstelle ich eine Modulkomponente und denke darüber nach, mit RxJava 2 zu beginnen.

Wenn Sie eine Gradle-Synchronisierung durchführen, ist alles in Ordnung. Beim Kompilieren habe ich jedoch den folgenden Fehler erhalten

Fehler: Ausführung für Task fehlgeschlagen ": App:transformResourcesWithMergeJavaResForProductionDebug ". com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: In APK META-INF / rxjava.properties kopierte Dateien Datei1: /Users/user.name/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.2.5/b423532b5a3c949cbb799468f83bf566032fe98d/rxjava-1.2.5.jar Datei2: /Users/user.name/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.0.1/57f850a6b317e5582f1dbaff10a9e7d7e1fcdcfb/rxjava-2.0.1.jar

Gibt es überhaupt eine Möglichkeit, sie in einem einzigen Projekt (aber einer anderen Bibliothek) nebeneinander zu haben, oder ist dies definitiv ein Nein-Nein?

auf einen habe ich

compile "io.reactivex:rxjava:1.2.5"
compile "io.reactivex:rxandroid:1.2.1"

auf der anderen habe ich

compile "io.reactivex.rxjava2:rxandroid:2.0.1"

Antworten:

1 für die Antwort № 1

Also in Bezug auf diese Dokumentation Sie können theoretisch nebeneinander existieren, da sich die Klassen in verschiedenen Paketen befinden.

Die Fehlermeldung, die Sie erhalten, wird wahrscheinlich nur von der Verpackung des Android in ein Apk verursacht, das versucht, beide Bibliotheken zu importieren und eine Datei gefunden hat, die in beiden Bibliotheken vorhanden ist (siehe dieses Problem).

Sie können diese Datei ignorieren, indem Sie Folgendes in den "android" -Block Ihres Browsers einfügen build.gradle:

android {
packagingOptions {
exclude "META-INF/rxjava.properties"
}
...
}

Stellen Sie jedoch sicher, dass Sie Ihr Projekt nach dieser Änderung ordnungsgemäß testen.


0 für die Antwort № 2

Sie müssen einige Empfangseigenschaften ausschließen. Füge das hinzu:

android {
...
packagingOptions {
exclude "META-INF/rxjava.properties"
}
}

Zu deiner App gradle bauen