web-dev-qa-db-fra.com

Comment résoudre les fichiers en double copiés dans APK META-INF / rxjava.properties

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?

23
Dani Garcia

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'
    }
}
83
Julián Martínez

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

5
JoCuTo

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

0
war_Hero

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'
0
mahmoud Zahran

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'
0
fundmarkhua

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'
}
0
Peter Pan

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/*'
    }
0
Deepesh