J'utilise rxjava et rx volley sur mon Android. Lorsque j'essaye de l'exécuter, j'obtiens cette erreur
Execution failed for task ':testapp:transformResourcesWithMergeJavaResForDebug'.
> com.Android.build.api.transform.TransformException: com.Android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
File1: C:\Users\Daniel\.gradle\caches\modules-2\files-2.1\io.reactivex\rxjava\1.1.0\748f0546d5c3c27f1aef07270ffea0c45f0c42a4\rxjava-1.1.0.jar
File2: C:\Users\Daniel\.gradle\caches\modules-2\files-2.1\io.reactivex.rxjava2\rxjava\2.0.3\d2f725668bd22e21170381b23f8fbdf72c69d886\rxjava-2.0.3.jar
J'ai un fichier exclude.gradle comme celui-ci
Android {
packagingOptions {
exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/rxjava.properties'
exclude 'META-INF/rxjava.PROPERTIES'
exclude 'META-INF/RXJAVA.properties'
exclude 'META-INF/RXJAVA.PROPERTIES'
exclude 'META-INF/rxjava'
exclude 'META-INF/RXJAVA'
}
lintOptions {
abortOnError false
}
}
Comment puis-je résoudre ce problème?
J'ai eu le même problème. La façon dont je l'ai corrigé ajoute le packagingOptions
dans le gradle de l'application comme décrit dans fichier dupliqué rxjava.properties
Android {
defaultConfig {
}
buildTypes {
}
packagingOptions{
exclude 'META-INF/rxjava.properties'
}
}
J'ai eu le même problème.
Dans mon cas, j'utilise Retrofit2
Mais je suppose que le problème vient du rx libraries
C'est la build.gradle (module:app)
que j'utilise et qui fonctionne dans mon cas.
compile 'com.squareup.retrofit2:retrofit:2.0.2'
compile 'com.squareup.retrofit2:converter-gson:2.0.2'
compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
compile 'io.reactivex:rxandroid:1.1.0' //<-use this
compile 'io.reactivex:rxjava:1.1.3' //<-use this
compile 'com.squareup.okhttp3:okhttp:3.1.2'
compile 'com.squareup.okhttp3:logging-interceptor:3.0.1'
Quoi qu'il en soit, il y a une meilleure solution comme vous pouvez le voir en haut
Si vous rencontrez ce problème en 2019 et au-dessus, c'est probablement parce que vous utilisez le déconseillé RxJava 2 CallAdapter.Factory ie
com.jakewharton.retrofit: retrofit2-rxjava2-adapter
vous devrez supprimer cette dépendance et l'ajouter
implémentation 'com.squareup.retrofit2: adapter-rxjava2: latest.version'
veuillez obtenir la dernière version de ici
J'ai également le même problème mais j'ai facilement supprimé les "commentaires" dupliqués de toutes les dépendances liées à Rxjava qu'il n'utilise pas dans mon code.
//RxJava removes or comment duplicated and not used dependencies.
// implementation 'com.squareup.retrofit2:adapter-rxjava:2.4.0'
// implementation 'io.reactivex.rxjava2:rxandroid:2.0.2'
// implementation 'io.reactivex.rxjava2:rxjava:2.1.13'
J'ai eu ce problème aujourd'hui et j'ai résolu ce problème
compile 'com.squareup.retrofit2:retrofit:2.2.0'
compile 'com.squareup.retrofit2:converter-gson:2.2.0'
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
//RxJava dependencies
compile 'io.reactivex.rxjava2:rxandroid:2.0.0'
compile 'io.reactivex.rxjava2:rxjava:2.0.2'
compile 'org.reactivestreams:reactive-streams:1.0.0'
J'ai également ce problème, j'ai également utilisé la même méthode que vous, mais parce que j'ai deux modules, je ne le change que dans le module qui dépend de Rxjava, enfin je l'ai corrigé en ajoutant les packaginOptions dans l'application gradle
packagingOptions {
exclude 'META-INF/rxjava.properties'
}
J'ai rencontré le même problème et l'ai résolu en mettant le code ci-dessous dans le fichier app/build.gradle. Veuillez noter que vous devez mettre '*' à la fin du chemin pour exclure tous les fichiers à l'intérieur du dossier. Vous devrez modifier le chemin des fichiers à exclure dans le code ci-dessous en fonction de la description de l'erreur.
compileSdkVersion 25
buildToolsVersion "24.0.3"
packagingOptions {
exclude 'com/google/appengine/repackaged/org/Apache/commons/codec/language/bm/*'
exclude 'com/google/appengine/repackaged/org/codehaus/jackson/impl/*'
exclude 'com/google/appengine/repackaged/org/Apache/commons/codec/language/*'
}