2017-02-01 5 views
11

Я использую rxjava и rxvolley на моем андроиде. Когда я пытаюсь запустить его, я получаю эту ошибкуКак разрешать повторяющиеся файлы, скопированные в APK META-INF/rxjava.properties

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 

У меня есть exclude.gradle файл как этот

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 
} 
} 

Как я могу исправить эту проблему?

ответ

4

У меня была та же проблема. Я думаю, что это ошибка с совместимостью библиотек.
В моем случае я использую Retrofit2, но я предполагаю, что проблема с rx libraries

Это build.gradle (module:app) я использую и в моем случае работает.

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' 
+3

Нет необходимости использовать @ раствор Хулиана Мартинеса вместо так как он сам по себе JakeWharton – Tobbbe

+1

ок Ниццы рекомендуется знать, что – JoCuTo

+0

Если вы читаете это, прокрутите вниз, решение @Julian лучше – TSR

0

Я столкнулся с той же проблемой и исправил ее, поставив ниже код в файле app/build.gradle. Обратите внимание, что вы должны поместить «*» в конец пути, чтобы исключить все файлы внутри папки. Вам нужно будет изменить путь к файлам, которые будут исключены в приведенном ниже коде, на основе описания ошибки.

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

Я имел этот вопрос сегодня и устранили эту проблему

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' 
54

У меня была такая же проблема. Образом я установил его добавление packaginOptions в приложении Gradle, как описан в Duplicated file rxjava.properties

android { 

    defaultConfig { 
    } 
    buildTypes { 
    } 
    packagingOptions{ 
     exclude 'META-INF/rxjava.properties' 
    } 
} 
+0

Это должен быть правильный ответ. –

0

У меня тоже есть эта проблема, я также использовал тот же метод, как вы, но потому что я хав два модуля, я только чанг его в модуль, который зависимости Rxjava, наконец II фиксируется она добавление packaginOptions в приложении Gradle

packagingOptions { 
    exclude 'META-INF/rxjava.properties' 
}