从RxAndroid 1.x迁移到2.x(包括RxJava)

从RxAndroid 1.x迁移到2.x(包括RxJava),android,rx-java,rx-android,Android,Rx Java,Rx Android,我有一个运行RxAndroid 1.x(everythings works)的项目。 我正在尝试迁移到2.x版本 我的gradle文件: dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:design:24.2.1' compil

我有一个运行RxAndroid 1.x(everythings works)的项目。 我正在尝试迁移到2.x版本

我的gradle文件:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:24.2.1'
    compile 'com.android.support:design:24.2.1'
    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.squareup.okhttp3:okhttp:3.4.1'
    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'org.apache.commons:commons-lang3:3.4'
    compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
        transitive = true;
    }

    //compile 'io.reactivex:rxandroid:1.2.1'
    //compile 'io.reactivex:rxjava:1.2.1'
    compile 'com.jakewharton.rxbinding:rxbinding:0.4.0'
    compile 'com.jakewharton.rxbinding:rxbinding-support-v4:0.4.0'

    compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
    compile 'io.reactivex.rxjava2:rxjava:2.0.0'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.0-RC1'
}
我有一个错误:

Error:Execution failed for task ':app:transformResourcesWithMergeJavaResForDebug'.
> com.android.build.api.transform.TransformException: com.android.builder.packaging.DuplicateFileException: Duplicate files copied in APK META-INF/rxjava.properties
    File1: /Users/agustin/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.0.0/5151c737c01616c372c3d00ab145868ede10e826/rxjava-2.0.0.jar
    File2: /Users/agustin/.gradle/caches/modules-2/files-2.1/io.reactivex/rxjava/1.1.0/748f0546d5c3c27f1aef07270ffea0c45f0c42a4/rxjava-1.1.0.jar
为什么要添加RXJava1.1.0

我可以排除rxjava.properties,但我想了解错误。我已清理项目并使缓存无效,但错误仍然存在

请看图片:


谢谢

您可以通过在项目根目录下运行命令
/gradlew:app:dependencies
,找到哪些库可能包含RxJava 1.1.0,其中app是包含这些依赖项的模块的名称


在你的情况下,我建议有问题的项目是:
com.jakewharton.rxbinding:rxbinding:0.4.0

只是想跟进这个问题的解决方案。RxBinding 1.0.0已经发布,从现在开始,它应该与RxJava2兼容,但是它仍然导入了RxJava的旧版本,这导致了与此问题相同的问题。为了解决这个问题,只需在android下的gradle构建脚本中添加以下内容

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

要解决此问题,现在可以将RxBinding和改装适配器的版本更新为2

compile 'com.jakewharton.rxbinding2:rxbinding:2.0.0'
compile 'com.jakewharton.rxbinding2:rxbinding-support-v4:2.0.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.2.0'

你是对的。似乎RxBinding与RxJava2还不兼容。谢谢