Usando RxJava 2 e Retrofit 2, problema de versão do adaptador
Adicionei um novo módulo de biblioteca ao módulo de aplicativo existente no Android Studio. A principal diferença foi adicionar o RxJava 2 e o Retrofit 2. Após atualizar o build.gradle do novo módulo, comecei a receber o próximo erro:
Erro: Falha na execução da tarefa ': app: transformResourcesWithMergeJavaResForBetaNewApiDebug'. com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: arquivos duplicados copiados no 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
Vejo que há algum problema com o RxJava (quero experimentar o RxJava 2 e aqui vejo RxJava 1 e RxJava 2). O problema surge logo após adicionar todas as dependências, não usamosRxJava
em nossa aplicação principal.
Atualizar: Como mencionei abaixo, verifiquei três tópicos (você pode vê-lo abaixo). Esse problema:possível duplicado é semelhante ao que eu já mencionei abaixo:este. Ambos têm soluções alternativas que não levam em conta o problema real que sublinhei em minha resposta. E aa resposta é "Não há adaptadores prontos para produção do Retrofit 2 para o RxJava 2 no momento" (detalhes completos descritos na resposta abaixo).
Eu verifiquei vários tópicos:primeiro é uma solução concreta para um problema concreto,segundo fala sobrerxbindings
, mas não os uso, alguns outros também não resolveram meu problema ou parecem soluções alternativaseste. Tentei pesquisar no google "rxjava 2 e retrofit 2", mas não encontrei uma solução.
Aqui está obuild.gradle
da 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'
}
A questão é:
Por que esse problema ocorre e qual é a maneira correta de lidar com isso?