android - rxjava2 - Cómo resolver archivos duplicados copiados en APK META-INF/rxjava.properties
rxjava para android (5)
Estoy usando rxjava y rxvolley en mi aplicación de Android. Cuando intento ejecutarlo me sale este error.
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
Tengo un archivo exclude.gradle como este
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
}
}
¿Como puedo solucionar este problema?
Encontré el mismo problema y lo arreglé poniendo el código a continuación en el archivo app / build.gradle. Tenga en cuenta que debe colocar ''*'' al final de la ruta para excluir todos los archivos dentro de la carpeta. Tendrá que cambiar la ruta de los archivos que se excluirán en el siguiente código según la descripción del error.
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/*''
}
También tengo este problema, también usé el mismo método que tú, pero como tengo dos módulos, solo lo modifiqué en el módulo que dependía de Rxjava.
packagingOptions {
exclude ''META-INF/rxjava.properties''
}
Tuve el mismo problema.
En mi caso, estoy usando Retrofit2
pero asumo que el problema es con las rx libraries
Este es el build.gradle (module:app)
que estoy usando y en mi caso funciona.
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''
De todos modos hay una solución mejor como se puede ver en la parte superior.
Tuve este problema hoy y solucioné este problema
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''
Yo tuve el mismo problema. La forma en que lo arreglé es agregando el packagingOptions
en la aplicación gradle como se describe en el archivo duplicado rxjava.properties
android {
defaultConfig {
}
buildTypes {
}
packagingOptions{
exclude ''META-INF/rxjava.properties''
}
}