Usando RxJava 2 y Retrofit 2, problema de versión del adaptador
He agregado un nuevo módulo de biblioteca al módulo de aplicación existente en Android Studio. La principal diferencia fue agregar RxJava 2 y Retrofit 2. Después de actualizar build.gradle del nuevo módulo, comencé a recibir el siguiente error:
Error: Error en la ejecución de la tarea ': aplicación: transformResourcesWithMergeJavaResForBetaNewApiDebug'. com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: archivos duplicados copiados en APK META-INF / rxjava.properties File1: C: \ Users \ Gaket.gradle \ caches \ modules-2 \ files-2.1 \ io.reactivex.rxjava2 \ rxjava \ 2.0.2 \ cfccdd18cdfbe7b4773d42c9f3512eeafbe5cbf9 \ rxjava-2.0.2.jar File2: C: \ Users \ Gaket.gradle \ caches \ modules-2 \ files-2.1 \ io.reactivex \ rxjava \ 1.1.5 \ ece7b5d0870e66d8226dab6dcf47a2b12afff061 \ rxjava-1.1.5.jar
Veo que hay algún problema con RxJava (quiero probar RxJava 2 y aquí veo tanto RxJava 1 como RxJava 2). El problema surge justo después de agregar todas las dependencias, no utilizamosRxJava
En nuestra aplicación principal.
Actualizar: Como mencioné a continuación, verifiqué tres temas (puede verlo a continuación). Este problema:posible duplicado es similar al que ya menciono a continuación:éste. Ambos tienen soluciones alternativas que no tienen en cuenta el problema real que subrayé en mi respuesta. Y ella respuesta es "No hay un adaptador listo para producción de Retrofit 2 a RxJava 2 en este momento" (todos los detalles se describen en la respuesta a continuación).
Revisé varios temas:primero es una solución concreta para un problema concreto,segundo habla sobrerxbindings
, pero no los uso, algunos otros tampoco han resuelto mi problema ni parecen soluciones totaleséste. Intenté buscar en Google "rxjava 2 y actualizar 2" pero no he encontrado una solución.
Aquí está elbuild.gradle
de biblioteca:
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile "com.android.support:appcompat-v7:$supportLibraryVersion"
compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
compile 'io.reactivex.rxjava2:rxjava:2.0.2'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'com.squareup.okhttp3:okhttp:3.5.0'
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
compile "com.makeramen:roundedimageview:1.3.0"
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
provided 'javax.annotation:jsr250-api:1.0'
compile 'com.jakewharton:butterknife:8.4.0'
testCompile 'junit:junit:4.12'
}
La pregunta es:
¿Por qué ocurre este problema y cuál es la forma correcta de manejarlo?