/ / RxJava et RxJava 2 peuvent-ils coexister dans le même projet Android? [dupliquer] - java, android, rx-java, rx-android, rx-java2

RxJava et RxJava 2 peuvent-ils coexister dans le même projet Android? [dupliquer] - java, android, rx-java, rx-android, rx-java2

J’ai un projet qui utilise RxJava 1. Maintenant, je construis un composant de module et je songe à commencer avec RxJava 2.

Quand effectuer la synchro gradle, tout va bien Cependant lors de la compilation j'ai eu l'erreur suivante

Erreur: L'exécution a échoué pour la tâche ": app:transformResourcesWithMergeJavaResForProductionDebug ". com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: fichiers en double copiés dans l'APK META-INF / rxjava.properties Fichier1: /Utilisateurs/utilisateur.nom/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.2.5/b423532b5a3c949cbb799468f83bf566032fe98d/rxjava-1.2.5.jar Fichier 2: /Users/user.nom/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.0.1/57f850a6b317e5582f1dbaff10a9e7d7e1fcdcfcdbf.2d.jpg-2.1.jar

Y a-t-il un moyen de les faire coexister dans un seul projet (mais une bibliothèque différente), ou c'est vraiment un non-non?

c'est à dire sur un, j'ai

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

sur l'autre j'ai

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

Réponses:

1 pour la réponse № 1

Donc en ce qui concerne cette documentation ils peuvent coexister théoriquement, car les classes sont situées dans des packages différents.

Le message d’erreur auquel vous faites face est probablement dû à l’emballage d’Android dans un apk, qui tente d’importer les deux bibliothèques et trouve un fichier existant dans les deux bibliothèques (consultez la rubrique ce problème).

Vous pouvez ignorer ce fichier en ajoutant ce qui suit dans le bloc "Android" de votre build.gradle:

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

Cependant, veillez à bien tester votre projet après ce changement.


0 pour la réponse № 2

Vous devez exclure certaines propriétés rx. Ajoute ça:

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

Pour votre niveau de construction d'application